在终端显示甜甜圈
#c #bash #visualization #modelization

在时代开始时,终端控制了所有内容,并且“图形”应用程序旨在仅使用文本符号生成图形。

随着时间的流逝,人们每天都会开始每天使用计算机,使终端成为吓到普通用户的工具。操作系统需要一张新的面孔才能很容易被新用户熟悉,即使秘密终端仍在幕后运行所有内容。

因此,如今人们认为必须以统一或虚幻的形式开发游戏才能拥有适当的图形,但这不是这样。我们可以在终端中完成所有操作,甚至可以渲染和显示数学形状,例如圆环。为了简单起见,为了引起任何可以阅读此书的美国人的注意

在您的终端中显示甜甜圈,创建一个donut.c文件,然后将此代码粘贴在其中:

/*
 * Original code in https://www.a1k0n.net/2011/07/20/donut-math.html 
 * 
 * Credits to Andy Sloane (github.com/a1k0n)
 * 
 * Extracted and refactored the code to be readable in order to study and comprehend it from the original 2016 
 * I resolved warnings, added some missing type declarations, added reasonable newlines.
 * Tested in Ubuntu 20.04
 * To compile it you need to link the C mathematical library with the -lm option.
 * 
 * (shell commands)
 * sudo apt install -y gcc
 * gcc donut.c -lm -o donut
 * chmod u+x donut
 * ./donut
 */


#include <stdio.h>
#include <string.h>

int k;
double sin(), cos();

int main()
{
  float A = 0, B = 0, i, j, z[1760];
  char b[1760];
  printf("\x1b[2J");
  for (;;)
  {
    memset(b, 32, 1760);
    memset(z, 0, 7040);

    for (j = 0; 6.28 > j; j += 0.07)
      for(i = 0; 6.28 > i; i += 0.02)
      {
        float c = sin(i); 
        float d = cos(j);
        float e = sin(A);
        float f = sin(j);
        float g = cos(A);
        float h = d + 2;
        float D = 1 / (c * h * e + f * g + 5);
        float l = cos (i);
        float m = cos(B); 
        float n = sin(B);
        float t = c * h * g - f * e;
        int x = 40 + 30 * D * (l * h * m - t * n);
        int y = 12 + 15 * D * (l * h * n + t * m);
        int o = x + 80 * y;
        int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);
        if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o])
        {
          z[o] = D;;;
          b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
        }
      }
    printf("\x1b[H");
    for (k = 0; 1761 > k; k++)
      putchar(k%80 ? b[k] : 10);
    A += 0.04;
    B += 0.02;
  }
}

保存文件。然后,如果没有它,请安装GNU C编译器gcc。在Ubuntu / Debian系统中,您可以使用:

sudo apt install -y gcc

然后编译并运行代码。打开终端和类型:

gcc donut.c -lm -o donut
chmod u+x donut
./donut

您应该在终端看到一个甜甜圈。它甚至可以移动!

Image description

有关代码工作方式的完整说明 学分归功于Andy Sloane(github.com/a1k0n)