一、直線段的掃描轉換算法
為了在光柵顯示器上用這些離散的象素點逼近這條直線,需要知道這些象素點的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.從直線方程類型做文章:
如兩點式、一般式