0

基本上,我很好奇xVelandyVel变量是否会工作得最好,或者我是否应该使用 avelocity和 adirection变量。

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

x += xVel;
y += yVel;

对于velocitydirection

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

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

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

4

2 回答 2

1

这取决于您的应用程序。当然,您可以使用反正切函数来找到任何给定时刻的 theta。但是,如果您的图形会随着对象的角度旋转,那么您可能需要坚持使用极坐标。

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

这取决于应用程序。

于 2013-04-11T20:43:37.407 回答
0

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

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

或者

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

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

于 2013-04-13T03:09:51.060 回答