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

游戏中视图

注意:使用下面的hashmap,我根据每个“对象”将瓷砖形状呈现到视图区域,在本例中是不同的图像类型:海洋、草、黑石、岩石、沙子和污垢.
LinkedHashMap<Point, LinkedHashMap<Object, Path2D.Double>>编辑:每种图像类型都有自己的整个地图区域,即10000 as乘以1000px--我的相交块是100 as乘100 as,它们逐点插入链接的散列映射,作为给定的Path2D.Double类型,并由当前查看区域中的点呈现到屏幕上。
发布于 2014-05-29 22:15:44
目前还不清楚您使用的是哪个SDK提供了Area.intersect()。但是,这可能是一个复杂的问题--注意,与多边形相交的path2D可能会变成几条路径!
但是,有一些已知的算法可以将路径与多边形相交,例如赛勒斯-贝克或萨瑟兰-科恩。
我在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
一旦实现了这两种方法,就需要将其应用于路径中的每一行,以获得与正方形相交的新行列表。
https://stackoverflow.com/questions/23943868
复制相似问题