Язык или пакет для рисования геометрических диаграмм

Я ищу язык или пакет на существующем языке, который подходит для определения и рисования геометрических диаграмм.

Например, , Я хотел бы нарисовать шестиугольную сетку с наложенной на нее двойной треугольной сеткой. Теперь я мог бы сесть, нанести немного смазки, чтобы вручную проработать триггер, и придумать какой-нибудь Postscript или SVG, который отобразит такую ​​сетку. Но мне интересно, есть ли какие-нибудь языки или пакеты, которые помогут мне в этом; которые позволяют легко указать шестиугольную сетку, найти центры и нарисовать на ней треугольную сетку.

Какой самый простой способ сделать это?

Примеры кода, показывающие, насколько легко создавать такие геометрически заданные диаграммы, будут оценены. В частности, покажите, насколько легко нарисовать шестиугольную сетку; Хотя я мог бы сделать это на любом языке, нарисовав все линии вручную, меня интересуют языки или пакеты, которые делают такую ​​геометрическую диаграмму простой и понятной.

Bounty

Поскольку на этот вопрос был дан ответ, но ответ сложнее, чем я бы предпочел, я предложу вознаграждение тому, кто может создать самый короткий и простой код на любом ранее существовавшем языке и с использованием любой уже существующий пакет для рисования шестиугольной сетки с наложенной поверх нее двойной треугольной сеткой; двойная треугольная сетка - это треугольная сетка, которую вы получите, если соедините центр каждого шестиугольника с центром каждого из соседних шестиугольников. См., Например, ответ Antal S-Z ; его пример делает свою работу, но я искал язык, который облегчил бы эту проблему. Вы можете создать сетку примерно прямоугольной формы, как в его примере (нечетные строки выровнены, а четные строки выровнены), или в стиле доски Hex (каждая строка сдвинута вправо на половину шестиугольника, образуя ромб); оба приемлемы.

Программа может принимать входные данные либо в форме функции или подпрограммы на языке, который принимает количество строк и количество столбцов, либо принимать входные данные, переданные в командной строке, указывая строки и столбцы. Он должен производить вывод в любом стандартном и распространенном графическом формате, таком как Postscript, PDF, SVG, PNG или PNM ; вывод должен содержать шестигранную сетку и треугольную сетку контрастного цвета, толщины линии или стиля линии, чтобы диаграмма была понятной.

Я ищу самый короткий и простой ответ, как способ найти язык или пакет, который лучше всего подходит для описания такого рода диаграмм; награда достанется самой короткой программе, решающей проблему. Это не кодовый гольф, поэтому я не буду считать по количеству символов или строкам кода. Если очевидного кратчайшего ответа нет, я буду измерять по количеству токенов; сколько токенов на вашем языке нужно, чтобы выразить эту проблему? Таким образом, читаемые константы и имена переменных, с использованием библиотечных функций, комментариев, пробелов и т. П. - все в порядке, поскольку они не увеличивают количество токенов. Это все еще не идеальная метрика (у Lisps будет еще несколько токенов, так как вам нужно больше скобок для разграничения арифметических выражений, и я уверен, что если вы чрезмерно оптимизируете эту метрику, вы все равно сможете создать нечитаемый код), но это приблизительное руководство к тому, насколько сложен ваш код.

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

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

20
задан Community 23 May 2017 в 12:10
поделиться