0

我一直在尝试做一些看起来非常具有挑战性的事情——在命令行(Mac OS X 的终端)上打印一个等边三角形。我有一个程序可以计算帕斯卡三角形的第 n 行,直到某个用户指定的常数。众所周知,如果取 Pascal 三角形模 2 的值,则它与Sierpinski 三角形之间存在相关性。

我一直将奇数设置为 1,将偶数设置为 0,当我在终端上打印结果并缩小时,它看起来不错,除了它显然不是等边的事实。这是我的程序在缩小后的示例输出(所以零和一看起来有很大不同):

在此处输入图像描述

但我想知道......有没有办法让这个三角形看起来等边?还是我必须在其他地方打印输出?我一直在尝试不同的字体,不同的线宽级别,但我无法得到任何看起来接近等边的东西,即使这样,我也没有可靠的方法来检查这一点。部分问题还在于在终端上放大/缩小会导致不同的线宽和高度比例。

我的代码将要生成的行数作为输入。然后,在打印出每一行时会考虑该数字。因此,第一行(只是一个“1”)在打印 1 之前将有 n-1 个空格要打印。然后第二行必须在打印其实际内容之前打印 n-2 个空格(即“1 1” ),其中包括每个数字之间的空格,依此类推。它在 C++ 中,但我认为这无关紧要。

我怀疑我需要找到其他方法来获取图像,所以任何关于使用库的建议都会很棒。

4

2 回答 2

0

一个不错的选择是将三角形渲染为您选择的光栅格式,然后使用aaliblibcaca将该图像渲染到终端。

于 2014-03-04T04:09:30.737 回答
0

我会尝试(并且我认为您已经拥有)找出图像最终的实际宽度和高度,并生成定义图像尺寸的 2D 矩阵。该矩阵可以是一组 2D 整数(不小于 24 位宽,为 8 位颜色分量提供空间),也可以是 3 个单独的 2D 矩阵,每个颜色分量一个。将所有这些值设置为您想要的背景颜色。

通过您的算法将适当的像素设置为您希望实际三角形显示为的任何其他颜色。

在这里寻找将这样的矩阵写入 .bmp(或位图)文件。

在没有其他库的情况下用纯 c/c++ 编写 BMP 图像

于 2014-03-04T04:11:49.670 回答