JavaScript Vector2d数学

时间:2012-09-05 07:02:09

标签: javascript math

我最近开始用JavaScript编写小型帆布游戏,并试图围绕Vector 2d数学。我理解向量的基础知识(就像它们代表一个带有方向的2d空间中的点,你可以添加,乘法,减去和旋转它们)但我不明白如何在计算方向和速度时应用向量一个游戏中的物体。

看看这个游戏: http://rem.im/asteroid.html

由2d矢量数学驱动的迷你游戏的一个很好的例子。

伟大的Seb Lee Delisle正在使用这个JavaScript伪类进行矢量计算: https://github.com/sebleedelisle/JSTouchController/blob/master/js/Vector2.js

我已经阅读了一些关于矢量数学的教程,但他们有100%的纯数学焦点,并没有描述如何使用控制太空飞船和子弹等矢量来构建游戏。

你能指点我一些关于如何在JavaScript游戏中应用矢量数学的教程吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以将元素的位置视为向量(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.