【发布时间】:2013-01-14 19:34:33
【问题描述】:
我已经实现了一个函数来检查两个多边形 p1 和 p2 的重叠,以验证 p1 是否与 p2 重叠,该函数获取 p1 的每个边缘并测试它的一个点是否在 p2 内部而不是在边缘p2(他们可以共享一条边)。
这个函数工作得很好,问题是它被调用了一千次,它让我的程序非常慢,因为它必须逐点迭代每个边缘,我只检查 4 个多边形重叠的情况,它们是:
如果一个三角形与一个三角形重叠。
如果三角形与矩形重叠。
如果三角形与平行四边形重叠。
如果一个矩形与一个平行四边形重叠。
有没有更简单快捷的方法来检查这些重叠情况是否发生?
【问题讨论】:
-
您应该说明如果您搜索的是基于像素的算法,还是基于矢量的,您现在似乎是基于像素的。
-
如果寻找一个点意味着它是基于像素而不是基于像素。
-
一个点是一对坐标,可以是双精度类型:(3.545, 123.222) 像地理坐标,也就是地理点。或者可以是 int 类型,进一步的点可以限制为屏幕大小,或者可以由 Integer.MAX_VALUE 限制,这一切都会有所不同......
-
嗯,我使用双精度坐标。
-
您可以使用 double 避免每次从 integer 转换为 double ,但实际上它们是整数值(屏幕坐标?)或?