处理速度最有效的方法

时间:2013-04-11 20:41:00

标签: physics physics-engine

基本上,我很好奇xVelyVel变量是否最佳,或者我应该使用velocitydirection变量。

此外,这是在更新时处理的方式:(psuedocode) 对于xVelyVel

x += xVel;
y += yVel;

velocitydirection

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

注意:我不确定第二个是否能正常工作。我没有三角学技能。

那么,第一种方式更有效,还是第二种方式?我做第二个完全错了吗?

2 个答案:

答案 0 :(得分:1)

这取决于您的申请。当然,您可以使用反正切函数从任何给定时刻找到theta。但是,如果你的图形会随着物体的角度旋转,那么你可能想要坚持极性。

基本上,我使用的经验法则是:如果你正在处理X和Y加速度以及速度,那么你想要坚持使用直角坐标并使用delta-x和delta-y变量。如果你想处理对象旋转,并且定期计算角度,那么你可能想要使用极性。

这取决于应用程序。

答案 1 :(得分:0)

两种方式都同样有效,因为它们应该给出相同的答案。但是,我会添加一个额外的数字 - 时间步长项,使其成为更好的数值“模拟”:

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

或者

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

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