如何将三角测量计算推广到Java中的四象限图

时间:2015-12-01 10:40:56

标签: java math trigonometry

我有一个允许-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;
        }

0 个答案:

没有答案