Здравствуйте, гость ( Вход | Регистрация )
|
Алексей1153 |
24.12.2010, 8:25
Сообщение
#1
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
Имеется вот такая задача: определить направление (по ЧС или против ЧС), в котором были введены вершины полигона. Собственно, нужено чётко различить знак, а само понятие направления тут довольно условно. Вводится полигон так: мышью щёлкаем по окну, вводя последовательно точки-вершины. Я по своим догадкам попытался решить так (но, видимо, неправильно): беру первую вершину в качестве начала всех радиус-векторов, затем считаю сумму векторных произведений для всех смежных пар векторов по очереди. Каждый вектор суммы имеет знак в зависимости от направления вращения первого вектора ко второму, а чтобы не учитывалась длина исходных векторов, вектор-результат для каждой пары делится на произведение их модулей - как-будто полигон состоит из единичных векторов (хотя, не полностью уверен, что правильно так поступать). Все значения векторных произведений суммирую, получается итоговый "момент", по его знаку различаю направление ввода полигона
алгоритм , похоже, неверный, так как правильно знак определяется через раз опять же, что делать с вершинами, совпавшими с первой. Сейчас я их просто игнорирую при суммировании вот код: Раскрывающийся текст Подскажите, кто знает, по какому алгоритму определить направление ввода полигона Сообщение отредактировал Алексей1153 - 24.12.2010, 8:25 |
|
|
|
![]() |
|
ufna |
24.12.2010, 10:28
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5
|
Вопрос - а что есть "по часовой"? Я понимаю это для выпуклых и там достаточно просто посчитать, но вот "в общем" просто не знаю как это в принципе понимать
|
|
|
|
Алексей1153 Направление ввода полигона 24.12.2010, 8:25
Iron Bug для вогнутых многоугольников твой метод работать н... 24.12.2010, 10:16
Алексей1153 Iron Bug, арифметический центр тоже не подойдёт, я... 24.12.2010, 10:25
Алексей1153 ufna, это условно. Главное - знак различить. Напри... 24.12.2010, 10:33
ufna Вот изображение в приложении - так по ЧС или проти... 24.12.2010, 11:37
Алексей1153 это ЧС, но с самопересечением. Их быть не должно -... 24.12.2010, 13:37
Алексей1153 Вот получил ответ на одном из форумов:
>>
... 24.12.2010, 20:50
Y Действительно работает! проверено для вогнутых... 16.3.2011, 14:08
Алексей1153 да, я тоже уже убедился в этом 17.3.2011, 10:46![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 4.1.2026, 14:25 |