【发布时间】:2012-10-19 11:23:34
【问题描述】:
我正在寻找有关如何快速计算两个任意方向四边形的交集的大纲(没有预设角角或边长限制)。我不只是想简单地检查它们是否相交,但希望得到构成结果相交区域的点。我知道通常多边形相交不是一个小问题,并且有一些可用的库可以做得很好。
但由于在这种特殊情况下我只关心四个边的形状,我想知道是否有一种快速方法可以使用,而无需在我的应用程序中包含整个额外的库。
到目前为止,我想到的是:
- 在两个形状上相对于彼此运行“多边形中的点”
- 将每个多边形的每条边彼此相交
上述两个步骤是否最终让我得到了构成结果交叉区域的所有点?有没有更好的方法使用?
如果我能得到构成结果区域的点的正确顺序,那将是 nice。这不是强制性的——如果你知道任何聪明/快速的方法来做这件事(凸壳?)我会很感激任何建议。
【问题讨论】:
-
四边形是一种特殊情况(IIRC 你总是可以把它们分成两个三角形,即使是凹的)所以一个通用的算法可能是矫枉过正的。
-
请注意,结果不一定是四边形。如果输入是非凸的,您可能会得到两个不连通的四边形。如果它们是凸的,你可能仍然会得到一个六边形的结果。