Как определить величину внутренних углов многоугольника?
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 10 май 2004, 22:12
- Репутация: 0
Как определить величину внутренних углов многоугольника?
Дан произвольный НЕВЫПУКЛЫЙ многоугольник c n вершинами.
Каждая вершина имеет координаты
P1(x1.y1), P2(x2,y2)...Pn(xn,yn)
Как определить величину внутренних углов при каждой вершине
Каждая вершина имеет координаты
P1(x1.y1), P2(x2,y2)...Pn(xn,yn)
Как определить величину внутренних углов при каждой вершине
-
- Участник
- Сообщения: 65
- Зарегистрирован: 29 окт 2003, 17:12
- Репутация: 0
- Откуда: Москва
- Контактная информация:
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 10 май 2004, 22:12
- Репутация: 0
Ведьмак, я с тобой полностью согласен, найти угол не проблема, если
многоугольник выпуклый, а если не выпуклый и некоторые внутринние углы превышают 180. Если знаеш как быть - посоветуй
То что для некоторых проще "пареной репы" для других -неразрешаемая проблема!!!
Таким образом, как ТЫ ответил, можно ответить на любой вопрос - возьми книгу почитай
многоугольник выпуклый, а если не выпуклый и некоторые внутринние углы превышают 180. Если знаеш как быть - посоветуй
То что для некоторых проще "пареной репы" для других -неразрешаемая проблема!!!
Таким образом, как ТЫ ответил, можно ответить на любой вопрос - возьми книгу почитай
-
- Участник
- Сообщения: 65
- Зарегистрирован: 29 окт 2003, 17:12
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Что ВЫ хотите от меня, как представителя форума? Готовую программу? Когда на форумах в качестве ответа приводят URL - это никого не обижает почему-то... Чем ВАС так задела ссылка на учебник геометрии? Ведь задача именно оттуда. И для "впуклых" многоугольников - тоже. Лично я не держу в голове всех формул из всех учебников. Посему точно таким же образом должен листать учебник в поисках решения.
Ведьмак
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 10 май 2004, 22:12
- Репутация: 0
Лично от Вас - ничего!
Первое, что я сделал, когда столкнулся с этой проблемой - проанализировал десяток учебников и справочников! Там только елементарй выпуклый многоугольник, а интерисуюющей меня информации о "впуклых", как Вы выразились, многоугольниках -как правило нет, поетому я и обратился за помощью на Форум!
Почему мой вопрос у Вас вызвал раздражение(я имею в виду ЕЛКИ-Моталки !!!), я так и не понял!
Олег К.
Первое, что я сделал, когда столкнулся с этой проблемой - проанализировал десяток учебников и справочников! Там только елементарй выпуклый многоугольник, а интерисуюющей меня информации о "впуклых", как Вы выразились, многоугольниках -как правило нет, поетому я и обратился за помощью на Форум!
Почему мой вопрос у Вас вызвал раздражение(я имею в виду ЕЛКИ-Моталки !!!), я так и не понял!
Олег К.
-
- Участник
- Сообщения: 65
- Зарегистрирован: 29 окт 2003, 17:12
- Репутация: 0
- Откуда: Москва
- Контактная информация:
-
- Участник
- Сообщения: 65
- Зарегистрирован: 29 окт 2003, 17:12
- Репутация: 0
- Откуда: Москва
- Контактная информация:
Поправка! Известны ВСЕ вершины полигона.
Соответственно, построив единичный отрезок по гипотенузе в любую из сторон мы имеем принадлежность конца данного отрезка полигону. Это только один из способов.
Также точно помню, что существуют именные алгоритмы (к сожалению не помню авторов), моделирующие именно этот аспект анализа многоугольников.
Соответственно, построив единичный отрезок по гипотенузе в любую из сторон мы имеем принадлежность конца данного отрезка полигону. Это только один из способов.
Также точно помню, что существуют именные алгоритмы (к сожалению не помню авторов), моделирующие именно этот аспект анализа многоугольников.
Ведьмак
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Поправьте меня, если что не так. Но что мешает посчитать все углы, по порядку по триплетам, со сдвигом на одну точку, с возвращением к первой а потом отобрать те, что нужны?
http://gis-lab.info/qa/aveazimuth.html
Ведьмак, ты не прав, если б ты знал, сколько времени я трачу на решение банальных задач, с удовольствием бы использовал готовые, но многим просто недосуг вникать в формулы...другое дело взять кусок кода и не мучаться. Так что, как решите задачу, милости просим в "Вопросы-Ответы"
http://gis-lab.info/qa/aveazimuth.html
Ведьмак, ты не прав, если б ты знал, сколько времени я трачу на решение банальных задач, с удовольствием бы использовал готовые, но многим просто недосуг вникать в формулы...другое дело взять кусок кода и не мучаться. Так что, как решите задачу, милости просим в "Вопросы-Ответы"
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 22 июн 2004, 06:38
- Репутация: 0
На сайте ESRI Дан Паттерсон выложил новое расширение, с помощью которого можно определять углы:
http://arcscripts.esri.com/details.asp?dbid=13556
http://arcscripts.esri.com/details.asp?dbid=13556
-
- Новоприбывший
- Сообщения: 5
- Зарегистрирован: 21 июн 2004, 21:08
- Репутация: 0
- Откуда: Белгород, Россия
- Контактная информация:
В ArcView полигоны хранятся таким образом, что вершины идут по часовой стрелке, значит внутренние углы будут правыми, следовательно пишем программку для каждой тройки подряд следующих вершин P1(x1,y1), P2(x2,y2), P3(x3,y3) ищем "внутренний" для точки P2:
pi= Number.GetPi
'Вычислим угол наклона луча P2-P1
d= p1-p2
angle1= (d.GetY/d.GetX).atan.asDegrees
if (d.GetX<0) then
angle1= angle1+180
elseif (d.GetY<0) then
angle1= angle1+360
end
'Теперь вычислим угол наклона луча P2-P3
d= p3-p2
angle2= (d.GetY/d.GetX).atan.asDegrees
if (d.GetX<0) then
angle2= angle2+180
elseif (d.GetY<0) then
angle2= angle2+360
end
angle= angle2-angle1 'Разница и будет искомый угол
if (angle1 > angle2) then 'если перестарались, берём обратный
angle= 360+angle
end
Окончательно в переменной angle будет правый (внутренний) угол в градусах
Это на тот случай если надо вставить в свой скрипт, а не просто посчитать чужим...
П.С. Пожалуйста
pi= Number.GetPi
'Вычислим угол наклона луча P2-P1
d= p1-p2
angle1= (d.GetY/d.GetX).atan.asDegrees
if (d.GetX<0) then
angle1= angle1+180
elseif (d.GetY<0) then
angle1= angle1+360
end
'Теперь вычислим угол наклона луча P2-P3
d= p3-p2
angle2= (d.GetY/d.GetX).atan.asDegrees
if (d.GetX<0) then
angle2= angle2+180
elseif (d.GetY<0) then
angle2= angle2+360
end
angle= angle2-angle1 'Разница и будет искомый угол
if (angle1 > angle2) then 'если перестарались, берём обратный
angle= 360+angle
end
Окончательно в переменной angle будет правый (внутренний) угол в градусах
Это на тот случай если надо вставить в свой скрипт, а не просто посчитать чужим...
П.С. Пожалуйста
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 30 ноя 2009, 21:07
- Репутация: 0
Re: Как определить величину внутренних углов многоугольника?
Не поверите, так долго пропарился над этой проблемой, и почему-то вышеприведенный код мне не помог... Не могу не помочь другим.
"Впуклость" угла определяется по знаку определителя (что такое определитель и как его посчитать в интернете ссылок масса):
|x1 y1 1|
|x2 y2 1|
|x3 y3 1|
Если определитель больше 0, то угол меньше 180, меньше 0 - угол больше 180. Углы отсчитываются по часовой стрелке.
"Впуклость" угла определяется по знаку определителя (что такое определитель и как его посчитать в интернете ссылок масса):
|x1 y1 1|
|x2 y2 1|
|x3 y3 1|
Если определитель больше 0, то угол меньше 180, меньше 0 - угол больше 180. Углы отсчитываются по часовой стрелке.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя