我试图理解这种模式,行和列方程式如何,以便我可以制作一个循环来给我相同的图片。 我不一定需要代码,只是模式的方式,我似乎无法理解它已经尝试编码它仍然我的结果是坏的...
当我的输入为1时,这就是结果
当我的输入为3时,这就是结果
当我的输入为15时,这就是结果
答案 0 :(得分:5)
它似乎是一个粗略的像素化圆圈。因此,等式是 x ^ 2 + y ^ 2< = r ^ 2 。坐标值相对于中心的位置,半径作为输入。
编辑:经过进一步检查,这些是宽圈子,大概是为了解释角色cels的矩形形状。所以,它应该更像是(x / scale)^ 2 + y ^ 2< = r ^ 2
正如评论中所提到的,要了解更多信息的关键字是" Bresenham的圆形绘制算法",这是一种快速的方法来计算圆的一个象限(和你通过镜像得到休息)。使用Bresenham,您可能还需要填充洪水。您也可以搜索"扫描线光栅化圆圈",这可以跳过填充步骤。
答案 1 :(得分:5)
这是一个ASCII艺术圈,半径(r)等于输入数。
双X和双点(XX和..)用作像素内容。
我们可以在像素矩阵上施加坐标系[-r..r,-r..r],并在打印时测试每个坐标系在给定半径圆内的隶属度。测试是x ^ 2 + y ^ 2< = r ^ 2.
以下C函数完成所有这些操作。它为所有输入产生正确的输出(1,3,15)。
void print_filled_circle(int r)
{
for (int x = -r; x <= r; x++)
{
for (int y = -r; y <= r; y++)
{
if (x*x + y*y <= r*r)
printf("XX");
else
printf("..");
}
printf("\n");
}
}