Я использую Java2D в сочетании с apache батиком для рисования некоторых довольно больших SVG-изображений.
Пока что это работает довольно хорошо, но я разочарован производительностью областей. В частности, у меня есть три вещи, которые я хочу выполнить sh:
- объединить несколько сталкивающихся фигур в одну большую область
- удалить группу фигур из одной большой области
- проверка на сталкивающиеся формы
наивно, точки 1 и 2 могут быть выполнены с помощью Area.add
и Area.subtract
. Это работает, но может легко занять до двадцати минут в среднем случае использования.
Точка 3 может быть достигнута путем вычитания областей друг от друга и проверки оставшейся области. Все еще медленный, но может быть ускорен для использования с помощью некоторого предшествующего пространственного хеширования или чего-то подобного.
Есть ли лучший и более быстрый способ объединения / вычитания областей Java2D? Если нет, есть ли другая библиотека, которая может делать такие вещи быстрее?
к сожалению, библиотеки, такие как JOGL или LWJGL, не работают в пространстве, не зависящем от разрешения, таком как svg-paths или Java2D Paths.