计算两个三角形的交叉区域

时间:2015-05-18 10:38:02

标签: algorithm math geometry computational-geometry

我一直试图找到一个算法来计算两个三角形的交叉区域,但我找不到任何三角形。任何人都可以提供如何编写此算法的线索吗?

我想要像:

  double getAreaOfIntersection(Vector2 p1,Vector2 p2, Vector2 p3,Vector2 p4,Vector2 p5,Vector2 p6 )

其中pX代表2个三角形。

2 个答案:

答案 0 :(得分:4)

您可以首先通过裁剪算法计算描述交叉区域的多边形,例如:

Sutherland-Hodgman algorithm

然后你会计算得到的凸多边形的面积,这很容易,参见,例如:

Area of a Convex Polygon

答案 1 :(得分:1)

确定一个点位于给定多边形内是否容易(对三角形来说更容易,因为它们是简单的多边形)。您可以使用绕组数算法(以及简单多边形的交叉数算法),该算法已经实现并得到了很好的解释here

使用此方法可以获得交叉点多边形的所有顶点:

你需要遍历你的边缘以找到所有的交叉点,所以这应该足够快,只要你只想确定三角形的交点,但我不建议尝试以这种方式找到任意多边形的交点