Coordenadas cartesianas a polares
-
29-10-2019 - |
Pregunta
Eche un vistazo al ejemplo aquí: http://www.brianhare.com/physics/so.html
Eche un vistazo a console.log donde estoy usando estas dos funciones principales:
function distanceBetween2pts(x1, y1, x2, y2) {
console.log("Particle: ("+x1+","+y1+") Mouse: ("+x2+","+y2+")");
// Pythagoras Theorem
// PQ = sqrt( (x2-x1)^2 + (y2-y1)^2 )
var x = (x2-x1);
var y = (y2-y1);
this.radius = Math.sqrt(x*x + y*y);
this.x = x;
this.y = y;
}
function polar2cartesian(R, theta) {
this.x = R * Math.cos(theta);
this.y= R * Math.sin(theta);
}
Donde cuando el mouse está por encima y a la derecha de la partícula (círculo central) como:
Muestra el registro de la consola:
Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191
donde debería ser arctán (27/26) = ángulo: 46: theta = 0.8. Debido a que incluso el mouse está "por encima" del centro, está leyendo el Y2 -Y1 como -27 porque el sistema Coord se basa en que 0,0 está en la parte superior izquierda.
El problema es cuando tanto X como Y son negativos que hacen positivo el theta, cuando debería apuntar la dirección opuesta (hacia afuera desde el punto central). Sé que podría hacer un truco de 180 grados aquí, pero quiero entender lo que estoy haciendo mal.
No hay solución correcta