JavaScript Vector2d Math

JavaScript Vector2d Math

本文关键字:Math Vector2d JavaScript      更新时间:2023-09-26

我最近开始用JavaScript编写小型画布游戏,并试图了解Vector 2d数学。我了解矢量的基本原理(比如它们表示二维空间中有方向的点,你可以对它们进行加法、乘法、减法和旋转),但我不知道如何在计算游戏中对象的方向和速度时应用矢量。

查看此游戏:http://rem.im/asteroid.html

一个由二维矢量数学驱动的迷你游戏的好例子。

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

我读过一些矢量数学教程,但它们100%专注于数学,没有描述如何用矢量构建游戏,比如控制太空船和子弹。

你能给我介绍一些如何在JavaScript游戏中应用矢量数学的教程吗?

谢谢!

您可以将元素的位置视为向量(x,y),该向量还定义了从坐标原点(0,0)到此点的方向。

速度是每个时间单位的位置变化率。例如,(1,5)意味着每一个时间单位(比如每帧),x坐标将改变+1,y坐标将改变+5。因此,新位置将是(x,y)+(1,5)=(x+1,y+5)

加速度是每个时间单位的速度变化率。假设加速度为(1,1),那么速度在x方向上会改变+1,在y方向上会变化+1。

示例:对象的当前位置为(100200),其当前速度为(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.