Как я могу найти дугу прямоугольного треугольника, используя только гипотенузу?
-
06-09-2019 - |
Вопрос
Хорошо, итак, мне нужно заставить C пройти кратчайший путь от A до B.От A до B - это гипотенуза моего прямоугольного треугольника, и мне нужно дать C арктан указанного треугольника.Как мне это сделать, и есть ли у формулы название?
Решение
Арктан приведет к выражению в градусах или радианах, так что ваши A и B, скорее всего, будут иметь координаты типа (x, y).Затем вы выполняете arctan((By - Ay) / (Bx - Ax)) если я правильно помню, здесь Bx - это координата x для B и т.д.
Если A и B не имеют координат, вы не сможете получить значимые значения градусов.
Другие советы
Не совсем понятно, о чем вы спрашиваете, но я думаю, что вы пытаетесь найти угол наклона линии A-B.Я собираюсь сделать предположение, что вы знаете или можете вычислить координаты (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, и вы получаете его с помощью (используя фортранские имена):
atan((B.y - A.y)/(B.x - A.x))
или если она есть у вас в библиотеке
atan2((B.y - A.y),(B.x - A.x))
который аккуратно обрабатывает случаи деления на ноль...
Если A - B - гипотенуза вашего прямоугольного треугольника, то A-B также будет кратчайшим путем от A до B, потому что это прямая линия между точками.
Вы можете вычислить арктангенс любого непрямого угла, разделив длину смежной стороны на длину противоположной стороны, потому что это величина, обратная касательной.Но с информацией, которую вы описали, вам будет не хватать ни числителя, ни знаменателя.
Существует бесконечное число прямоугольных треугольников с гипотенузой заданной длины.