Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 17.3.2011, 10:46 |
да, я тоже уже убедился в этом ![]() |
|
Y | Дата 16.3.2011, 14:08 |
Действительно работает! проверено для вогнутых и выпуклых полигонов! Спасибо! Вот получил ответ на одном из форумов: >> "Математика и САПР", Москва, "Мир", 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 |
Вот получил ответ на одном из форумов: >> "Математика и САПР", Москва, "Мир", 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, 13:37 |
это ЧС, но с самопересечением. Их быть не должно - это уже два разных полигона 1-2-3-10-1 это ЧС 10-4-5-6-7-8-9-10 это !ЧС |
|
ufna | Дата 24.12.2010, 11:37 |
Вот изображение в приложении - так по ЧС или против ЧС? | |
Алексей1153 | Дата 24.12.2010, 10:33 |
ufna, это условно. Главное - знак различить. Например, условно по ЧС - это вокруг некой мысленной точки задаёшь стороны полигона. При этом могут быть и петли, но общий "момент" радиус вектора - всё равно по ЧС соответственно, против ЧС - всё то же самое, но зеркально ufna, а зачем это нужно - от направления обхода зависит знак вектора нормали полигона |
|
ufna | Дата 24.12.2010, 10:28 |
Вопрос - а что есть "по часовой"? Я понимаю это для выпуклых и там достаточно просто посчитать, но вот "в общем" просто не знаю как это в принципе понимать ![]() |
|
Алексей1153 | Дата 24.12.2010, 10:25 |
Iron Bug, арифметический центр тоже не подойдёт, я так понимаю ? Ведь он может оказаться вне полигона. Что посоветуешь ? ) | |
Iron Bug | Дата 24.12.2010, 10:16 |
для вогнутых многоугольников твой метод работать не будет. точнее, не всегда. центр отсчёта векторов должен быть внутри многоугольника | |
Алексей1153 | Дата 24.12.2010, 8:25 |
Имеется вот такая задача: определить направление (по ЧС или против ЧС), в котором были введены вершины полигона. Собственно, нужено чётко различить знак, а само понятие направления тут довольно условно. Вводится полигон так: мышью щёлкаем по окну, вводя последовательно точки-вершины. Я по своим догадкам попытался решить так (но, видимо, неправильно): беру первую вершину в качестве начала всех радиус-векторов, затем считаю сумму векторных произведений для всех смежных пар векторов по очереди. Каждый вектор суммы имеет знак в зависимости от направления вращения первого вектора ко второму, а чтобы не учитывалась длина исходных векторов, вектор-результат для каждой пары делится на произведение их модулей - как-будто полигон состоит из единичных векторов (хотя, не полностью уверен, что правильно так поступать). Все значения векторных произведений суммирую, получается итоговый "момент", по его знаку различаю направление ввода полигона алгоритм , похоже, неверный, так как правильно знак определяется через раз опять же, что делать с вершинами, совпавшими с первой. Сейчас я их просто игнорирую при суммировании вот код: Раскрывающийся текст
Подскажите, кто знает, по какому алгоритму определить направление ввода полигона |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 13.2.2025, 11:32 |