数值微分(DDA法 ·举例:用DDA方法扫描转换连接两点PO(O,0) 和P1(5,2)的直线段。 xint(y+0.5)y+0.5 Line:P0(0,0)-F1(5,2) 00 0 0.4+0.5 0.8+0.5 1.2+0.5 1.6+0.5
数值微分(DDA)法 • 举例:用DDA方法扫描转换连接两点P0(0,0) 和P1(5,2)的直线段。 x int(y+0.5) y+0.5 0 0 0 1 0 0.4+0.5 2 1 0.8+0.5 3 1 1.2+0.5 4 2 1.6+0.5
20(0.0)和P1(5,2)的直线段 ie:0.0162 y=kx+B,k为斜率 int(y+0.5)y+0.5 00.4+0.5 10.8+0.5 11.2+0.5 2345 ○一为当前象素点O一为终止点 21.6+0.5 ○-为起始点 replay 22.0+0.5
数值微分(DDA法 ·分析:上述算法仅适用于k≤1的情形。特 点是:在这种情况下,x每增加1,y最多增 加1。当|k|>1时,必须把x,y地位互换, y每增加1,x相应增加1/k。 缺点:在这个算法中,y与k必须用浮点数表示, 而且每一步都要对y进行四舍五入后取整。这 使得它不利于硬件实现
数值微分(DDA)法 • 分析:上述算法仅适用于| k| ≤1的情形。特 点是:在这种情况下,x每增加1,y最多增 加1。当 | k| > 1时,必须把x,y地位互换, y每增加1,x相应增加1/k。 • 缺点:在这个算法中,y与k必须用浮点数表示, 而且每一步都要对y进行四舍五入后取整。这 使得它不利于硬件实现
4.2中点画线法 中点画线法的基本原理 画直线段的过程中,当前 象素点为(xn,yn),下 个象素点有两种可选择点 P2 pI(X, 或 p2(x +1 yn+1)。若M=(xn+1, yn+0.5)为p1与p之中点, Q为理想直线与xx+1垂P=(xy)P1 线的交点。当M在Q的下方, 则P2应为下一个象素点; M在Q的上方,应取P1为 P=> 下一点
4.2 中点画线法 • 中点画线法的基本原理: 画直线段的过程中,当前 象素点为(xp , yp ),下一 个象素点有两种可选择点 p1 (xp +1, yp )或p2 (xp +1, yp +1)。若M=(xp +1, yp +0.5)为p1与p2之中点, Q为理想直线与x=xp +1垂 线的交点。当M在Q的下方, 则P2 应为下一个象素点; M在Q的上方,应取P1 为 下一点
中点画线法 中点画线法的算法 令直线段L(po(x0,y0),P1(x1,y1),其方程式F(x, y)=ax+by+c=O 其 a-yo y1, b-X 10 x1y0;点与L的关系:on:F(x,y)=0;up:F(x,y)>0 down: F(x, y)0 因此,欲判断中M在Q点的上方还是下方,只要把M代入F(x, y),并判断它的符号 构造判别式: d=F(M)=F(x+1,yn+0.5)=a(x1+1)+b(yn+0.5)+c d<0,M在L(Q点)下方,取P2为下一个象素; 当d>0,M在L(Q点)上方,取P1为下一个象素; 3.当d=0,选P1或P2均可,约定取P1为下一个象 素
中点画线法 • 中点画线法的算法: • 令直线段L(p0 (x0 ,y0 ), p1 (x1, y1 )), 其方程式 F(x, y)=ax+by+c=0。其中,a=y0 -y1 , b=x1 -x0 , c=x0 y1 - x1 y0 ; 点与L的关系:on: F(x,y)=0; up: F(x, y)>0; down: F(x, y)<0; 因此,欲判断中M在Q点的上方还是下方,只要把M代入F(x, y),并判断它的符号。 构造判别式: d=F(M)=F(xp +1, yp +0.5)=a(xp +1)+b(yp +0.5)+c 1. 当d<0,M在L(Q点)下方,取P2为下一个象素; 2. 当d>0,M在L(Q点)上方,取P1为下一个象素; 3. 当d=0,选P1或P2均可,约定取P1为下一个象 素;