Преобразовать значение 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° будут иметь одинаковую касательную. Подробнее об этом см. Обратные тригонометрические функции.

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

С http://www.mathopenref.com/arctan.html

Другие вопросы по тегам