我正在尝试使用 Bresenham 的中点算法绘制一个圆圈(并最终填充整个圆圈)。它将成为基本 2D 游戏中战争迷雾的轮廓。
我不是画一条线或填充一个像素,而是更改二维向量中的值。这可以正常工作,并且mapMatrix
此代码中更改的位置正确显示。
然而,只有圆圈的底部和顶部出现。我如何填补空白?
int d = 3 - (2 * radius);
int x = 0;
int y = radius;
while (x <= y)
{
mapMatrix[centerX + x][centerY + y].fog = false;
mapMatrix[centerX + x][centerY - y].fog = false;
mapMatrix[centerX - x][centerY + y].fog = false;
mapMatrix[centerX - x][centerY - y].fog = false;
mapMatrix[centerX + x][centerY + y].fog = false;
mapMatrix[centerX + x][centerY - y].fog = false;
mapMatrix[centerX - x][centerY + y].fog = false;
mapMatrix[centerX - x][centerY - y].fog = false;
if (d < 0)
{
d = (d + (4*x) + 6);
}
else
{
d = ((d + 4 * (x - y)) + 10);
y--;
}
x++;
}
我可以放一张我的输出图片,所以请看这个粗略的 ASCII 绘图。
-------------
----ooooo----
---o-----o---
-------------
-------------
-------------
------o------
-------------
-------------
-------------
---o-----o---
----ooooo----
-------------
提前致谢!