Asymptote -- мощный язык описания векторной графики, обеспечивающий естественную, основанную на координатах среду для технических чертежей. Метки и формулы набираются при помощи LaTeX, что обеспечивает высококачественный PostScript-вывод.
Недавно первый раз серьезно поюзал ЛаТеХ для лабы по физике. Поковыряв на скорую руку подобные софтины, остановился на metapost и собственно asymptote. Как это не странно, но в Дебиан не входил пакет emp (может ненашел, но искал долго). Поставил руками - работать незахотело. Асимптота же встала сразу, код мне понравился, результат тоже...
IMHO попытка переписать MetaPost (синтаксис для путей просто один в один) на С при которой были утрачены некоторые ключевые особенности META. Всё, что можно сделать в Asymptote можно сделать в MetaPost, а обратное (на сколько я понял из описания и примеров) не верно. Аналогов цикла MetaPost, который повторяет текст, а не команды (как я понял) нет.
MetaPost есть проблемы, но IMHO достоинств у MetaPost пока сильно больше чем у Asymptote.
Возможно на каких-то операциях Asymptote будет быстрее - но это ещё надо проверить. Синтаксис IMHO избыточен. В META всё сделано для уменьшения размеров кода.
P.S. В любом случае больше программок хороших и разных.
> Всё, что можно сделать в Asymptote можно сделать в MetaPost,
Однако трехмерные фигуры в Asymptote рисовать куда как проще, чем в Metapost (и я вообще сомневаюсь, что в Metapost возможны трехмерные пути).
> а обратное (на сколько я понял из описания и примеров) не верно.
А с этого момента подробнее, пожалуйста. Что понимается под "что можно сделать"? "Цикл, который повторяет текст" возможен вследствие того, что Metapost это макроязык. В Asymptote он заменяется на обычный цикл (скажем, добавляющий текст к хвосту предыдущего).
>> Всё, что можно сделать в Asymptote можно сделать в MetaPost,
>Однако трехмерные фигуры в Asymptote рисовать куда как проще, чем в Metapost (и я вообще сомневаюсь, что в Metapost возможны трехмерные пути).
Есть соответствующие расширения - я не разбирался с ними подробнее. Т.е. трёхмерию не пробовал не там и не там. Простейшие "3D" картинки делал с помощью трансформации slanted.
>> а обратное (на сколько я понял из описания и примеров) не верно.
>А с этого момента подробнее, пожалуйста. Что понимается под "что можно сделать"? "Цикл, который повторяет текст" возможен вследствие того, что Metapost это макроязык. В Asymptote он заменяется на обычный цикл (скажем, добавляющий текст к хвосту предыдущего).
Вы всё правильно поняли. Я, похоже, не корректно выразился. Действительно можно путём добавления, но код удлиняется и запись становится "не естественной". Хотя на вкус и цвет.
Прелесть MetaPost именно в разумных сокращениях, которые в Asymptote не реализованы и вряд-ли когда-то будут, потому что такое надо продумывать в самом начале. И это не смотря на то, что subj писался c MetaPost почти под копирку.
Насчет emp. На сколько я понял чтобы включить кусок на mp в .tex файл нужен этот самый пакетик - usepackage{mflogo,graphicx,emp} (вставляется коммандой begin{empfile} ...), а его-то и нету, хотя сам mp стоит. Если в чем-то ошибся - сильно не пинайте ;)
Про это не знаю. Я не совсем понимаю зачем включать mp в tex.
Технология примерно такая: пишется .mp -> mpost -> получается PostScript без внёдрённых шрифтов - вот это уже можно вставлять в .tex через includegraphics
> Простейшие "3D" картинки делал с помощью трансформации slanted.
Если нужно нарисовать, скажем, пирамиду для учебника геометрии, то конечно можно обойтись и двумерными средствами (вручную вычислить проекцию на плоскость рисунка). Но сколько-нибудь сложные поверхности так рисовать уже неудобно.
> Прелесть MetaPost именно в разумных сокращениях, которые в Asymptote не реализованы и вряд-ли когда-то будут, потому что такое надо продумывать в самом начале. И это не смотря на то, что subj писался c MetaPost почти под копирку.
В Asymptote своя прелесть - удобная объектная модель и более простая расширяемость (скажем, при использовании того же трехмерного модуля пользователь оперирует теми же преобразованиями (shift, rotate, reflect), что и обычно, а в Metapost'е синтаксис меняется).
А то, что Asymptote написана под копирку, очень удобно. Если чего-то не хватает (мне, например, не хватало buildcycle), можно чуть ли не буквально скопировать из Metapost'а.
>> Простейшие "3D" картинки делал с помощью трансформации slanted.
>Если нужно нарисовать, скажем, пирамиду для учебника геометрии, то конечно можно обойтись и двумерными средствами (вручную вычислить проекцию на плоскость рисунка). Но сколько-нибудь сложные поверхности так рисовать уже неудобно.
В MetaPost есть соответствующие расширения - то, что есть в примерах Asymptote я видел и в примерах MetaPost, причём трёхмерия была гораздо сложнее. Но в любом случае для рисования поверхностей надо выбирать другие инструменты, которые для этого предназначены.
Просто нарисовать 3D тело это просто, отсечение невидимых частей уже сложнее - и то, и другое реализовано в MetaPost через расширения. Далее уже следуют отражения, расстановка источников света и тому подобное - но для этого уже векторные рисовалки не годятся.
>В Asymptote своя прелесть - удобная объектная модель и более простая расширяемость
Очень спорное утверждение. На текущий момент MetaPost не просто прост - он очень прост (не путать с тривиален) - один человек вполне может освоить весь код программы за конечный промежуток времени. MetaPost при желании легко изменяется и расширяется. MetaPost'у не хватает человека уровня Лампорта и К, который бы стал собирать пакета для него, как это было сделано для TeX.
> На текущий момент MetaPost не просто прост - он очень прост
На вкус и на цвет, конечно, но Asymptote мне показался проще. Или же мне достаточно тех высокоуровневых средств, которые Asymptote предлагает, а аналоги для Metapost я искать не пробовал.
Я немного не то имел в виду: относительно просто модифицировать сам MetaPost и основные макрорасширения к ниму - это под силу одному человеку.
По поводу языка - он не сложнее того, что есть Asymptote - зато в отличии от топика при некотором развитии навыков MetaPost позволяет значительно сокращать размер кода картинок.
Код Asymptote можно один в один перенести в код MetaPost, а вот обратное неверно - код придётся удлинять.
Синтаксис Asymptote притягивает своей "знакомостью" - это как называть ttf шрифты от M$ хорошими, хотя они просто знакомые.