Преобразовать значение atan2 в стандартное системное значение 360 градусов
Допустим, я использую atan2
чтобы получить угол между двумя векторами.
atan2
дает значение в радианах. Я конвертирую его в градусы, используя встроенную функцию в Java. Это дает мне значение между 0
а также 180
градусы или между 0
а также -180
(природа atan2).
Есть ли способ преобразовать значение, полученное с помощью этой функции (после преобразования в градусы), в стандартную 360-градусную систему без изменения угла - только так, как оно написано? Это облегчит мне работу.
Спасибо
4 ответа
Попробуй это:
double theta = Math.toDegrees(atan2(y, x));
if (theta < 0.0) {
theta += 360.0;
}
Чтобы преобразовать его в северное значение 0 - 360 градусов:
double degrees = 90.0d - Math.toDegrees( Math.atan2( y, x ) );
if( degrees < 0.0d )
{
degrees += 360.0;
}
Формула, которая дает угол от 0 до 360 градусов.
f(x,y)=180-90*(1+sign(x))* (1-sign(y^2))-45*(2+sign(x))*sign(y)
-(180/pi())*sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y)))
Согласно тому, что я узнал в моем тригоном классе, приведенные выше ответы неверны. Например, если у вас есть точка пересечения вектора (-1,-1) под углом 225 градусов (стандартное положение), касательная будет положительной 1, что дает арктангенс 45 градусов. Это не будет замечено вышеупомянутыми решениями, и угол вектора будет неправильным. Вот почему формула арктангенса отличается в зависимости от ситуации. Вы должны иметь представление о том, какой угол будет первым.
Напомним, что мы можем применять тригонометрические функции к любому углу, включая большие и отрицательные. Но когда мы рассматриваем обратную функцию, мы сталкиваемся с проблемой, потому что существует бесконечное число углов, имеющих одинаковую касательную. Например, 45° и 360+45° будут иметь одинаковую касательную. Подробнее об этом см. Обратные тригонометрические функции.
Чтобы решить эту проблему, диапазон обратных функций триггера ограничен таким образом, что обратные функции являются взаимно-однозначными, то есть для каждого входного значения имеется только один результат.