2013-04-11 150 views
0

基本上,我很好奇,如果xVelyVel变量将工作最好,或者如果我应该使用velocitydirection变量。最有效的方法来处理速度

而且,这是怎么会在更新处理:(伪代码) 对于xVelyVel

x += xVel; 
y += yVel; 

对于velocitydirection

x += velocity * (cos(direction)); 
y += velocity * (sin(direction)); 

注:我不知道如果第二个将正常工作。我没有三角函数技能。

那么,第一种方法更有效,还是第二种?我在做第二个完全错误的?

回答

1

这取决于您的应用程序。当然,您可以使用反正切函数来查找任何给定时刻的theta。但是,如果您的图形会随着物体的角度旋转,那么您可能想要坚持极坐标。基本上,我使用的经验法则是:如果你正在处理X和Y加速度以及速度,那么你想要坚持直角坐标并使用delta-x和delta-y变量。如果要处理对象旋转,并且定期计算角度,则可能需要使用极坐标。

这取决于应用程序。

0

两种方式同样有效,因为它们应该给出相同的答案。不过,我想补充一个额外的数值时步项,使之成为更好的数值“模拟”:

x += xVel * timeStep; 
y += yVel * timeStep; 

或者

x += totalVel * cos(direction) * timeStep; 
y += totalVel * sin(direction) * timeStep; 

两种方式都将给予相同的结果,但计算时间会可能分歧。如果一种方法的计算量比另一种计算量大得多,那么另一种方法的计算量可能会更快。但是如果你不确定,你总是可以运行一个测试脚本,在其中测试每种方法很多次,并跟踪CPU执行它们所需的时间。

相关问题