画直线的算法之DDA算法+代码实现(法一)
生活随笔
收集整理的這篇文章主要介紹了
画直线的算法之DDA算法+代码实现(法一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DDA(數值微分法)基于直線微分方程生成直線。
點xi,yi滿足直線方程yi=kxi+b,
若xi增加一個單位,則下一步點的位置(xi + 1,yi+1)滿足yi+1=k(xi + 1)+ b。
即yi+1=yi+k。
yi同理,不再贅述。
算法基本思想:
選擇平緩的一端(即x2-x1和y2-y1的較大者)作為自變量,每次增加一個單位,計算因變量的值。
具體代碼如下:
void DDA_Line(int x1,int y1,int x2,int y2) {float increx, increy, x, y, length;//變量定義int i;if (abs(x2 - x1) > abs(y2 - y1))//判斷以哪個作增量length = abs(x2 - x1);elselength = abs(y2 - y1);increx = (x2 - x1) / length;//設置增量,一個為1,一個為kincrey = (y2 - y1) / length;x = x1, y = y1;//起點for (i = 1; i <= length; i++) {putpixel(int(x + 0.5), int(y + 0.5), RED);//因為沒有半個像素點,所以需要強制轉換為整型x += increx;//x+增量y += increy;//y+增量} }下面我們進行調用:
int main() {initgraph(640, 480);DDA_Line(0, 0, 640, 480);getchar();closegraph(); }結果如下:
總結
以上是生活随笔為你收集整理的画直线的算法之DDA算法+代码实现(法一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postgres 退出_postgres
- 下一篇: html文本对齐6,HTML对齐文本