如何在两个(或更多)3D平面多边形之间找到交点(对于最简单的情况,它们都是凸的)? 寻求算法能够提供交叉线,如果有的话。 请注意,为无限平面平面情况提出的方法没有用。
答案 0 :(得分:3)
有两种情况:
两个多边形都位于同一平面上。
查找第一个多边形的所有内部点。
任意取第一个多边形,遍历第二个多边形的所有顶点,并确定它们是位于第一个多边形的内部还是外部。凸多边形很容易做到这一点:请参阅here。
查找2个多边形之间的交叉点
要找到交点,请获取其中一个多边形的每条边,并遍历另一个多边形的所有边,以查找它们是否在任何位置相交。这可以通过使用intersection of 2 lines的公式找到。
交叉区域是在内部点和交叉点处形成顶点的多边形。
2个多边形位于不同的平面上。
找到第二个多边形与第一个多边形平面的交点。您可以通过考虑第二个多边形的每个边,并找到边和第一个多边形的平面之间的交点来完成此操作。这可以使用line and a plane。
之间的交集公式找到检查您找到的交叉点是否位于第一个多边形的内部或外部。
答案 1 :(得分:1)
这是一种方法。通过将一个多边形旋转到XY平面,可以将3D问题简化为2D问题(主要是),并且通常不会出现太多的性能问题。
将这种方法扩展到非凸多边形是留给练习者的练习。 :)(实际上非常简单。)
检查点是否在2D多边形内部的一种方法是从该点向上与多边形的所有边相交。 0或2:外面。 1:里面。 (这也适用于外部和内部使用偶数和奇数的非凸多边形。)
答案 2 :(得分:0)
对于两个多边形共面的情况,这里至少是这种特殊情况的解决方案:
http://www.iro.umontreal.ca/~plante/compGeom/algorithm.html
它甚至有一个很好的小程序显示算法。