计算两个三角形的交点面积

calculate intersection area of two triangle

我一直在尝试寻找一种算法来计算两个三角形的相交面积,但我没有找到任何算法。任何人都可以提供如何编写此算法的线索吗?

我想要这样的东西:

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

其中 pX 代表 2 个三角形。

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

Sutherland-Hodgman algorithm

然后您将计算所得凸多边形的面积,这很容易,例如,请参见此处:

Area of a Convex Polygon

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

使用这个你可以获得交叉多边形的所有顶点:

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