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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top