003计算机图形学:圆的生成算法

平面几何中园的方程可以描绘为:

$(x-x_0)2+(y-y_{0})2=r^2$

其中$(x_0,y_0)$ 是圆心坐标,r为半径。为了简化可以先考虑圆心和坐标原点重合的情况,其他情况可以在此基础上平移得到。

由于圆的八分对策性,因此若已知圆弧上一点P(x,y),则可以得到另外7个对称点:(x,-y) (-x,y) (-x,-y) (-y,x) (-y,-x) (y,x) (y,-x) 。

中点画圆算法的步骤

决策参数取决于下一点$(x_k+1,y_k-1/2)$ 是在圆内还是圆外,如果圆内,则$y_k$更接近圆周边界,否则是$y_k-1$

  1. 输入圆半径r和圆心$(x_c,y_c)$,并得到圆周(圆心在原点)上的第一个点:

    $(x_0,y_0)=(0,r)$

  2. 计算决策参数的初始值:

    $p_0 = 5/4-r$

  3. 在每个$x_k$位置,从k=0开始,假设$p_k$<0,圆心在(0,0)的圆的下一个点为$(x_{k+1},y_k)$,并且

    $p_{k+1} = p_k + 2x_{k+1}+1$

    否则,圆的下一点是$(x_k+1,y_k-1)$,并且

    $p_{k+1} =p_k+2x_{k+1}+1-2y_{k+1}$

    其中 $2x_{k+1}=2x_k+2$且$2y_{k+1}=2y_k-2$。

  4. 确定在其他七个八分圆中的对称点。

  5. 将每个计算出的像素位置(x,y)移动到圆心在$(x_c,y_c)$的圆的路径上,并画坐标值:

    $x=x+x_c$, $y=y+y_c$

  6. 重复步骤3到步骤5,直至x>=y 。

你可能感兴趣的:(003计算机图形学:圆的生成算法)