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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

画直线的算法之DDA算法+代码实现(法一)

發(fā)布時(shí)間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 画直线的算法之DDA算法+代码实现(法一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DDA(數(shù)值微分法)基于直線微分方程生成直線。

點(diǎn)xi,yi滿足直線方程yi=kxi+b,

若xi增加一個(gè)單位,則下一步點(diǎn)的位置(xi + 1,yi+1)滿足yi+1=k(xi + 1)+ b。

即yi+1=yi+k。

yi同理,不再贅述。

算法基本思想:

選擇平緩的一端(即x2-x1和y2-y1的較大者)作為自變量,每次增加一個(gè)單位,計(jì)算因變量的值。

具體代碼如下:

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))//判斷以哪個(gè)作增量length = abs(x2 - x1);elselength = abs(y2 - y1);increx = (x2 - x1) / length;//設(shè)置增量,一個(gè)為1,一個(gè)為kincrey = (y2 - y1) / length;x = x1, y = y1;//起點(diǎn)for (i = 1; i <= length; i++) {putpixel(int(x + 0.5), int(y + 0.5), RED);//因?yàn)闆]有半個(gè)像素點(diǎn),所以需要強(qiáng)制轉(zhuǎn)換為整型x += increx;//x+增量y += increy;//y+增量} }

下面我們進(jìn)行調(diào)用:

int main() {initgraph(640, 480);DDA_Line(0, 0, 640, 480);getchar();closegraph(); }

結(jié)果如下:

總結(jié)

以上是生活随笔為你收集整理的画直线的算法之DDA算法+代码实现(法一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。