号来检测:РF(x,y)Р<0 点(x,y)位于数学圆内Р=0 点(x,y)位于数学圆上Р>0 点(x,y)位于数学圆外Р(2-20)Р 如下图所示,图中有两条圆弧A和B,假定当前取点为Pi(xi,yi),如果顺时针生成圆,那么下一点只能取正右方的点E(xi+1,yi)或右下方的点SE(xi+1,yi-1)两者之一。Р中点画线算法Р假设M是E和SE的中点,即,则: Р当F(M)<0时,M在圆内(圆弧A),这说明点E距离圆更近,应取点E作为下一象素点;Р当F(M)>0时,M在圆外(圆弧B),表明SE点离圆更近,应取SE点;Р当F(M)=0时,在E点与SE点之中随便取一个即可,我们约定取SE点。Р 二、中点画圆算法思想Р 因此,我们用中点M的圆函数作为决策变量di,同时用增量法来迭代计算下一个中点M的决策变量di+1。Р(2-21)Р 下面分两种情况来讨论在迭代计算中决策变量di+1的推导。Р 1、见图(a),若di <0,则选择E点,接着下一个中点就是,这时新的决策变量为:Р(2-22)Р(a)(di<0) 中点画线算法Р 式(2-22)减去(2-21)得:Рdi+1=di+2xi+3Р(2-23)Р 2、见图(b),若di≥0,则选择SE点,接着下一个中点就是,这时新的决策变量为:Р(2-24)Р(b)(di ≥0) 中点画线算法Р 式(2-24)减去(2-21)得:Рdi+1=di+2(xi-yi)+5Р(2-25)Р 我们利用递推迭代计算这八分之一圆弧上的每个点,每次迭代需要两步处理:Р (1)用前一次迭代算出的决策变量的符号来决定本次选择的点。Р (2)对本次选择的点,重新递推计算得出新的决策变量的值。Р 剩下的问题是计算初始决策变量d0,如下图所示。对于初始点(0,R),顺时针生成八分之一圆,下一个中点M的坐标是,所以:Р(2-26)Р生成圆的初始条件和圆的生成方向