dda畫線算法例題 如何簡(jiǎn)單理解DDA算法?
如何簡(jiǎn)單理解DDA算法?DDA被稱為數(shù)值微分畫線算法。原理很簡(jiǎn)單,根據(jù)坡度偏移的程度最直觀地決定是以x為步進(jìn)方向還是以y為步進(jìn)方向。然后在相應(yīng)的階躍方向上,階躍變量每次增加一個(gè)像素,另一個(gè)相關(guān)的坐標(biāo)變
如何簡(jiǎn)單理解DDA算法?
DDA被稱為數(shù)值微分畫線算法。原理很簡(jiǎn)單,根據(jù)坡度偏移的程度最直觀地決定是以x為步進(jìn)方向還是以y為步進(jìn)方向。然后在相應(yīng)的階躍方向上,階躍變量每次增加一個(gè)像素,另一個(gè)相關(guān)的坐標(biāo)變量為YK_1=YK m(以x為階躍變量,m為斜率)。
計(jì)算機(jī)圖形學(xué):Matlab編程畫直線(DDA算法)?
函數(shù)DDA(x1,y1,x2,y2,color)length=abs(x2-x1)ifabs(y2-y1)>lengthlength=abs(y2-y1)enddx=(x2-x1)/lengthdy=(y2-y1)/lengthx=x1 0.5*sign(dx)y=y1 0.5*sign(dy)holdonfori=1:lengthplot(round(x),round(y),“color”,color)x=x dxy=y dyendholdonk
DDA稱為數(shù)值差分畫線算法,該算法是行生成算法中最簡(jiǎn)單的一種。原理很簡(jiǎn)單,即根據(jù)坡度的偏移程度,最直觀地決定是以x為步進(jìn)方向還是以y為步進(jìn)方向。然后在相應(yīng)的步長(zhǎng)方向上,步長(zhǎng)變量每次增加一個(gè)像素,另一個(gè)相關(guān)坐標(biāo)變量為YK_1=YK m(以x為步長(zhǎng)變量,例如m為斜率)。假設(shè)直線的斜率k在0和1之間,當(dāng)前像素點(diǎn)為(XP,YP),則下一個(gè)像素點(diǎn)有兩個(gè)可選點(diǎn)P1(XP 1,YP)或P2(XP 1,YP 1)。如果P1和P2的中點(diǎn)(XP 1,YP 0.5)稱為M,q是理想線,x=XP,當(dāng)M低于q時(shí),P2應(yīng)為下一像素點(diǎn);當(dāng)M高于q時(shí),P1應(yīng)為下一像素點(diǎn)。這是中點(diǎn)畫線法的基本原理。Bresenham:通過每一行和每一列像素的中心構(gòu)造一組虛擬網(wǎng)格線,根據(jù)直線從起點(diǎn)到終點(diǎn)的順序計(jì)算出每一垂直網(wǎng)格線的交點(diǎn),然后確定每一垂直網(wǎng)格線在像素列中的交點(diǎn)該算法的特點(diǎn)是可以采用增量計(jì)算,這樣每一列只要檢查一個(gè)錯(cuò)誤項(xiàng)的符號(hào),就可以確定該列的像素點(diǎn),
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn):分別用DDA算法和中點(diǎn)算?
計(jì)算機(jī)圖形學(xué)中有許多畫線算法,如DDA算法,逐點(diǎn)比較法,Bresenham算法,Bresenham算法是最著名的算法,該算法只使用加法和移位運(yùn)算,沒有浮點(diǎn)數(shù),沒有乘法和除法,所以執(zhí)行速度最快。