Coordinate cartesiane a polari
-
29-10-2019 - |
Domanda
Dai un'occhiata all'esempio qui: http://www.brianhare.com/physics/so.html
Dai un'occhiata a Console.log dove sto usando queste due funzioni principali:
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);
}
Dove quando il topo è sopra e a destra della particella (cerchio centrale) come:
Viene visualizzato il registro della console:
Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191
dove dovrebbe essere arctan (27/26) = angolo: 46: theta = 0.8. Poiché anche il mouse è "sopra" il centro, sta leggendo Y2 -Y1 come -27 perché il sistema di coord è basato circa 0,0 in alto a sinistra.
Il problema è allora quando sia x che y sono negativi rendendo il theta positivo, quando dovrebbe puntare la direzione opposta (verso l'esterno dal punto centrale). So che potrei solo fare un trucco di 180 gradi qui, ma voglio capire cosa sto facendo di sbagliato.
Nessuna soluzione corretta