首页 文章

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

提问于
浏览
-1

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

我想要像:

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

其中pX代表2个三角形 .

2 回答

  • 4

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

    Sutherland-Hodgman algorithm

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

    Area of a Convex Polygon

  • 1

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

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

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

相关问题