Определение winding'а полигона
Всем привет.
Имеется набор точек полигона (двумерного). Нужно определить, в какую сторону идёт последовательность - по часовой или против. Весь тырнет облуркал - толку ноль. Надеюсь на вас, булочники. |
Ответ: Определение winding'а полигона
Считаем угол от оси координат до N-ой точки, затем до (N+1)-ой. Через atan2. По дельте угла (и определившись с ориентацией осей) определяем направление обхода. Достаточно двух точек.
|
Ответ: Определение winding'а полигона
Цитата:
|
Ответ: Определение winding'а полигона
Помоему вычислять угол намного трудоемкая (в вычислительном плане) задача нежели вычислить тупо знаковую площадь (а еще быстрее удвоенную)
Допустим (x1,y1) (x2,y2) (x3,y3) 2S = (y2+y1)*(x2-x1) + (y3+y2)* (x3-x2) + (y1+y3)*(x1-x3) Если 2S>0 то по часовой, иначе против Ап: ссори понял что там полигон. Аналогично можно обобщить, только сумма будет не из трех а из N. АпАп: А полигон может быть не выпуклый, и нужно для каждых трех точек определить как крутит, то начальный вариант. для общего направление вращения подсчет всей площади |
Часовой пояс GMT +4, время: 11:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot