基本上,我很好奇xVel
和yVel
变量是否最佳,或者我应该使用velocity
和direction
变量。
此外,这是在更新时处理的方式:(psuedocode)
对于xVel
和yVel
:
x += xVel;
y += yVel;
velocity
和direction
:
x += velocity * (cos(direction));
y += velocity * (sin(direction));
注意:我不确定第二个是否能正常工作。我没有三角学技能。
那么,第一种方式更有效,还是第二种方式?我做第二个完全错了吗?
答案 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执行它们所需的时间。