Java: касательный метод - PullRequest
1 голос
/ 25 июля 2010

Что является противоположностью функции Math.tan(double x) Java?

Я знаю, что Tan(X) = oppositeSideLength/AdjacentSideLength

, но у меня есть противоположные и смежные стороны, поэтому я хочу сделать противоположную операцию.

т.е.: x = Tan^-1(oppositeSideLenght/AdjacentSideLength) (именно так я бы ввел его в калькулятор.

Я только что посмотрел в Математический класс и я знаю, что есть:

  • Math.atan(
  • Math.atan2

но я не думаю, что что-то из этого - то, что я ищу.

Ответы [ 4 ]

8 голосов
/ 25 июля 2010

Да, вы действительно хотите atan, а иногда и atan2. Разница между ними заключается в том, что atan потерпит неудачу при некоторых обстоятельствах, когда одна из сторон имеет нулевую длину. Хотя это может быть маловероятным для треугольников, это возможность для некоторых других, более общих применений атана. Кроме того, функция atan дает вам угол, ограниченный интервалом [-pi / 2, pi / 2]. Поэтому, если вы думаете о функции atan как функции двух входов (x, y), atan (y / x) даст тот же результат, что и atan ((- y) / (- x)). В некоторых случаях это серьезный недостаток.

Чтобы решить эти проблемы, atan2 определяется так, что он дает правильный результат для всех значений x и y в любом квадранте. Можно использовать как

atan2(oppositesidelength,adjacentsidelength)

для получения последовательного результата.

Конечно, для использования в невырожденном треугольнике простой вызов atan (противоположный / соседний) должен быть полностью адекватен вашим целям.

2 голосов
/ 25 июля 2010

Math.atan действительно противоположен касательной.Он называется арктангенс .

В основном x = arctan (tan (x)).Ну, это немного сложнее, чем то, что видеть, что тангенс является повторяющейся функцией (она нуждается в некоторых корректировках, добавляя k * pi).Вы должны проверить статью в Википедии о деталях.

В любом случае, вы действительно можете вычислить x (угол), выполнив Math.atan(opposite/adjacent).Обратите внимание, что угол будет в радианах, поэтому убедитесь, что вы переводите в другие единицы, если это не то, что вы используете.

2 голосов
/ 25 июля 2010

Math.atan и Math.atan2 должны работать очень хорошо.

angle = Math.atan(Math.Tan(radians));
angle = Math.atan(oppositeSideLength/adjacentSideLength)
angle = Math.atan2(oppositeSideLength, adjacentSideLength)
2 голосов
/ 25 июля 2010

Да, вы хотите atan, арктангенс. Это обратная касательная; то же самое с грехом и арксинусом, косинусом и арккосинусом и т. д. Это альтернативная математическая терминология для обратных функций.

Обратите внимание, как atan, кстати, возвращает углы от - & pi; / 2 до & pi; / 2. Это намек на то, что это обратная функция (тангенс принимает углы и выплевывает отношения, арктангенс принимает отношения и выплевывает углы). Также важно распознать ограниченный диапазон. Вы не обязательно вернете свой исходный угол, поскольку касательные повторяют каждый & pi; радианы (каждые 180 °) & mdash; tan (& pi;) = 0, но atan (0) = 0, а не & pi;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...