什么是3D矢量?它与3D点有何不同?

时间:2010-10-12 10:50:23

标签: math 3d vector vertices

在3D游戏数学的上下文中,3D矢量是否与3D点元组(x,y,z)不同?

如果它们不同,那么如何计算给定3d点的矢量?

7 个答案:

答案 0 :(得分:14)

不同之处在于矢量是一个代数对象,可能会或可能不会作为某个空间中的坐标集给出。 (感谢bungalobill纠正我的邋。)。

一个点只是坐标给出的一个点。通常,人们可以将两者混为一谈。如果给你一组坐标,并告诉它们构成一个没有进一步信息(选择基础等)的“点”,那么你可以将这组数字交回来并合法声称已生成一个向量。 / p>

两者之间最大的区别在于,对另一个人做的事情是没有意义的。例如,

  1. 您可以添加矢量:< 1 2 3> +< 3 2 1> =< 4 4 4>
  2. 您可以将数字乘以(或缩放)数字(通常称为标量)   2 *< 11 1> =< 2 2 2>

  3. 你可以问两点有多远:d((1,2,3),(3,2,1)= sqrt((1 - 3) 2 + (2 - 2) 2 +(3 - 1) 2 )= sqrt(8)〜= 2.82

  4. 考虑矢量和点之间关联的一种直观的好方法是矢量告诉你如何从原点(我们分配坐标(0,0,0)的空间中的一个点)与其相关的观点。

    如果您翻译坐标系,那么您将获得同一点的新矢量。虽然构成该点的坐标将经历相同的转换,因此在两者之间进行相当容易的混合。

    同样,如果旋转坐标系或应用其他一些变换(例如剪切),那么与该点相关联的坐标和矢量也将发生变化。

    矢量也可能是完全不同的东西,例如区间[0,1]上的有界函数是一个向量,因为你可以将它乘以一个实数并将它加到另一个函数的间隔上。它将满足某些要求(即向量空间的公理)。在这种情况下,人们认为在[0,1]中每个实数x有一个坐标,其中该坐标的值只是f(x)。所以这是无限维向量空间的最简单的例子。

    存在各种各样的向量空间,并且向量是“点和方向”(或者它应该是什么)的概念实际上是非常空的。

答案 1 :(得分:2)

向量表示从一个状态到另一个状态的变化。要创建一个,需要两个状态(在本例中为点),然后从最终状态中减去初始状态,以获得结果向量。

答案 2 :(得分:1)

  

在3D游戏数学的上下文中,3D矢量是否与3D点元组(x,y,z)不同?

传统矢量意味着方向和速度。一个点可以被认为是来自一个时间步的世界的矢量。 (尽管它可能不被认为是数学上纯的)

  

如果它们不同,那么如何计算给定3d点的矢量?

目标塔是常见的助记符。

小心你对此的使用。得到的矢量实际上是正常的*速度。如果你想将它改成游戏应用程序中有用的东西:你需要首先规范化矢量。

示例:Joe在(10,0,0),他想去(10,10,0) 目标塔:(10,10,0) - (10,0,0)=(0,10,0)
归一化得到的矢量:(0,1,0)
应用“物理”:(0,1,0)* speed * elapsed_time<速度= 3,我们会说计算机在最后一步和这一计算机之间冻结整整2秒以便于计算> =(0,6,0)
将得到的矢量添加到空间中的Joes当前点,以获得他在空间中的下一个点:... =(10,6,0)

正常=向量/(sqrt(x * x + y * y + z * z))

......我想我在这里有一切

答案 3 :(得分:1)

向量是一个更普遍的想法,即3D空间中的一个点。

矢量可以有2,3或n个维度。除了位置之外,它们代表物理世界中的许多量(例如,速度,力,加速度)。

数学家会说矢量是根据这条规则变换的一阶张量:

u(i) = A(i, j)v(j)

你需要点和矢量,因为它们 不同。 3D空间中表示位置的点是矢量,但每个矢量都不是3D空间中的点。

然后是计算机科学概念的矢量作为容器 - 它是一组值或引用的抽象。这是与数学家的向量概念不同的概念,因为每个向量容器不需要遵守一阶张量变换定律(例如,OrderItems的Vector)。这是另一个独立的想法。

在谈论向量和点时,记住所有这些是很重要的。

答案 4 :(得分:-1)

不,没有区别。点是矢量。如果你想将矢量看作方向+幅度,那么点就是坐标原点的矢量。

答案 5 :(得分:-1)

矢量是状态的变化。一点是静态点。两个矢量可以是平行的或垂直的。你可以有两个向量的乘积,它是第三个向量。您可以将向量乘以常量。您可以添加两个向量 所有这些操作都是不允许的。因此,如果您认为两者都是C ++类,那么程序方面也是如此,在向量类中会有很多这样的方法,但可能只有Get和Set用于点。

答案 6 :(得分:-2)

矢量是一条线,它是一系列点,但它可以用两个点表示,即起点和终点。

如果您将原点作为起点,那么您可以描述仅给出终点的矢量。