Как найти арктан прямоугольного треугольника, используя только гипотенузу? - PullRequest
2 голосов
/ 24 февраля 2009

Хорошо, мне нужно, чтобы C прошел кратчайший путь от A до B. A до B - это гипотенуза моего прямоугольного треугольника, и мне нужно дать C арктан этого треугольника. Как мне это сделать, и есть ли у формулы имя?

Ответы [ 5 ]

3 голосов
/ 24 февраля 2009

Не совсем понятно, о чем вы спрашиваете, но я думаю, что вы пытаетесь найти угол линии А-Б. Я собираюсь сделать предположение, что вы знаете или можете выяснить (x, y) координаты как A, так и B, потому что иначе вы не сможете решить проблему.

Похоже, вы обрисовали большую часть решения ... угол будет равен арктану расстояния (у / х). Так что, если мы считаем A (y) координатой y для A, то вы смотрите на что-то вроде:

arctan ((A(y) - B(y)) / (A(x) - B(x)))

Это помогает? Или вы ищете что-то немного другое?

РЕДАКТИРОВАТЬ: Следует помнить одну вещь - это порядок, в котором вы рассматриваете термины (переходите ли вы от А к В или наоборот) и т. Д. с некоторыми проблемами со знаком.

2 голосов
/ 24 февраля 2009

В большинстве систем есть Arctan2(dy, dx), который дает вам угол в полном круге (и учитывает вертикали), поэтому вы бы сказали Arctan2((By - Ay), (Bx - Ax)), чтобы получить направление в радианах (против часовой стрелки с востока). Для степеней умножьте на 360/(2*PI).

Просто убедитесь, что A! = B.

1 голос
/ 24 февраля 2009

Если у вас есть только одна длина и здесь нет скрытого предположения (например, одна сторона треугольника нормализована): вы не можете .

Интересное скрытое предположение может быть:

  • Все расстояния являются целыми числами
  • Треугольник, по крайней мере, такой же длины, как и высокий.

Тогда проблема просто сложна.


Если A и B являются точками, то требуемый угол является предполагаемым углом, взятым к оси x, и вы получите его (используя названия с фортранью):

atan((B.y - A.y)/(B.x - A.x))

или, если у вас есть в библиотеке

atan2((B.y - A.y),(B.x - A.x))

, который аккуратно обрабатывает деление на ноль ...

1 голос
/ 24 февраля 2009

Арктан приведет к градусам или радианам, поэтому ваши A и B, скорее всего, имеют координаты, такие как (x, y). Затем вы делаете arctan ((By - Ay) / (Bx - Ax)), если я правильно помню, здесь Bx - координата x B и т. Д.

Если у A и B нет координат, вы не можете получить значимые градусы.

0 голосов
/ 24 февраля 2009

Если от А до В является гипотенузой вашего прямоугольного треугольника, от А до В также будет кратчайшим путем от А до В, потому что это прямая линия между точками.

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

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

...