jak zamówić wierzchołki w wielokątu nie wypukłym (jak znaleźć jedno z wielu rozwiązań)

Mam taki sam problem jak tutaj: Jak zamówić wierzchołki w prostym, Nie wypukłym wielokątu ale nie ma rozwiązań, z których mógłbym skorzystać.

Mam współrzędne punktów i muszę znaleźć jakiś wielokąt. Nie ma znaczenia, że jest więcej rozwiązań dla jednej listy kropek. Potrzebuję jakiegoś algorytmu, żeby znaleźć jednego z nich. Nieważne, który. Naprawdę Nie wiem, jak to rozwiązać.

(zapisałem współrzędne w tablicy i chcę użyć jakiegoś algorytmu w Javascript)

Wielkie dzięki.

Author: Community, 2013-10-31

1 answers

Najpierw znajdź środek obwiedni, która zawiera wszystkie wierzchołki. Nazywamy to punktem C.

Posortuj listę wierzchołków na podstawie kąta każdego punktu względem C. możesz użyć atan2(point.y - C.y, point.x - C.x) aby znaleźć kąt. Jeśli dwa lub więcej wierzchołków ma ten sam kąt, ten bliżej C powinien być pierwszy.

Następnie narysuj punkty w kolejności, w jakiej pojawiają się na liście. Skończysz z wzorcem odpalenia, który nie jest przecinający się i prawdopodobnie nie jest wypukły. Przykład:

100 punktów losowo umieszczonych na kwadracie 400x400 pikseli

 16
Author: Kevin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 19:35:58