顺时针排序

时间:2017-11-07 15:07:57

标签: c# sorting unity3d

我需要按顺时针顺序对点数组进行排序。

我有这个比较器:

 public static int isClockWise(Vector2 first, Vector2 second)
{
    if (first == second) return 0;

    float angle1 = Mathf.Atan2(first.x, first.y);
    float angle2 = Mathf.Atan2(second.x, second.y);

    if (angle1 < angle2)
        return 1;

    if (angle1 > angle2)
        return -1;

    // Check to see which point is closest
    return (first.sqrMagnitude < second.sqrMagnitude) ? 1 : -1;
}

这适用于我的大部分目的。但我有一个特例。我有2个特殊要点。我需要1在列表的开头,另一个在列表的末尾。如何以顺时针方式对点列表进行排序,使得我的2个特殊点最终会出现在列表的开头和结尾?

0 个答案:

没有答案