Java2D быстрее Альтернатива области - PullRequest
1 голос
/ 30 апреля 2020

Я использую Java2D в сочетании с apache батиком для рисования некоторых довольно больших SVG-изображений.

Пока что это работает довольно хорошо, но я разочарован производительностью областей. В частности, у меня есть три вещи, которые я хочу выполнить sh:

  1. объединить несколько сталкивающихся фигур в одну большую область
  2. удалить группу фигур из одной большой области
  3. проверка на сталкивающиеся формы

наивно, точки 1 и 2 могут быть выполнены с помощью Area.add и Area.subtract. Это работает, но может легко занять до двадцати минут в среднем случае использования.

Точка 3 может быть достигнута путем вычитания областей друг от друга и проверки оставшейся области. Все еще медленный, но может быть ускорен для использования с помощью некоторого предшествующего пространственного хеширования или чего-то подобного.

Есть ли лучший и более быстрый способ объединения / вычитания областей Java2D? Если нет, есть ли другая библиотека, которая может делать такие вещи быстрее?

к сожалению, библиотеки, такие как JOGL или LWJGL, не работают в пространстве, не зависящем от разрешения, таком как svg-paths или Java2D Paths.

1 Ответ

1 голос
/ 05 мая 2020

Вы можете попробовать это: AreaX

По мнению автора:

Класс AreaX предназначен для достижения в точности тех же визуальных результатов, что и Area учебный класс. Однако несколько возможных оптимизаций были тщательно реализованы для достижения этих результатов быстрее.

...