【问题标题】:How do I implement vectors (vector-math)?如何实现向量(向量数学)?
【发布时间】:2011-10-16 22:33:04
【问题描述】:

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

float mX, mY;
float speedX, speedY;   

为了移动对象,我将某个方向的速度添加到当前位置 (mX += speedX)。

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

float mX, mY;
float direction;
float velocity;  

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

(顺便说一句,我正在 Android 上使用 openGL-ES)

【问题讨论】:

    标签: android math opengl-es vector


    【解决方案1】:

    二维向量有两个维度:(vx, vy)。这就是你所需要的。

    您通过计算所谓的“单位矢量”来找到方向:一个大小为 1 的矢量,指向您要去的方向。

    您使用以下公式计算震级:magnitude = sqrt(vx*vx + vy*vy)

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

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

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

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

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

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

    【讨论】:

    • 你知道一些很好的例子、教程或网站吗?
    • 有数以百万计的书籍和网页写在基本向量上。选一个。这不是扫描页面并成为专家的问题。你必须做一些工作来学习它,但这是值得的。启动 Google,看看它会带来什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    相关资源
    最近更新 更多