我试图做一个简单的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);
}
}
}
答案 0 :(得分:1)
问题在于Math.pow(distance,2)
,{{1}}应为{{1}}。这就解释了为什么结果变成了NaN。