我正在编写一个计算器,用于查找旋转点的坐标。 (灵感来自youtube上的数学教程http://www.youtube.com/watch?v=NQduSvpTyhs)
我陷入困境的部分是ansx和ansy的回归。而不是4.0和3.6它返回incorect答案。 (Nouvelles coordoner:-3.0853888289108733,-4.413657867849748)
我无法理解这两行中发生的错误......
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 for help。
答案 0 :(得分:0)
库函数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);