Question

Jetez un œil à l'exemple ici: http://www.brianhare.com/physics/so.html

Jetez un œil à Console.log où j'utilise ces deux fonctions 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);
    }

Où lorsque la souris est au-dessus et à droite de la particule (cercle central), comme:enter image description here

Le journal de la console s'affiche:

Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191

où il doit être Arctan (27/26) = angle: 46: thêta = 0,8. Parce que même la souris est "au-dessus" du centre, elle lit le Y2-Y1 comme -27 parce que le système de coords est basé environ 0,0 en haut à gauche.

Le problème est alors lorsque X et Y sont négatifs, ce qui rend le thêta positif, quand il devrait pointer la direction opposée (vers l'extérieur du point central). Je sais que je pourrais faire une astuce à 180 degrés ici, mais je veux comprendre ce que je fais de mal.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top