Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Алгоритмы > Нахождение дирекционного угла отрезка


Автор: Хрен 29.01.12, 23:00
Доброго времени суток!

Собственно, вопрос уже изначально решён, и спрашиваю только чтобы быть уверенным, что он решён оптимально.
Есть отрезок AB и нужно найти его дирекционный угол (угол отклонения от оси y). Я делаю так:
1. Нахожу точку C с координатами (A.x, B.y) - таким образом получаю 2 катета AC, BC.
2. Вычисляю длины катетов и нахожу отношение BC к AC.
3. Беру atan из этого отношения и перевожу его из радианов в градусы.

Может есть какие-то более оптимальные способы?

Автор: MBo 30.01.12, 01:35
atan2(B.y - A.y, B.x - A.x) даст угол в диапазоне -Pi..Pi по отношению к оси X


P.S. Часто само значение угла не требуется, достаточно найти компоненты направляющего вектора

Автор: amk 30.01.12, 14:17
Чтобы получить угол от оси Y, надо просто поменять аргументы atan2. Если угол надо откладывать против часовой стрелки, придется также поменять знак.

Подозреваю, тут что-то сходное с ориентированием на местности, поэтому угол и нужен.

Автор: Хрен 07.02.12, 11:00
MBo, amk Спасибо! Кстати, мой способ был рабочим только наполовину - он не различал знак угла =)
Да, задача почти для ориентирования на местности - а именно вычисление дирекционного угла дороги на GPS карте =)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)