質問

ここで例をご覧ください: http://www.brianhare.com/physics/so.html

これら2つの主な機能を使用しているConsole.logをご覧ください。

    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);
    }

マウスが粒子の右側にあり、次のような粒子の右側にある場合:enter image description here

コンソールログが表示されます。

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

Arctan(27/26)=角度:46:Theta = 0.8。マウスが中心の「上」でさえあるため、Y2 -Y1は-27として読み取られています。これは、座標システムが0,0の左上に基づいているためです。

問題は、xとyの両方がネガティブである場合、シータが反対方向を指す必要がある場合です(中心点から外側)。ここで180度のトリックをすることができることは知っていますが、何が間違っているのかを理解したいと思います。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top