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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【转】Bresenham快速画直线算法

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Bresenham快速画直线算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、???????????? 算法原理簡介:

算法原理的詳細描述及部分實現可參考:

http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html

?

Fig.1?

假設以(x, y)為繪制起點,一般情況下的直觀想法是先求m = dy /dx(即x每增加1 y的增量),然后逐步遞增x, 設新的點為x1 = x + j, y1 = round(y + j * m)。可以看到,這個過程涉及大量的浮點運算,效率上是比較低的(特別是在嵌入式應用中,DSP可以一周期內完成2次乘法,一次浮點卻要上百個周期)。

?????? 下面,我們來看一下Bresenham算法,如Fig. 1,(x, y +ε)的下一個點為(x, y + ε + m),這里ε為累加誤差。可以看出,當ε+m < 0.5時,繪制(x + 1, y)點,否則繪制(x + 1, y + 1)點。每次繪制后,ε將更新為新值:

??????????? ε = ε + m ,如果(ε + m) <0.5 (或表示為2*(ε + m) < 1)

??????????? ε = ε + m – 1, 其他情況

??? 將上述公式都乘以dx, 并將ε*dx用新符號ξ表示,可得

??????????? ξ = ξ + dy, 如果2*(ξ + dy) < dx

??????????? ξ = ξ + dy – dx, 其他情況

??? 可以看到,此時運算已經全變為整數了。以下為算法的偽代碼:

??????????? ξ ← 0, y ← y1

??????????? For x ← x1 to x2 do

??????????????? Plot Point at (x, y)

??????????????? If (2(ξ + dy) < dx)

??????????????????? ξ ←ξ + dy

??????????????? Else

??????????????????? y ← y + 1,ξ ←ξ + dy – dx

??????????????? End If

??????????? End For

二、???????????? 算法的注意點:

?

?

Fig. 2

??? 在實際應用中,我們會發現,當dy > dx或出現Fig.2 右圖情況時時,便得不到想要的結果,這是由于我們只考慮dx > dy x, y的增量均為正的情況所致。經過分析,需要考慮8種不同的情況,如Fig. 3所示:

?當然,如果直接在算法中對8種情況分別枚舉, 那重復代碼便會顯得十分臃腫,因此在設計算法時必須充分考慮上述各種情況的共性,后面將給出考慮了所有情況的實現代碼。

三、???????????? 算法的實現

?

以下代碼的測試是利用Opencv 2.0進行的,根據需要,只要稍微修改代碼便能適應不同環境

?

//Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/
void DrawLine(IplImage *img, int x1, int y1, int x2, int y2)
{int dx = x2 - x1;int dy = y2 - y1;int ux = ((dx > 0) << 1) - 1;//x的增量方向,取或-1int uy = ((dy > 0) << 1) - 1;//y的增量方向,取或-1int x = x1, y = y1, eps;//eps為累加誤差 eps = 0;dx = abs(dx); dy = abs(dy); if (dx > dy) {for (x = x1; x != x2; x += ux){SetPixel(img, x, y);eps += dy;if ((eps << 1) >= dx){y += uy; eps -= dx;}}}else{for (y = y1; y != y2; y += uy){SetPixel(img, x, y);eps += dx;if ((eps << 1) >= dy){x += ux; eps -= dy;}}} }

四、???????????? 測試結果

五、???????????? 進一步可能的改進

(x1, y1)為起點,(x2, y2)為終點,取中點(x1 + x2)/2, (y1 +y2)/2,然后從兩個端點同時向中點生長,這種并行運算可以提高一定的效率。


原文地址:http://www.cnblogs.com/pheye/archive/2010/08/14/1799803.html

?

總結

以上是生活随笔為你收集整理的【转】Bresenham快速画直线算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产婷婷一区二区三区 | 中文字幕色片 | 九色91| 国产农村妇女精品久久久 | 国产又黄又大又爽 | 免费播放片大片 | 亚洲AV无码精品自拍 | 欧美日韩大片在线观看 | 性高潮影院 | 成人xxx视频 | 国产一区二区三区视频在线观看 | 狠狠躁夜夜 | 亚洲精品一区在线观看 | 亚洲热视频 | 欧美日韩一区二区视频在线观看 | 国产精品人八做人人女人a级刘 | 欧美色图综合网 | 亚洲欧美在线视频观看 | 91精品人妻互换一区二区 | 国产精品乱码一区二区 | 岛国av一区 | 森林影视官网在线观看 | 亚洲一区亚洲二区 | 少妇网站在线观看 | 青青草原av | 午夜成人免费影院 | 国内精品久久久久久久久久久 | 国产精品一区二区在线 | 色综合天天综合网天天看片 | 国产黄色大片网站 | 色偷偷欧美 | 欧美在线天堂 | 亚洲欧美另类一区 | 日本变态折磨凌虐bdsm在线 | 夜色导航 | 娇妻第一次尝试交换的后果 | 黄色一级片. | 天天摸天天 | 爱草av| 亚洲日本护士毛茸茸 | 欧美成人精品 | 亚洲综合激情 | 亚洲精品日韩丝袜精品 | 日韩一级性生活片 | 国产精品一区二区6 | 麻豆网站在线免费观看 | 日韩欧美成人精品 | 日本黄色网址大全 | 三级少妇| 欧美日本另类 | 美女扒开大腿让男人桶 | 亚洲欧美第一 | 熊出没之冬日乐翻天免费高清观看 | √天堂中文官网8在线 | 欧美伊人网 | 思思久久99 | 国产一线二线三线在线观看 | 日本欧美视频 | 夫妻黄色片 | 日本三级欧美三级 | 大屁股白浆一区二区三区 | 成人动漫av | 精品国产一二三四区 | 成人综合在线观看 | 成人免费av在线 | 欧美黑吊大战白妞欧美大片 | www欧美| 免费一区二区在线观看 | 天天干,天天干 | xxxx在线视频 | 韩日视频 | 91一区二区三区在线 | 懂色a v | 国产精品第一国产精品 | 久久精品国产精品 | 国产人妻人伦精品1国产 | 十八禁视频网站在线观看 | 亚洲性片 | 奇米四色网 | 亚洲精品在线观看视频 | 色臀 | 琪琪色在线观看 | 超碰在线观看97 | 亚洲国产成人在线视频 | 国产精品一区二区av日韩在线 | 夜色综合| 欧美在线精品一区 | 日本中文字幕精品 | 极品销魂美女一区二区 | 天天插夜夜| 四色在线 | 五月天色网站 | 色婷婷激情五月 | 日韩在线免费视频 | 婷婷综合 | 成人拍拍拍 | 天堂va欧美ⅴa亚洲va一国产 | 欧美一区二区免费视频 | 欧美成人三级伦在线观看 |