我需要按顺时针顺序对点数组进行排序。
我有这个比较器:
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个特殊点最终会出现在列表的开头和结尾?