其中,因为P0(x0,y0)在直线上,所以
y0 kx0 b 0
则: d 0 0.5 k
(x0+1,y0+0.5) (x0,y0)
中点算法的改进——整数化判别式
改进:用2dΔx代替d, 令D=2dΔx 则:
D0 2 xd 0 2 x (0.5 k ) x 2 y di 0 Di 0 Di +1 2 xd i 1 2 x ( d i 1 k ) 2 xd i 2 x 2 y Di 2 x 2 y di 0 Di 0
12
中点画线算法
直线与空间的关系
y F(x,y)=0 F(x,y)>0 x F(x,y)<0 F(x,y)=0 F(x,y)>0 y
F(x,y)<0
x
图3 直线将平面分为三个区域
13
假定0≤k≤1,即0≤Δy/Δx≤1,x是最大位移方向 当前点 P 的下一点只能取 Pu 或 Pd,可用中点与直线 的位置关系来判定,中点偏差判别式
中点偏差判别式的初始值 直线的起点坐标为P0(x0,y0),x为主位移方向。 因此,第一个中点是(x0+1,y0+0.5),相应 的d的初始值为:
d 0 F ( x0 1, y0 0.5) y0 0.5 k ( x0 1) b
y 0 kx0 b k 0.5
Pu(xi+1,yi+1) Q M(xi+1,yi+1/2) P(xi,yi) Pd(xi+1,yi)
图4 中点算法生成直线的原理
中点M坐标为(xi+1, yi+0.5), 判别式:
d F ( xM , yM ) F ( xi 1, yi 0.5) yi 0.5 k ( xi 1) b