Комментарии 16
Отличная работа! Рад что получили приглашение.
+7
Великолепная библиотека! Надеюсь, у Вас когда-нибудь найдётся время написать серию статей о MetaPost.
+2
При написании диплома на LaTeX, тоже пришёл к выводу, что неплохо бы векторную графику генерировать процедурно. Разные варианты рассматривал, в т.ч. SVG, но в итоге написал небольшую библиотечку на PostScript и заодно познакомился со стековыми языками.
0
Результат радует. Для чёрно-белых иллюстраций в самый раз.
+2
Это просто прекрасно. Удивительные результаты получаются, когда в человеке навыки программирования сочетаются с чувством вкуса. Можно использовать в качестве демонстрации плюсов процедурного генерирования изображений. Хотя, конечно, Питон бы тут подошел лучше, хотя бы из-за того, что его все знают.
+3
Питон хорош, но тут важна интеграция в латех на уровне кода. По крайней мере пока были намерения писать учебник в латехе.
+1
Спасибо. Не знаю насчет вкуса и навыков, но привычные инструменты временами действительно очень уж диктуют правила. Уверен, есть полно примеров процедурно-сгенерированной графики и на питоне, но в данном случае слабо себе представляю с какой стороны его было бы легко прикрутить.
0
У MetaPost есть куда более удобный конкурент — Asymptote. Рекомендую поглядеть и его.
+1
так что это отдельный тип шара… а именно шланг переменной ширины с поперечной штриховкой?
0
Если я правильно понял о чем речь, то нет, не совсем. Действительно, у шланга (что с продольной, что с поперечной штриховкой) может быть любая огибающая, включая полукруг, и тогда получится примерно шар. Но поперечная штриховка бывает только отрезками прямой, тогда как «настоящий» шар можно по-всякому вращать. То есть, в одном крайнем положении (0 градусов) его можно имитировать шлангом, в другом (90 градусов) обычным шаром из концентрических кругов, но посередине — нечем.


0
толщины линий у которых определяются функцией от освещенности шара в точках, через которые линии проходят
Как вычисляется освещённость в точке в общем случае со шлангом?
0
Предполагается, что соответствующие точки на огибающих с той и с другой стороны шланга соединены окружностью, с центром на оси шланга, лежащей в плоскости перпендикулярной оси. Профиль огибающей шланга хранится в отдельной кривой, идущей вдоль горизонтали. Положение на окружности (то есть, между двумя огибающими); угол, под которым идет ось шланга в центре окружности; и угол, под которым меняет толщину огибающая, передаются функции, которая пересчитывает углы на шланге в абсолютные углы. Получается угол нормали к поверхности шланга в точке. Этот угол передается функции, которая делает из него освещенность. Последняя использует еще глобальную переменную
Если нужно, могу как-нибудь в доки включить описание того, как всё это работает с картинками (сомневаюсь, что в ближайшее время, правда), но, честно говоря, не думаю, что там есть что-то особенно интересное.
lightDirection
, определяющую направление света. Кроме угла, angleToLightness
принимает «глубину», которая позволяет определить, находится ли данная точка в тени (если тени включены). Конкретный способ перевода углов в освещенность я подбирал на глаз, но его нетрудно менять по мере необходимости.Если нужно, могу как-нибудь в доки включить описание того, как всё это работает с картинками (сомневаюсь, что в ближайшее время, правда), но, честно говоря, не думаю, что там есть что-то особенно интересное.
+2
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Всякие штуки в MetaPost