任何语言的这种模式

use*_*573 0 algorithm geometry console-application

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

当我的输入为1时,这就是结果 当我的输入是1

当我的输入为3时,这就是结果 在此输入图像描述

当我的输入为15时,这就是结果 在此输入图像描述

lus*_*oog 5

它似乎是一个粗略的像素化圆圈.因此,等式是x ^ 2 + y ^ 2 <= r ^ 2.坐标值相对于中心的位置,半径作为输入.

编辑:经过进一步检查,这些是非常宽的圆圈,大概是为了解释角色cels的矩形形状.所以,它应该更像(x/scale)^ 2 + y ^ 2 <= r ^ 2

正如评论中所提到的,要了解更多的关键词是"Bresenham的圆绘制算法",这是一种快速的方法来计算圆的一个象限(以及通过镜像获得的其余部分).使用Bresenham,您可能还需要填充洪水.您也可以搜索"扫描线光栅化圆",这可以跳过填充步骤.


Alp*_*nar 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Gene可能是因为它鼓励人们将SO视为代码编写服务 (4认同)