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:enter image description here

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top