圆弧的生成算法

1 Breasenham算法

1.1 它的基本方法是从一个起点出发,利用判别式选择下一个显示点

1.2 算法原理:

假设圆心的坐标位于坐标原点,位于第一项限的1/8圆弧p1p2,它可以用方程画出:

圆弧的生成算法_第1张图片

算法的每一步都选择一个离开理想圆周最近的点Pi(Xi,Yi)让他的误差项每一步都是最小的.

Pi-1(Xi-1,Yi-1)是已经确定为最靠近圆弧的点,下一步x=xi-1+1时,要决定取T还是S更好.

圆弧的生成算法_第2张图片


很明显,|D(s)|>=|D(T)|,也就是所di>0的时候选择T点,不然选择S点.

将di作为判别式,咱们推导一下他的递推公式:

圆弧的生成算法_第3张图片

圆弧的生成算法_第4张图片

1.3 算法描述

void drawcircle(int r)
{
    //从原点开始画
    int x,y,d;
    x=0;
    y=r;
    d=3-2*r;
    while(x

可以利用这个算法的1/8圆弧对称扩展成一个完整的圆

你可能感兴趣的:(基本图形绘制)