![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Алексей1153 |
![]()
Сообщение
#1
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Имеется вот такая задача: определить направление (по ЧС или против ЧС), в котором были введены вершины полигона. Собственно, нужено чётко различить знак, а само понятие направления тут довольно условно. Вводится полигон так: мышью щёлкаем по окну, вводя последовательно точки-вершины. Я по своим догадкам попытался решить так (но, видимо, неправильно): беру первую вершину в качестве начала всех радиус-векторов, затем считаю сумму векторных произведений для всех смежных пар векторов по очереди. Каждый вектор суммы имеет знак в зависимости от направления вращения первого вектора ко второму, а чтобы не учитывалась длина исходных векторов, вектор-результат для каждой пары делится на произведение их модулей - как-будто полигон состоит из единичных векторов (хотя, не полностью уверен, что правильно так поступать). Все значения векторных произведений суммирую, получается итоговый "момент", по его знаку различаю направление ввода полигона
алгоритм , похоже, неверный, так как правильно знак определяется через раз опять же, что делать с вершинами, совпавшими с первой. Сейчас я их просто игнорирую при суммировании вот код: Раскрывающийся текст
Подскажите, кто знает, по какому алгоритму определить направление ввода полигона Сообщение отредактировал Алексей1153 - 24.12.2010, 8:25 |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Вот получил ответ на одном из форумов:
>> "Математика и САПР", Москва, "Мир", 1988, стр. 15: Знак площади зависит от направления обхода контура. В правой системе координат положительный знак указывает направление против часовой стрелки. Площадь полигона A = ( S(xi*yi+1 - xi+1*yi) + xN*y1 - x1*yN)/2 Знак S означает "сумма по i от 1 до N-1". PS на первый и второй взгляд - работает ![]() Сообщение отредактировал Алексей1153 - 24.12.2010, 20:50 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.3.2025, 23:55 |