Math 什么是三维矢量,它与三维点有何不同?
在3D游戏数学的上下文中,3D向量是否与3D点元组(x、y、z)不同Math 什么是三维矢量,它与三维点有何不同?,math,3d,vector,vertices,Math,3d,Vector,Vertices,在3D游戏数学的上下文中,3D向量是否与3D点元组(x、y、z)不同 如果它们不同,那么如何计算给定3d点的向量呢?不同之处在于向量是一个代数对象,可以作为或不作为某个空间中的坐标集给出。(感谢平房比尔纠正了我的马虎) 一个点就是由坐标给出的一个点。一般来说,人们可以将两者混为一谈。如果给你一组坐标,并告诉你它们构成了一个“点”,而没有进一步的信息(基础的选择等),那么你可以把这组数字交回去,并合法地声称已经生成了一个向量 两者最大的区别在于,对一方做你能对另一方做的事情是没有意义的。比如说,
如果它们不同,那么如何计算给定3d点的向量呢?不同之处在于向量是一个代数对象,可以作为或不作为某个空间中的坐标集给出。(感谢平房比尔纠正了我的马虎) 一个点就是由坐标给出的一个点。一般来说,人们可以将两者混为一谈。如果给你一组坐标,并告诉你它们构成了一个“点”,而没有进一步的信息(基础的选择等),那么你可以把这组数字交回去,并合法地声称已经生成了一个向量 两者最大的区别在于,对一方做你能对另一方做的事情是没有意义的。比如说,
有各种各样的向量空间,而向量是“点和方向”(或任何它应该是什么)的概念实际上是相当空洞的。向量是一条线,是一系列点,但它可以由两点表示,起点和终点
如果以原点为起点,则可以描述仅给出终点的向量。向量表示从一种状态到另一种状态的变化。要创建一种状态,需要两种状态(在本例中为点),然后从最终状态中减去初始状态,以得到结果向量。在游戏数学的上下文中,没有区别 点是仿射空间的元素。†向量是向量(也称为线性)空间的元素。当您在仿射空间中选择原点时,它会自动在该仿射空间上诱导线性结构。反之亦然:如果您有向量空间,它已经满足仿射空间的所有公理 事实上,当涉及到计算时,用数值表示仿射空间的唯一方法是使用数字元组,这也形成了向量空间 游戏中的每个对象都有一个原点,知道它在哪里是至关重要的。该原点是相对于世界原点设置的,而世界原点是相对于摄影机/视口的原点设置的。对象的顶点表示为向量——从对象原点的偏移量。使用矩阵乘法变换对象--这也是一个纯粹的向量空间运算(你不能在不指定原点的情况下将一个仿射点乘以一个矩阵)。等等,等等。因为我们看到所有我们可能认为是“点”的三元组数字实际上是局部坐标系中的向量 那么,有什么理由在代数研究之外区分这两种吗?这是一种不必要的抽象,不必要的抽象是有害的(KISS)。所以我的答案是否定的,只使用一种向量类型
†或游戏开发环境之外的任何拓扑空间。向量是状态的变化。一个点是静态点。两个向量可以平行或垂直。你可以有两个向量的乘积,这是第三个向量。你可以将一个向量乘以一个常数。你可以添加两个向量。
所有这些操作都不允许在点上。所以程序化的,如果你认为两者都是C++类,那么向量类中会有很多这样的方法,但可能只得到和设置了点。 在3D游戏数学的上下文中,3D向量是否与3D点元组(x、y、z)不同 传统意义上的矢量意味着方向和速度。一个点可以被认为是一个时间步长的世界原点的矢量。(即使它在数学上可能不纯净) 如果它们不同,那么如何计算给定3d点的向量 目标塔是常用的助记符 使用时要小心。生成的向量实际上是normal*velocity。如果您想将其更改为在游戏应用程序中有用的东西:您需要首先对向量进行规范化 示例:乔在(10,0,0),他想去(10,10,0)
目标塔:(10,10,0)-(10,0,0)=(0,10,0)
对结果向量进行规格化:(0,1,0)
应用“物理学”:(0,1,0)*速度*经过的时间<速度=3,我们可以说,为了便于计算,计算机在最后一步和这一步之间冻结了整整2秒> =(0,6,0)
将生成的向量添加到Joes空间中的当前点,以获得他的下一个空间点:…=(10,6,0) 法线=向量/(sqr)
u(i) = A(i, j)v(j)