任何语言的这种模式

时间:2014-10-12 20:52:44

标签: algorithm console-application geometry

我试图理解这种模式,行和列方程式如何,以便我可以制作一个循环来给我相同的图片。 我不一定需要代码,只是模式的方式,我似乎无法理解它已经尝试编码它仍然我的结果是坏的...

当我的输入为1时,这就是结果 When my input is 1

当我的输入为3时,这就是结果 enter image description here

当我的输入为15时,这就是结果 enter image description here

2 个答案:

答案 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");
    }
}