第二节 圆的扫描转换算法      
             
 
    从计算
        
    当≥0时,应选D点,即选
        
    当<0时,应选H,即选
        
    画圆的起始点是(0,R),即x1=0,y1=R,代入前式,令i=1,就得到:
        
void BresenhamCircle(int R)
{ int x,y,p;
    x=0; y=R;
    p=3-2*R;
    for(;x<=y;x++)
    { SetPixel(x,y);
        if(p>=0)
    {
    p+=4*(x-y)+10;
    y--;
    }
    else
    { p+=4*x+6;
    }
    }
}
    只需修改语句SetPixel(x,y),画八个对称的点,就可以画出全部圆周。若加一个平移,就可以画出圆心在任意位置的圆周。
   
上一页 | 下一页  
  第一节 直线扫描转换算法
第二节 圆的扫描转换算法
第三节 区域填充算法
第四节 多边形的扫描转换算法