//直線的端點座標(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 則圓的方...