Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование в широком смысле слова > Математика

Математика Методы математического моделлирования, программирование математических концепций, роль математики в создании игр

Ответ
 
Опции темы
Старый 03.12.2013, 11:20   #1
Кирпи4
Социал-сычевист
 
Аватар для Кирпи4
 
Регистрация: 24.06.2011
Сообщений: 605
Написано 338 полезных сообщений
(для 1,332 пользователей)
Определение winding'а полигона

Всем привет.
Имеется набор точек полигона (двумерного). Нужно определить, в какую сторону идёт последовательность - по часовой или против.
Весь тырнет облуркал - толку ноль. Надеюсь на вас, булочники.
__________________


(Offline)
 
Ответить с цитированием
Старый 03.12.2013, 11:33   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,920 пользователей)
Ответ: Определение winding'а полигона

Считаем угол от оси координат до N-ой точки, затем до (N+1)-ой. Через atan2. По дельте угла (и определившись с ориентацией осей) определяем направление обхода. Достаточно двух точек.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Кирпи4 (03.12.2013)
Старый 03.12.2013, 14:21   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,505
Написано 2,960 полезных сообщений
(для 5,247 пользователей)
Ответ: Определение winding'а полигона

Сообщение от impersonalis Посмотреть сообщение
Достаточно двух точек.
Наверное не всегда, если у них угол одинаковый будет? Скорее надо взять AB и AC вектора в треугольнике ABC.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (03.12.2013)
Старый 09.12.2013, 17:24   #4
genroelgvozo
Нуждающийся
 
Регистрация: 08.05.2008
Сообщений: 87
Написано 9 полезных сообщений
(для 15 пользователей)
Ответ: Определение winding'а полигона

Помоему вычислять угол намного трудоемкая (в вычислительном плане) задача нежели вычислить тупо знаковую площадь (а еще быстрее удвоенную)
Допустим (x1,y1) (x2,y2) (x3,y3)
2S = (y2+y1)*(x2-x1) + (y3+y2)* (x3-x2) + (y1+y3)*(x1-x3)
Если 2S>0 то по часовой, иначе против

Ап: ссори понял что там полигон. Аналогично можно обобщить, только сумма будет не из трех а из N.
АпАп: А полигон может быть не выпуклый, и нужно для каждых трех точек определить как крутит, то начальный вариант. для общего направление вращения подсчет всей площади
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 03:16.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com