Java2D 更快的区域替代方案

Java2D faster Area alternative

我将 Java2D 与 apache batik 结合使用来绘制一些相当大的 svg 图像。

到目前为止它运行良好,但我对区域的性能感到失望。特别是,我想完成三件事:

  1. 将一堆碰撞形状合并到一个大区域
  2. 从一个大区域中删除一堆形状
  3. 检查碰撞形状

天真地,第 1 点和第 2 点可以用 Area.addArea.subtract 来完成。 这可行,但在一般用例中很容易花费 20 分钟。

第3点可以通过将面积彼此相减并检查剩余面积来完成。仍然很慢,但可以通过使用一些先前的空间散列或类似的东西来加快速度以供使用。

有没有更好更快的方法merge/subtract Java2D领域? 如果没有,是否有另一个库可以更快地完成这类事情?

不幸的是,像 JOGL 或 LWJGL 这样的库不能在像 svg-paths 或 Java2D Paths 这样的分辨率独立 space 上工作。

你可以试试这个:AreaX

据作者介绍:

The AreaX class is intended to achieve exactly the same visual results as the Area class. However several possible optimizations have been carefully implemented to reach those results faster.