直線繪制的三個著名的常用算法(一)數值微分法(DDA)


一、直線段的掃描轉換算法

為了在光柵顯示器上用這些離散的象素點逼近這條直線,需要知道這些象素點的x,y坐標,【沿x方向前進一個象素(步長=1)】,可以算出相應的y值。

1、求出過P0,P1的直線段方程:


因為象素坐標是整數,所以【y值還要取整處理——>四舍五入】


P取整為P(1,0)時偏差太大,做+0.5的處理后更加逼近

一個動畫或真實感圖像往往需要調用成千上萬次畫線程序,因此直線算法的好壞與效率將直接影響圖像的質量和顯示速度。
【為了提高效率——>去乘法】
2、直線繪制的三個著名的常用算法
(1)數值微分法(DDA) ——>【引入了增量思想,采用了直線斜截式方程】


式子的含義是:當前步的y值等於前一步的y值加上斜率k



【思考】1、DDA畫直線算法:x每遞增1,y遞增斜率k。是否適合任意斜率的直線?
           
               ————>  |K| <= 1   <————
 
          ————>  |K| > 1 光柵太稀疏了!  <————
2、DDA畫直線算法是否最優?若非,如何改進?
——>
a.改進效率:
一般情況下k與y都是小數,每一步都要對y四舍五入后取整——>唯一途徑:把浮點運算變成整數加法
b.從直線方程類型做文章:
如兩點式、一般式


免責聲明!

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



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