Math 二维空间对策中的线性代数

Math 二维空间对策中的线性代数,math,2d,linear-algebra,algebra,Math,2d,Linear Algebra,Algebra,我目前正在游戏中自学线性代数,我几乎准备好在一个简单的2D空间中使用我新发现的知识。我计划使用一个数学库,用向量/矩阵等来表示位置和方向,不像我上一个游戏那样简单,不需要它 我只是想澄清一下这个问题。首先,用4x4齐次坐标表示二维空间中的位置是否有效,如下所示: [400,300,0,1] 这里,为了简单起见,假设我们在800×600的固定分辨率(和屏幕空间)中工作,所以这应该是屏幕中间的一个点。 这有效吗 假设这个位置代表玩家的位置,如果我使用向量,我可以代表玩家面对的方向: [400,400

我目前正在游戏中自学线性代数,我几乎准备好在一个简单的2D空间中使用我新发现的知识。我计划使用一个数学库,用向量/矩阵等来表示位置和方向,不像我上一个游戏那样简单,不需要它

我只是想澄清一下这个问题。首先,用4x4齐次坐标表示二维空间中的位置是否有效,如下所示:

[400,300,0,1]

这里,为了简单起见,假设我们在800×600的固定分辨率(和屏幕空间)中工作,所以这应该是屏幕中间的一个点。 这有效吗

假设这个位置代表玩家的位置,如果我使用向量,我可以代表玩家面对的方向:

[400,400,0,0]

所以这个向量表示玩家面对屏幕的底部(如果我们在屏幕空间工作的话)

这有效吗

最后,如果我想将玩家旋转90度,我知道我会将向量乘以矩阵/四分之一,但这就是我困惑的地方。我知道四分之一更有效,但我不确定如何旋转玩家面对的方向

有人能解释一下构造四分之一并乘以我的面向量背后的数学原理吗

我还听说OpenGL和D3D以不同的方式表示向量,这是如何工作的?我不太明白


在几个月后进入3D空间之前,我正在尝试在游戏中掌握基本的线性代数。

您可以将您的位置表示为4D坐标,但是,我建议只使用所需的尺寸(即2D向量)

方向通常表示为从玩家位置开始指向相应方向的向量,因此(0,1)的方向向量更容易处理。 给定该向量,您可以使用旋转矩阵。在这种情况下,四元数并不是真正必要的,因为您不想绕任意轴旋转。您只想绕z轴旋转。辅助程序库应提供创建此类矩阵的方法,并使用它变换向量(作为法线变换)


我不确定OpenGL和D3D矢量表示法之间的区别。但我认为,这都是关于内存使用的,这应该是你不想担心的事情。

我不能回答你所有的问题,但就什么是“有效”或“无效”而言,这完全取决于它是否包含所有信息你需要的,而且对你有意义


此外,一个物体所面对的方向是一个非单位向量,这有点奇怪。基本上你不需要向量有多长的信息来计算它们所面对的方向,你只需要能够计算出它们从0度或弧度旋转的弧度或度数e通常只是直接对弧度或度数进行编码,因为许多线性代数库允许您使用它们进行向量数学。

您的问题很大程度上取决于一个或另一个库的实现细节。我强烈建议最好的方法可能是选择“最佳拟合”图书馆,然后就开始玩它一点。嗯…谢谢你的建议。跳进去开始玩东西似乎总是个好主意。我很感激你的回答,我还在研究这些想法。谢谢你的帮助。好的,谢谢你的回答。我正在考虑使用单位长度的向量,正如你所说的帮助,这样做更有意义,也更容易处理。另外,感谢你澄清了关于四分之一的问题,我只是想理解我正在使用的数学库背后的数学。这就是我阅读Lengyel的《3D游戏编程数学》的全部原因。我正试图更好地理解正在发生的事情。