C# 二维多边形裁剪
我有两个多边形,一个总是凸的,另一个可以是凸的或凹的。这些多边形上的顶点按逆时针方向排序C# 二维多边形裁剪,c#,unity3d,C#,Unity3d,我有两个多边形,一个总是凸的,另一个可以是凸的或凹的。这些多边形上的顶点按逆时针方向排序 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++) {
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);
}
}
}
for(int i=0;i
使用这个循环,我可以找到边的交点。问题在于,根据凸多边形所在的位置,查找交点的顺序会发生变化。有没有办法保证交点总是以相同的顺序找到
编辑:
例-
2个多边形A(代码中的排序数组)和B(代码中的其他多边形数组)。A是静态的,可以是凹面的。B在移动,并且总是凸的
如果B位于A的右侧并相交,则按顺时针顺序找到交点。如果B在左边,交叉点按逆时针顺序排列。你能更详细地描述一下“相同顺序”的交叉点是什么意思吗?如果位置不同,则交点也不同。相同的顺序是否表示沿凸多边形(测试多边形)顺时针/逆时针方向,或者完全不同的东西,比如它们应该按照交叉点本身的
Vector2
值来排序?@Foggzie我写了一个例子,其中的问题是,你能更详细地描述一下交叉点的“相同顺序”吗?如果位置不同,则交点也不同。相同的顺序是否意味着沿着凸多边形、测试多边形或完全不同的东西顺时针/逆时针方向排列,就像它们应该按照交点本身的Vector2
值进行排序一样?@Foggzie I写了一个例子来说明这个问题