首页 > 编程知识 正文

atan2 范围,atan函数和atan2

时间:2023-05-03 19:22:20 阅读:219609 作者:165

如题,编写一个Java程序,将笛卡尔坐标转换为极坐标。您的程序应该采用两个实数输入x和y,并根据以下公式打印极坐标r和θ。

 

 

 测试用例1:

输入:

1.0

1.0

输出:

r = 1.4142135623730951

theta = 0.7853981633974483

测试用例2:c

输入:

-1.0

-1.0

输出:

r = 1.4142135623730951

theta = -2.356194490192345

当我们用atan(y/x)时,用例1可以运行成功,而用例2会得到错误的答案,如图:

 

 

 

代码如下

public static void main(String[] args) { Scanner kb = new Scanner(System.in); double x = Double.parseDouble(kb.nextLine()); double y = Double.parseDouble(kb.nextLine()); double r = Math.sqrt(x*x + y*y); double theta = Math.atan(y/x); System.out.println("r = "+ r); System.out.println("theta = "+ theta);

当x和y都是-1时,坐标理应出现在第三象限,但由于-1/-1=1/1=1,系统判定为和用例1一样的情况(在第一象限),但我们使用atan2作为代码时,则不会出现此情况。如图:

 代码如下

 

public static void main(String[] args) { Scanner kb = new Scanner(System.in); double x = Double.parseDouble(kb.nextLine()); double y = Double.parseDouble(kb.nextLine()); double r = Math.sqrt(x*x + y*y); double theta = Math.atan2(y,x); System.out.println("r = "+ r); System.out.println("theta = "+ theta);

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。