JavaScript向量2d数学

3
我最近开始用JavaScript编写小型画布游戏,试图理解二维矢量数学。我了解矢量的基础知识(如它们表示2D空间中的一个点和方向,以及您可以将它们相加、相乘、相减和旋转),但我不了解如何应用矢量来计算游戏对象的方向和速度等信息。
请查看这个游戏:http://rem.im/asteroid.html,这是一个由2D矢量数学驱动的小游戏的很好的例子。
伟大的Seb Lee Delisle在他的矢量计算中使用了这个JavaScript伪类:https://github.com/sebleedelisle/JSTouchController/blob/master/js/Vector2.js
我已经阅读了一些关于矢量数学的教程,但它们全部都有100%的数学重心,没有描述如何使用矢量构建游戏,例如控制太空飞船和子弹等。
你能指导我参考一些如何在JavaScript游戏中应用矢量数学的教程吗?
谢谢!

http://en.wikipedia.org/wiki/Kinematics - mathematician1975
1个回答

4
您可以把元素的位置看作是一个向量(x,y),它还定义了从坐标原点(0,0)到这个点的方向。
速度是每时间单元内位置变化的速率。例如(1,5)表示每个时间单元(比如每帧)x坐标将变化+1,y坐标将变化+5。所以新位置将会是(x,y)+(1,5)=(x+1,y+5)。
加速度是每时间单元内速度变化的速率。假设您有一个加速度为(1,1),那么速度将在x方向上变化+1,在y方向上变化+1。
例子:您的对象当前位置是(100,200),当前速度是(5,0),加速度为(1,1)。
Position in frame 0: (100,200), velocity (5,0)
Position in frame 1: (100,200) + (5,0) = (105,200), new velocity (5,0) + (1,1) = (6,1)
Position in frame 2: (105,200) + (6,1) = (111,201), new velocity (6,1) + (1,1) = (7,2)

etc.

所以你的意思是向量在每次更新游戏对象时被应用。而且向量的x,y位置不同于游戏对象的x,y位置?而是向量作为加速度、位置和速度修改器作用于实际对象,并在每次渲染时应用? - ChrisRich
几乎... 游戏对象的x和y与对象的位置向量(x,y)相同,只有速度和加速度作为修饰符,其中速度随时间改变位置,而加速度随时间改变速度。 - devnull69
谢谢 devnull,我想我终于理解了。我之前没能理解的是,在运动、加速、速度和重力方面,你要使用多个相互影响的向量。因此,一个向量会对另一个向量施加力,控制物体的位置等等。 - ChrisRich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接