Самая сложная фигура, поддерживаемая Java2D API, — это отрезок Безье. Предположим, я хочу нарисовать рациональный сегмент (каждая контрольная точка имеет вес, и вся формула рендеринга немного отличается).
Как это сделать?
Можно ли расширить движок рендеринга, чтобы он мог рисовать более сложные фигуры?
ОБНОВЛЕНИЕ
Обычный способ реализации пользовательской фигуры — это реализация Shape
. интерфейс. Этот интерфейс имеет ключевые методы для возврата PathIterator
пока PathIterator
перебирает типы сегментов. Всего 5 типов сегментов. Самый изогнутый из них — SEG_CUBICTO
, которая представляет собой стандартную кривую Безье с 4 контрольными точками (в том числе 2 для начала и конца).
Если я применяю линейно-дробное преобразование к кривой Безье, каждая контрольная точка получает вес в качестве дополнения к своим координатам, и кривая Безье превращается в NURBS (не уверен в этом, не смог выучить точную терминологию). В любом случае, формула кривой отличается от Безье.
Shape
, поэтому я могу сказать, что это путь, если вы хотите что-то сложное и индивидуальное. - person user902383   schedule 18.11.2013Shape
возвращаетPathIterator
, аPathIterator
возвращает только фиксированное количество типов сегментов, самым сложным из которых являетсяSEG_CUBICTO
docs.oracle.com/javase/7/docs/api/java/awt/geom/ - person Suzan Cioc   schedule 18.11.2013Shape
должна преобразовывать кривую в последовательность линий, четырехугольников или кубических кривых. Но при наличии достаточно коротких строк нет никакой разницы в поточечной итерации. - person Holger   schedule 19.11.2013Shape
». - person Holger   schedule 20.11.2013MP3
, добавив некоторые классы в путь к классам и определив некоторые строковые соответствия. Я подумал, что здесь тоже можно подключить пользовательские рендереры... - person Suzan Cioc   schedule 20.11.2013