日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

光栅图形学-中点画线法

發布時間:2023/12/18 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 光栅图形学-中点画线法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在數學上,理想的直線是沒有寬度的,它是由無數個點構成的集合。對直線進行光柵化時,只能在顯示器所給定的有限個像素組成的矩陣中,確定最佳逼近該直線的一組像素,并且按掃描線排序。

中點畫線法:通過觀察發現,畫直線段的過程中,當前像素點為(Xp,Yp),下一個像素點有兩種可選擇點P1(Xp+1,Yp)或P2(Xp+1,Yp+1)。若M=(Xp+1,Yp+0.5)為P1與P2的中點,Q為理想直線與X=Xp+1垂線的交點,當M在Q的下方時,P2應為下一個像素點,當M在Q的上方時,應取P1為下一點。

運行結果:

實現過程使用MFC實現的。

實現方法:

其中(x0,y0)為起始點,(x1,y1)為終點,color為顏色值。

void CDrawView::MiddleDrawline(int x0,int y0,int x1,int y1,int color) {//中點劃線算法//d>0 中點在直線上方 d<0 中點在直線下方CClientDC dc(this);int a,b,d1,d2,d,x,y;a=y0-y1; b=x1-x0; d=2*a+b; //二倍避免了浮點數的運算d1=2*a; //中點在上面的增量d2=2*(a+b);//中點在下面的增量x=x0; y=y0; dc.SetPixel(x,y,color);while(x<x1){ if(d>0) //中點在上面 取下面的像素d+=d1;else //取上面的像素{d+=d2;y++;}x++;dc.SetPixel(x,y,color); //繪制像素 } }

?

總結

以上是生活随笔為你收集整理的光栅图形学-中点画线法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。