bresenham算法的基本原理 bresenham算法的原理?
bresenham算法的原理?DDA稱為數(shù)值微分畫線算法,是直線生成算法中最簡單的一種。原理相當(dāng)簡單,就是最直觀的根據(jù)斜率的偏移程度,決定是以x為步進方向還是以y為步進方向。然后在相應(yīng)的步進方向上,步
bresenham算法的原理?
DDA稱為數(shù)值微分畫線算法,是直線生成算法中最簡單的一種。原理相當(dāng)簡單,就是最直觀的根據(jù)斜率的偏移程度,決定是以x為步進方向還是以y為步進方向。然后在相應(yīng)的步進方向上,步進變量每次增加一個像素,而另一個相關(guān)坐標(biāo)變量則為Yk_1=Yk m(以x為步進變量為例,m為斜率)
假定直線斜率k在0~1之間,當(dāng)前象素點為(xp,yp),則下一個象素點有兩種可選擇點P1(xp 1,yp)或P2(xp 1,yp 1)。若P1與P2的中點(xp 1,yp 0.5)稱為M,Q為理想直線與x=xp 1垂線的交點。當(dāng)M在Q的下方時,則取P2應(yīng)為下一個象素點;當(dāng)M在Q的上方時,則取P1為下一個象素點。這就是中點畫線法的基本原理
Bresenham:過各行、各列像素中心構(gòu)造一組虛擬網(wǎng)格線,按直線從起點到終點的順序計算直線各垂直網(wǎng)格線的交點,然后確定該列像素中與此交點最近的像素。該算法的優(yōu)點在于可以采用增量計算,使得對于每一列,只要檢查一個誤差項的符號,就可以確定該列所求的像素。
大概就是這樣,預(yù)知詳細,可以參考圖形學(xué)的書籍
bresenham算法,和dda算法哪個效果好?
esenham算法的特點是:
1,不必計算直線之斜率,因此不做除法
2,不用浮點數(shù),只用整數(shù)
3,只做整數(shù)加減法和乘2運算,而乘2運算可以用硬件移位實現(xiàn). Bresenham算法速度很快,并適于用硬件實現(xiàn). DDA算法的特點: 浮點數(shù)運算 不易硬件實現(xiàn) 中點畫線法特點: 只有整數(shù)運算,不含乘除法 可用硬件實現(xiàn) 因(X0,Y0)在直線上,所以F(X0,Y