我如何实现向量(向量 - 数学)?

时间:2011-10-16 14:26:54

标签: android math opengl-es vector

目前我正在制作突破游戏,并定义对象的位置或我正在使用的动作:

float mX, mY;
float speedX, speedY;   

要移动物体,我将速度沿某个方向添加到当前位置(mX + = speedX)。

但我已经阅读了很多关于我应该使用向量而不是上面的内容,我现在打算做什么。我已经阅读了一些矢量数学,但我不知道如何在游戏中实现这一点。关于数学本身有很多信息,但我在代码方面找不到任何东西。我能想出来:

float mX, mY;
float direction;
float velocity;  

但在这里我有点卡住了。我知道我应该使用direction将对象移动到velocity,可能需要一段时间,但是如何?

(顺便说一句,我在Android上用openGL-ES制作它)

1 个答案:

答案 0 :(得分:3)

2D中的矢量有两个维度:(vx, vy)。这就是你所需要的一切。

通过计算所谓的“单位向量”来找到方向:一个指向你正在前进方向的1级向量。

您可以使用以下公式计算幅度:magnitude = sqrt(vx*vx + vy*vy)

通过将两个分量除以幅度来获得单位向量:

(ux, uy) = (vx/magnitude, vy/magnitude)

如果您在一个时间步长dt内以恒定速度移动,那么您在每个方向上移动的距离为:

(dx, dy) = (vx*dt, vy*dt)

这假设在该时间段内没有加速。

这是所有基本的矢量内容。一点阅读可能会有很长的路要走。