我有2个多边形,一个是凸面,另一个是凸面或凹面。这些多边形上的顶点逆时针排序。
for(int i = 0; i < sorted.Count; i++)
{
Vector2 start1 = sorted[i];
Vector2 end1 = sorted[(i + 1) % sorted.Count];
for(int j = 0; j < otherPolygon.Count; j++)
{
Vector2 start2 = otherPolygon[j];
Vector2 end2 = otherPolygon[(j + 1) % otherPolygon.Count];
Vector2 intersection = Intersection(start1, end1, start2, end2);
if (!float.IsPositiveInfinity(intersection.x))
{
intersections.Add(intersection);
}
}
}
使用这个循环我可以找到边的交点。问题在于,根据凸多边形的位置,我找到交点的顺序会发生变化。有没有办法保证交叉点始终以相同的顺序找到?
编辑: 示例案例 - 2多边形A(代码中的排序数组)和B(代码中的otherPolygon数组)。 A是静态的,可以是凹的。 B在四处移动并且总是凸起的。
如果B位于A的右侧并且相交,则按顺时针顺序找到交点。如果B在左侧,则以逆时针顺序找到交叉点。