1

我玩过 Area.intersect() 并且想知道是否有一种方法可以使用 Path2D 创建一个与此类似的方法,因为我注意到在使用 Path2D 作为形状时性能有所提升。换句话说,取大 Path2D 的一部分并从该部分创建一个较小的 Path2D。

地图绘制 地图绘制 游戏内视图 在游戏中

注意:使用下面的哈希图,我根据每个“对象”将平铺形状渲染到查看区域,在这种情况下,这些对象将是不同的图像类型:海洋、草、黑曜石、岩石、沙子和污垢......

LinkedHashMap<Point, LinkedHashMap<Object, Path2D.Double>>

编辑:每种图像类型都有自己的整个地图区域,即 10000 像素 x 100000 像素,我相交的图块是 100 像素 x 100 像素,这些图块作为其给定类型作为 Path2D.Double 逐点推入链接的哈希图并渲染到屏幕上通过当前查看区域中的点。

4

1 回答 1

1

目前尚不清楚您正在使用哪个 SDK 提供 Area.intersect()。但是,取决于您打算与路径相交的对象,这可能是一个复杂的问题 - 请注意,与多边形相交的 path2D 可能会变成多条路径!

但是,有一些已知的算法用于将路径与多边形相交,例如Cyrus-BeckSutherland-Cohen

我在 Java 中为 Cohen-Sutherland 找到了这段代码:

http://worldofenggcodes.blogspot.co.il/2013/10/cohen-sutherland-line-clipping-algorithm.html

这看起来不错,尽管您可能需要将代码提取到更可用的函数中。Cyrus-Beck 可能是一个更好的选择,虽然我只能找到伪代码:

http://www.moreprocess.com/computer-graphics/cyrus-beck-line-clipping-algorithm

一旦你实现了任何一个,你需要将它应用到你路径中的每一行,以获得一个与正方形相交的线的新列表。

于 2014-05-29T22:15:44.060 回答