设要显示圆的圆心在原点(0,0),半径为R,初始点的坐标为(0,R),顺时针生成八分之一圆,令:F(x,y)=x2+y2-R2
则圆的方程为:
F(x,y)=0
当点(x,y)在圆内时,则F(x,y)<0;
当点(x,y)在圆外时,则F(x,y)>0;
当点(x,y)在圆上时,则F(x,y)=0;
假设当前点为Pi(xi,yi),取下一个点Pi+1(xi+1,yi+1)的原则是:
1、当F(xi,yi)≤0时:取xi+1= xi+1,yi+1= yi。即向右走一步,从圆内走向圆外。对应图(a)中的从Pi到Pi+1。
2、当F(xi,yi)>0时:取xi+1= xi,yi+1= yi-1。即向下走一步,从圆外走向圆内。对应图(b)中的从Pi到Pi+1。
由于向圆内或向圆外走取决于F(xi,yi)的正负,因此称为正负法。
下面分两种情况求出F(xi,yi)的递推公式:
(1) 当F(xi,yi)≤0时,向右走,取xi+1=xi+1,yi+1=yi,则
F(xi+1,yi+1)=F(xi+1,yi)
=(xi+1)2+yi2-R2
=(xi2+yi2-R2)+2xi+1
= F(xi,yi)+2xi+1
(2) 当F(xi,yi)>0时,向下走,取xi+1=xi,yi+1=yi-1,则
F(xi+1,yi+1)= F(xi,yi-1)
=xi2+(yi-1)2-R2
=(xi2+yi2-R2)-2yi+1
= F(xi,yi)-2yi+1
初始时,x=0,y=R,故
F(0,R)=(02+R2)-R2=0