Java 为什么sqrt乘以cos返回错误的值
我正在编写一个计算器,用来计算旋转点的坐标。(灵感来源于youtube上的数学教程) 我陷入困境的部分是安西和安西的回归。它返回的不是4.0和3.6,而是不正确的答案。(新威尔士合作社:-3.0853888289108733,-4.413657867849748) 我无法理解这两行中发生了什么错误Java 为什么sqrt乘以cos返回错误的值,java,math,sqrt,trigonometry,Java,Math,Sqrt,Trigonometry,我正在编写一个计算器,用来计算旋转点的坐标。(灵感来源于youtube上的数学教程) 我陷入困境的部分是安西和安西的回归。它返回的不是4.0和3.6,而是不正确的答案。(新威尔士合作社:-3.0853888289108733,-4.413657867849748) 我无法理解这两行中发生了什么错误 static void tourner() { Scanner tournsc = new Scanner(System.in); double coordx,
static void tourner()
{
Scanner tournsc = new Scanner(System.in);
double coordx, coordy, roattiondeg, ansx, ansy, angle, triangleh, newangle;
//Test input : X 5, Y 2, rotation deg 20
System.out.println("Coord X :");
coordx = tournsc.nextInt();
System.out.println("Coord Y :");
coordy = tournsc.nextInt();
System.out.println("Degre : ");
roattiondeg = tournsc.nextInt();
triangleh = ((Math.pow(coordx, 2)) + (Math.pow(coordy, 2)));
angle = Math.toDegrees(Math.atan(coordy/coordx));
newangle = roattiondeg + angle;
ansx = Math.sqrt(triangleh)*Math.cos(newangle);
ansy = Math.sqrt(triangleh)*Math.sin(newangle);
System.out.println("Nouvelles coordoner : " + ansx + "," + ansy);
}
问:为什么ansx和ansy在我的现实生活计算器上给出了很好的答案,但在程序中却错了
thx以获取帮助。库函数
sin
和cos
希望它们的输入以弧度为单位,但您传递的是度
只需从输入开始以弧度为单位,您就不会有问题:
roattiondeg = Math.toRadians(tournsc.nextInt());
triangleh = ((Math.pow(coordx, 2)) + (Math.pow(coordy, 2)));
angle = Math.atan(coordy/coordx));
newangle = roattiondeg + angle;
ansx = Math.sqrt(triangleh)*Math.cos(newangle);
ansy = Math.sqrt(triangleh)*Math.sin(newangle);
System.out.println("Nouvelles coordoner : " + ansx + "," + ansy);