Используя Java 2D, я скрепил несколько кривых Безье (CubicCurve2D
) вместе, чтобы создать «блоб». Проблема, с которой я сейчас сталкиваюсь, заключается в следующем:
- Эффективно заполните шарик заданным цветом.
- Эффективно определить, находится ли данная точка внутри капли.
Я заметил, что CubicCurve2D
реализует Shape
, который предоставляет многочисленные contains
методы для определения "внутренности" и что Graphics2D
способен заполнить Shape
через fill(Shape)
(который, я считаю, использует Shape
s getPathIterator
способов сделать это).
Учитывая это, я надеялся, что смогу создать составной Shape
, в результате чего мой метод getPathIterator(AffineTransform)
просто свяжет базовые PathIterator
вместе. Тем не менее, это производит NoSuchElementException
, как только моя форма содержит более одного CubicCurve2D
. Даже если мне удастся добиться этого, я не уверен, что это будет работать так, как ожидалось, потому что CubicCurve2D
всегда заполнено на выпуклой стороне, а мой «шарик» состоит из вогнутых и выпуклых кривых. Проблема «содержит» еще сложнее, так как точка может на законных основаниях находиться внутри объекта, но не внутри какой-либо отдельной кривой.
- Правильно ли я подхожу к этой проблеме (пытаюсь реализовать
Shape
?) Или есть идиоматический способ сделать это, о котором я не знаю? Я бы подумал, что проблема составления геометрических фигур будет довольно распространенной.
- У кого-нибудь есть предложения по решению этой проблемы?
Заранее спасибо.