На первом изображении красная сфера находится в центре, а остальные сферы раскрашены по порядку.
На втором рисунке показано положение этих сфер в неправильном порядке.


Код: Выделить всё
private static Vector2[] SortClockwise(List vertices)
{
// calculate center
Vector2 center = Vector2.zero;
for (int i = 0; i < vertices.Count; i++)
{
center += vertices[i];
}
center /= vertices.Count;
// order by the angle to center
return vertices.OrderBy(point => Math.Atan2(point.x - center.x, point.y - center.y)).ToArray();
}
Верхний левый угол (красный: текущий индекс, синие линии: ожидание)
< img alt="верхний левый угол" src="https://i.sstatic.net/6J6zZfBM.png" />
Теперь я понимаю проблему вогнутости и, насколько я понимаю, могу предположим, что все выпуклые многоугольники расположены в правильном порядке, а вогнутые будут ложными?
Если я, например, возьму изображение 2 и проверю наличие вогнутых многоугольников и поменяю положение, если оно вогнутое (в зависимости от того, насколько я знаю какие позиции поменять местами)? или для более сложных форм будет больше проблем?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -clockwise
Мобильная версия