¿Por qué SQRT Times COS vuelve al valor equivocado?
-
21-12-2019 - |
Pregunta
Estoy codificando un calculador que encuentra las coordenadas de un punto giratorio.(inspirado en el tutorial de matemáticas en YouTube http://www.youtube.com/watch?v=nqdusvptyhs )
No puedo entender lo que está sucediendo mal en esas 2 líneas ...
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);
}
Solución
Las funciones de la biblioteca sin
y cos
esperan que su entrada esté en radianes, pero los pasaste grados en su lugar.
Solo manténgalo todo en radianes de la entrada en adelante y no debería tener un problema:
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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow