Как стать автором
Обновить

Комментарии 18

Отличная работа! Рад что получили приглашение.

Спасибо! Давно уже собирался написать, но всё как-то руки не доходили.

Великолепная библиотека! Надеюсь, у Вас когда-нибудь найдётся время написать серию статей о MetaPost.

Спасибо! С одной стороны я сам никогда не испытывал недостатка в материалах про MP, не знаю что можно добавить, а с другой — тут и правда на эту тему почти ничего нет, так что может и попробую при случае.
При написании диплома на LaTeX, тоже пришёл к выводу, что неплохо бы векторную графику генерировать процедурно. Разные варианты рассматривал, в т.ч. SVG, но в итоге написал небольшую библиотечку на PostScript и заодно познакомился со стековыми языками.
Результат радует. Для чёрно-белых иллюстраций в самый раз.
Это просто прекрасно. Удивительные результаты получаются, когда в человеке навыки программирования сочетаются с чувством вкуса. Можно использовать в качестве демонстрации плюсов процедурного генерирования изображений. Хотя, конечно, Питон бы тут подошел лучше, хотя бы из-за того, что его все знают.

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

Спасибо. Не знаю насчет вкуса и навыков, но привычные инструменты временами действительно очень уж диктуют правила. Уверен, есть полно примеров процедурно-сгенерированной графики и на питоне, но в данном случае слабо себе представляю с какой стороны его было бы легко прикрутить.
У MetaPost есть куда более удобный конкурент — Asymptote. Рекомендую поглядеть и его.
Asymptote и правда выглядит очень интересно, даже подумывал о том, чтобы переписать все на нем вместо MP. В защиту последнего могу только отметить, что его архаичность вполне гармонирует с решаемой задачей.
так что это отдельный тип шара
… а именно шланг переменной ширины с поперечной штриховкой?
Если я правильно понял о чем речь, то нет, не совсем. Действительно, у шланга (что с продольной, что с поперечной штриховкой) может быть любая огибающая, включая полукруг, и тогда получится примерно шар. Но поперечная штриховка бывает только отрезками прямой, тогда как «настоящий» шар можно по-всякому вращать. То есть, в одном крайнем положении (0 градусов) его можно имитировать шлангом, в другом (90 градусов) обычным шаром из концентрических кругов, но посередине — нечем.
Так библиотека работает только в плоскости?
Тогда да, согласен
толщины линий у которых определяются функцией от освещенности шара в точках, через которые линии проходят

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

Иллюстрации просто супер! Только поверил, что не всё потеряно у современных учебников - а вы пишите, что он так и не вышел...

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории