mfc DDA演算法 中點畫線演算法函式

2021-09-23 01:53:24 字數 893 閱讀 1636

//直線的端點座標(x0,y0),(x1,y1)

void cquhongjuanview::draw_line_dda(cdc*& pdc,int x0, int x1, int y0, int y1)

double y=y0;

for(int x=x0;x<=x1;x++)

double x=x0;

for(int y=y0;y<=y1;y++)

}

void cquhongjuanview::draw_line_mid(cdc*& pdc,int x0, int x1, int y0, int y1)

int a,b,d1,d2,d,x,y;

a=y0-y1,b=x1-x0,x=x0,y=y0;

pdc->setpixel(x,y,rgb(255,0,0)); 

//計算斜率

double k;

if(b==0)k=999999;

else k=-a*1.0/b;

if (k>=0 && k<=1)//斜率[0,1]

}else if(k<0 && k>=-1)//斜率[-1,0)

else  

pdc->setpixel(x,y,rgb(255,0,0));  

}  }  

else if (k>1)//斜率(1,+inf)

else  

pdc->setpixel(x,y,rgb(255,0,0));  

}  }elseelse  

pdc->setpixel(x,y,rgb(255,0,0));}}

}

ps:其他相關 圓、橢圓、畫多邊形、多邊形填充,直線裁剪,多邊形裁剪可以來我的部落格裡找 

中點畫線法

中點畫線法 收藏 演算法目的 畫一條直線 演算法思想 判斷兩個畫素點的重點是在直線的下方,上方還是直線上,從而確定該選擇那乙個畫素點。線內 f x,y 0 上方 f x,y 0 下方 f x,y 0 證明 若是畫素點在直線上,則肯定滿足直線方程,則將畫素點 x0,y0 帶入方程得 ax0 by0 c...

中點bresenham演算法畫線

要求 使用中點bresenham演算法繪製任意斜率的直線。可用滑鼠左鍵繪製直線 左鍵按下點為起點,彈起點為終點 新建mfc專案 畫線需要滑鼠響應,所以在view類中新增onlbuttonup和onlbuttondown來進行滑鼠訊息的處理 方法 滑鼠右擊檢視類 如cmymouseview 選擇 ad...

opencv中使用中點畫圓演算法

假設在opencv中有乙個正方形的m m的影象,現在要在這個影象上面畫乙個半徑m的圓。現在假設只能打點的方法來畫,則中點畫圓法是乙個很好的方法。opencv中的影象就是乙個m行m列的矩陣,座標 0,0 代表第0行第0列的點。1 圓的方程與圓的特性 取半徑r m 2,要畫的圓心座標是 r,r 則圓的方...