Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.9.115] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток!
Собственно, вопрос уже изначально решён, и спрашиваю только чтобы быть уверенным, что он решён оптимально. Есть отрезок AB и нужно найти его дирекционный угол (угол отклонения от оси y). Я делаю так: 1. Нахожу точку C с координатами (A.x, B.y) - таким образом получаю 2 катета AC, BC. 2. Вычисляю длины катетов и нахожу отношение BC к AC. 3. Беру atan из этого отношения и перевожу его из радианов в градусы. Может есть какие-то более оптимальные способы? |
Сообщ.
#2
,
|
|
|
atan2(B.y - A.y, B.x - A.x) даст угол в диапазоне -Pi..Pi по отношению к оси X
P.S. Часто само значение угла не требуется, достаточно найти компоненты направляющего вектора |
Сообщ.
#3
,
|
|
|
Чтобы получить угол от оси Y, надо просто поменять аргументы atan2. Если угол надо откладывать против часовой стрелки, придется также поменять знак.
Подозреваю, тут что-то сходное с ориентированием на местности, поэтому угол и нужен. |
Сообщ.
#4
,
|
|
|
MBo, amk Спасибо! Кстати, мой способ был рабочим только наполовину - он не различал знак угла =)
Да, задача почти для ориентирования на местности - а именно вычисление дирекционного угла дороги на GPS карте =) |