Печать равностороннего треугольника в терминал

Я пытался сделать что-то, что кажется удивительно сложным — напечатать равносторонний треугольник в командной строке (терминал для Mac OS X). У меня есть программа, которая может вычислить n-ую строку треугольника Паскаля до некоторой заданной пользователем константы. Как хорошо известно, если принять значения треугольника Паскаля по модулю два, существует корреляция между этим и Треугольник Серпинского.

Я устанавливал нечетные значения равными 1, а четные значения равными 0, и когда я печатаю результаты в Терминале и уменьшаю масштаб, это выглядит красиво, за исключением того факта, что оно явно не равноугольное. Вот пример вывода моей программы после уменьшения масштаба (поэтому нули и единицы выглядят очень по-разному):

введите описание изображения здесь

Но мне интересно … есть ли способ заставить этот треугольник выглядеть равносторонним? Или я должен напечатать вывод в другом месте? Я экспериментировал с разными шрифтами, разными уровнями ширины линии, но я не могу заставить что-либо выглядеть близко к равностороннему, и даже если это так, у меня нет надежного способа проверить это. Частично проблема заключается также в том, что увеличение / уменьшение терминала приводит к разным масштабам ширины линии и высоты.

Мой код принимает в качестве входных данных количество строк для генерации. Затем это число учитывается при распечатке каждой строки. Таким образом, в первой строке (которая представляет собой всего одну «1») будет напечатано n-1 пробелов перед печатью 1. Затем во второй строке будет напечатано n-2 пробелов перед печатью фактического содержимого (которые равны «1 1»). ), который включает пробел между каждым числом и т. д. Это на C ++, но я не думаю, что это должно иметь значение.

Я подозреваю, что мне нужно будет найти какой-то другой способ получения изображения, поэтому любой совет по поводу использования библиотек был бы полезен.

0

Решение

Хорошим вариантом является преобразование треугольника в растровый формат по вашему выбору и использование AAlib или же libcaca отрендерить это изображение в терминал.

0

Другие решения

Я бы попытался (и я думаю, что у вас уже есть) выяснить фактическую ширину и высоту того, каким будет в конечном итоге изображение, и сгенерировать 2D-матрицу, определяющую размеры этих изображений. Эта матрица может представлять собой двумерный набор целых чисел (шириной не менее 24 бит, дающий пространство для 8-битных цветовых компонентов) или 3 отдельные 2D-матрицы, по одной для каждого цветового компонента. Установите все эти значения на любой желаемый цвет фона.

Двигайтесь по вашему алгоритму, устанавливая соответствующие пиксели в любой другой цвет, который вы хотите, чтобы ваш фактический треугольник отображался как.

Посмотрите здесь для записи такой матрицы в файл .bmp (или растровое изображение).

Написание образа BMP на чистом c / c ++ без других библиотек

0

По вопросам рекламы [email protected]