max(△x△y)=△x,即k≤1的情况: x1=x1+E·Ax=x1+,·△x=x1±1 1 =y+6y=y+y=y±k max(△x△y)=△y,此时k≥1: x1=x+E.△x=x1+,△x=x k yH=y+EAy=y+,2y=y±1 2021/2/21 华中理工大学计算机学院陆枫 6 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 6 max(|△x|,|△y|)=|△x|,即|k|≤1的情况: max(|△x|,|△y|)=|△y|,此时|k|≥1: (5 - 3) 1 1 1 1 1 y y k x y y y y x x x x x x x i i i i i i i i = = + = + = = + = + + + 1 (5 - 4) 1 1 1 1 1 = = + = + = = + = + + + i i i i i i i i y y y y y y y k x x y x x x x
(round(xi+1/k),Ivi+1 (xi, yi) Kxi+1,lround (yi+h)) 图53DDA算法生成直线段 程序 注意: round(x=(int)(x+0.5) 2021/2/21 华中理工大学计算机学院陆枫 7 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 7 程序 注意: round(x)=(int)(x+0.5) 图5-3 DDA算法生成直线段 (xi,yi) (xi+ 1,round(yi+ k)) (round(xi+1/k),yi+ 1)
特点: 增量算法 直观、易实现 不利于用硬件实现 2021/2/21 华中理工大学计算机学院陆枫 8 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 8 特点: 增量算法 直观、易实现 不利于用硬件实现
51.2中点 Bresenham算法 直线的方程 △ F(x,y)=y-kx-b=0,其中k= yyy △xx 0 该直线方程将平面分为三个区域: 对于直线上的点,F(xy)=0 对于直线上方的点,F(xy)>0; 对于直线下方的点,F(xy)<0 2021/2/21 华中理工大学计算机学院陆枫 9 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 9 5.1.2 中点Bresenham算法 直线的方程 该直线方程将平面分为三个区域: • 对于直线上的点,F(x,y)=0; • 对于直线上方的点,F(x,y)>0; • 对于直线下方的点,F(x,y)<0。 ( , ) 0 , (5 -5) 1 0 1 0 x x y y x y F x y y k x b k − − = = − − = 其中 =
y F(x,y)=0 D F(XN)=0 F(x,y)>0 F(x,y)>0 F(x,y)<0 X F(x,y)<0 图5-4直线将平面分为三个区域 2021/2/21 华中理工大学计算机学院陆枫 10 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99 - 7 10 x y F(x,y)>0 F(x,y)=0 F(x,y)<0 图5-4 直线将平面分为三个区域 x y F(x,y)>0 F(x,y)=0 F(x,y)<0