假设我使用atan2
来获取两个向量之间的角度。
atan2
以弧度为单位给出一个值。我使用Java中的内置函数将其转换为度数。这为我提供了0
和180
度之间或0
和-180
之间的值(atan2的性质)。
有没有办法将使用此功能接收的值(在转换为度数后)转换为标准的360度系统,而不改变角度 - 只有它的写入方式?这会让我更容易合作。
由于
答案 0 :(得分:7)
试试这个:
double theta = Math.toDegrees(atan2(y, x));
if (theta < 0.0) {
theta += 360.0;
}
答案 1 :(得分:2)
将其转换为以北为参考的0 - 360度值:
double degrees = 90.0d - Math.toDegrees( Math.atan2( y, x ) );
if( degrees < 0.0d )
{
degrees += 360.0;
}
答案 2 :(得分:0)
根据我在trig课程中学到的内容,上述答案不正确。例如,如果矢量相交点(-1,-1)处于225度(标准位置)的角度,则切线将为正1,这将产生45度的反正切。上述解决方案不会注意到这一点,矢量的角度也是错误的。这就是为什么反正切的公式根据情况而不同的原因。你必须先知道角度是什么。
回想一下,我们可以将trig函数应用于任何角度,包括大角度和负角度。但是当我们考虑反函数时,我们会遇到一个问题,因为有无数个角度具有相同的切线。例如,45°和360 + 45°将具有相同的切线。有关详细信息,请参阅反三角函数。
为了解决这个问题,反向触发函数的范围受到限制,使得反函数是一对一的,即每个输入值只有一个结果。
答案 3 :(得分: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)))