Как я могу найти дугу прямоугольного треугольника, используя только гипотенузу?

StackOverflow https://stackoverflow.com/questions/583296

  •  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, потому что это прямая линия между точками.

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

Существует бесконечное число прямоугольных треугольников с гипотенузой заданной длины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top