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

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

Ответов (5)

Решение

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

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

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

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

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

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

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

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

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

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

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

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

If you only have one length and there is no hidden assumption here (like say, one side of the triangle has been normalized): you can't.

An interesting hidden assumption might be:

  • Все расстояния целые
  • Длина треугольника не меньше его высоты.

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


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

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

или если он есть в вашей библиотеке

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

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