直線繪制的三個著名的常用算法(三)Bresenham算法


(3)Bresenham算法

——>【畫線算法不依賴於直線方程】
——>【提供了一個更一般的算法,不僅有好的效率還有更廣泛的適用范圍】

算法思想:通過各行、各列象素中心構造一組虛擬網格線,按照直線起點到終

點的順序,計算直線與各垂直網格線的交點,然后根據誤差項的符號確定該列

象素中與此交點最近的象素。


每次x+1,y的遞增(減)量為0或1,它取決於實際直線與最近光柵網格點的距離,這個距離最大誤差為0.5

誤差項d的初值為0,d=d+k,一旦d>=1,就把它減去1,保證d的相對性,且在0、1之間。

將算法效率提高——>也處理成整數加法:

改進一:令e=d-0.5





Bresenham算法很像DDA算法,都是加斜率

但DDA算法是每次求一個新的y以后取整來畫,

而Bresenham算法是判斷符號來決定上下兩個點。

所以Bresenham算法集中了DDA和中點兩個算法的優點,而且應用范圍廣泛。

 


【小結】計算機科學問題的核心就是算法。
         把一個含乘法和一個加法的普通直線算法,是如何通過改進和完善其性能,最終變成整數加法的一個精彩過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM