引力计算

时间:2017-03-30 21:29:10

标签: javascript node.js trigonometry

我试图做一个简单的2d引力问题,每个玩家控制一个粒子。在我尝试修改粒子的速度之前,数学似乎有意义。一旦移动粒子并且角度变为非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);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

问题在于Math.pow(distance,2),{{1}}应为{{1}}。这就解释了为什么结果变成了NaN。