我有一个允许-ve值在x和y轴上的图形,因此图形可以被认为具有四个象限,并且其中x,y图可以被认为是逆时针方向从0-360变化的角度,使得x = 100,y = 0将是角度零,x = 0,y = 100将是角度90,x = -100,y = 0将是角度180,并且x = 0,y = -100将是角度270
给定一个x和y的值我想计算从给定的x = 30的值开始的角度,y = 60我可以做
Math.toDegrees(Math.atan((double)y/x));
即
System.out.println(Math.toDegrees(Math.atan((double)60/30)));
给予
63.434
但如何用负数推广这项工作,即如果我有y = 60且x = -30那么答案应该是116.56。如果我有y = -60且x = -30那么它将是206.56
我正在使用Java
我逆时针运行的原因是因为我试图实现的算法,看起来反直觉就是他们这样做的方式。
我得到了以下笨重方式
的工作方式 if(x> 0 & y> 0)
{
angle= (Math.toDegrees(Math.atan((double)Math.abs(y)/ Math.abs(x))));
}
else if(x< 0 & y> 0)
{
angle= (Math.toDegrees(Math.atan((double)Math.abs(x)/ Math.abs(y)))) + 90;
}
else if(x< 0 & y< 0)
{
angle= (Math.toDegrees(Math.atan((double)Math.abs(y)/ Math.abs(x)))) + 180;
}
else if(x> 0 & y< 0)
{
angle= (Math.toDegrees(Math.atan((double)Math.abs(x)/ Math.abs(y)))) + 270;
}