我一直试图找到一个算法来计算两个三角形的交叉区域,但我找不到任何三角形。任何人都可以提供如何编写此算法的线索吗?
我想要像:
double getAreaOfIntersection(Vector2 p1,Vector2 p2, Vector2 p3,Vector2 p4,Vector2 p5,Vector2 p6 )
其中pX代表2个三角形。
答案 0 :(得分:4)
您可以首先通过裁剪算法计算描述交叉区域的多边形,例如:
然后你会计算得到的凸多边形的面积,这很容易,参见,例如:
答案 1 :(得分:1)
确定一个点位于给定多边形内是否容易(对三角形来说更容易,因为它们是简单的多边形)。您可以使用绕组数算法(以及简单多边形的交叉数算法),该算法已经实现并得到了很好的解释here。
使用此方法可以获得交叉点多边形的所有顶点:
你需要遍历你的边缘以找到所有的交叉点,所以这应该足够快,只要你只想确定三角形的交点,但我不建议尝试以这种方式找到任意多边形的交点