Итак, мне нужно, чтобы C прошел кратчайший путь из A в B. A в B — это гипотенуза моего прямоугольного треугольника, и мне нужно дать C арктангенс указанного треугольника. Как мне это сделать, и есть ли у формулы имя?
Как найти арктангенс прямоугольного треугольника, используя только гипотенузу?
Ответы (5)
Арктан будет выражаться в градусах или радианах, поэтому ваши A и B, скорее всего, будут иметь такие координаты, как (x, y). Затем вы делаете arctan((By - Ay) / (Bx - Ax)) если я правильно помню, здесь Bx - координата x B и т.д.
Если A и B не имеют координат, вы не можете осмысленно получить градусы.
Не совсем понятно, о чем вы спрашиваете, но я думаю, вы пытаетесь найти угол линии AB. Я собираюсь сделать предположение, что вы знаете или можете вычислить координаты (x,y) как A, так и B, потому что иначе вы не сможете решить проблему.
Похоже, вы наметили большую часть решения... угол будет равен арктангенсу расстояния (y/x). Итак, если мы считаем A(y) координатой y точки A, то вы видите что-то вроде:
arctan ((A(y) - B(y)) / (A(x) - B(x)))
Это помогает? Или вы ищете что-то немного другое?
РЕДАКТИРОВАТЬ: Одна вещь, о которой следует помнить, - это порядок, в котором вы рассматриваете термины (независимо от того, идете ли вы от А к Б или наоборот) и т. Д. Вам нужно подумать об этом, иначе вы можете получить какой-то знак проблемы.
В большинстве систем есть Arctan2(dy, dx)
, который дает вам угол в полном круге (и заботится о вертикалях), поэтому вы должны сказать Arctan2((By - Ay), (Bx - Ax))
, чтобы получить направление в радианах (против часовой стрелки с востока). Чтобы получить степень, умножьте на 360/(2*PI)
.
Просто убедитесь, что A != B.
Если у вас есть только одна длина и здесь нет скрытого предположения (например, одна сторона треугольника была нормализована): вы не можете.
Интересным скрытым предположением может быть:
- Все расстояния являются целыми числами
- Длина треугольника не меньше, чем его высота.
Тогда проблема просто тяжелая.
Если A
и B
являются точками, то угол, который вы хотите, предположительно является углом, взятым по оси x, и вы получаете его (используя fortransish имена):
atan((B.y - A.y)/(B.x - A.x))
или если он есть в вашей библиотеке
atan2((B.y - A.y),(B.x - A.x))
который аккуратно обрабатывает деление на ноль...
Если от A до B — гипотенуза вашего прямоугольного треугольника, то от A до B также будет кратчайший путь от A до B, потому что это прямая линия между точками.
Вы можете вычислить арктангенс любого непрямого угла, разделив длину смежной стороны на длину противоположной стороны, потому что это обратная сторона касательной. Но с информацией, которую вы описали, вам будет не хватать ни числителя, ни знаменателя.
Существует бесконечное количество прямоугольных треугольников с гипотенузой заданной длины.