Как я могу нарисовать кривую, толщина которой меняется по пути?

Я собираю данные с планшета, используя Java (библиотека JPen), и хотел бы иметь возможность рисовать штрихи пера более естественным образом.

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

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

Правильно?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
1 275
3

Ответы 3

PostScript RIP часто преобразует круги в кривые, а кривые - в серию отрезков прямых линий. Количество сегментов зависит от настройки плоскостности, которая по умолчанию соответствует разрешению растрового изображения.

Толстую линию или сегменты толстой линии можно преобразовать в многоугольник с тонкой заливкой.

Я никогда этого не делал, но вот пара вещей, которые вы могли бы попробовать. Во-первых, вы можете реализовать собственный Гладить, который создает тонкие трапеции. Ширина торцевых заглушек будет функцией давления в конечных точках. Если это сработает, вы можете попытаться сделать линейные сегменты более естественными, используя Кривые Безье для формирования «кривых трапеций». Возможно, вы сможете использовать QuadCurve2D, чтобы помочь.

По крайней мере, есть более общее решение. Эта функция была добавлена ​​в Inkscape на основе последний алгоритм. Вы можете увидеть, как он применяется непосредственно к вашей проблеме в несколько скриншотов. Он может выдавливать любую кисть формы по пути, чтобы, например, имитировать кисть, но вам придется перенести ее на Java из алгоритма в первой ссылке или из источников Inkscape. Кроме того, он защищен патентами, поэтому вам придется выпустить свой код под GPL (автор дает явное разрешение) или купить патентную лицензию.

Другие вопросы по теме