使用中点圆算法,您可以绘制对称圆,每个像素只访问一次。由于算法的性质,它只能绘制奇数直径(2 * r + 1)的圆。是否可以扩展此算法,使其可以成功绘制直径为偶数像素的圆?
算法的一些要求:
- 像素只能绘制一次。
- RAM非常昂贵。
如果确实不能修改中点圆算法来处理这个问题,那么下面的解决方案就可以了:
void DrawCircle(int x, int y, int diameter)
{
if (diameter % 2 == 0)
EvenWidthCircle(x, y, diameter / 2);
else
MidpointCircle(x, y, diameter / 2);
}