引力计算

Gravitational attraction calculation

我正在尝试做一个简单的二维引力问题,其中每个玩家控制一个粒子。在我尝试修改粒子速度之前,数学似乎很有意义。一旦我移动粒子并且角度变为非 0,粒子就会快速移动到 0,0,然后所有值都变为 NaN。关于为什么会发生这种情况的任何想法?

for(var i in Player.list){  
        var player = Player.list[i];
        if(player.id !== self.id){
            var xDisp = self.x - player.x;
            var yDisp = self.y - player.y;
            var distance = Math.sqrt(Math.pow(xDisp, 2) + Math.pow(yDisp, 2));
            var angle = Math.atan2(yDisp, xDisp);
            console.log("angle:" + angle);
            if(distance !== 0){
                attractionAcceleration = GRAVITATIONAL_ATTRACTION_CONSTANT / Math.pow(distance^2); //add mass calculation later when mass is variable
                self.spdX += attractionAcceleration * Math.cos(angle);
                console.log("self.spdX :" + self.spdX);
                self.spdY -= attractionAcceleration * Math.sin(angle);  
                console.log("self.spdy:" + self.spdY);
            }
        }
    }

问题出在 Math.pow(distance^2) 上,应该是 Math.pow(distance,2)。这就解释了为什么结果变成了 NaN。