- 目的: 为了优化DDA算法中的浮点数运算(DDA中每次+k运算,|k|<1,所以存在浮点数运算),达到整数运算,提高效率。
- 基本思想:
- 当前像素点为(xp,yp),下一像素点为P1或P2。设P1与P2的中点为M(Xp+1,Yp+0.5),图中直线为理想直线。
- 由数学知识得,直线的一般式为F(x,y)=aX+bY+c=0;
若一个点在直线上方,则F(x,y)>0;
若一个点在直线下方,则F(x,y)<0
若一个点在直线上,则F(x,y)=0 - 由此的中点画线法为;
F(M)>0,即中点M在直线上方,则取P1(Xp+1,Yp);F(M)<=0,即中点M在直线下方,则取P2(Xp+1,Yp+1);
-
算法推导:
-
只讨论0<k<1的情况,k>1的情况可以通过x,y互换可以求得;
-
d0=F(M)=a(xp+1)+b(yp+0.5)+c=F(xp,yp)