线性代数是数学的一个分支,它与向量的研究有关。向量可以表示为数字数组。这个数字数组,可以假设任何所需的长度,有时也被称为数学中的元组。如果我们想要具体说明数字数组的长度,我们可以选择说n元组,其中n代表向量中元素的数量。下面是具有6个元素的向量的数学符号示例:
V=(a,b,c,d,e,f);
其中a,b,c,d,e,f是实数。
在计算机图形学中,矢量可用于表示空间中的位置或方向。我们还将能够以非常强大和紧凑的方式通过一系列操作来转换(或修改)这些向量。通过所谓的线性变换实现变换矢量内容的过程。
点和向量:
点是三维空间中的位置。矢量通常表示三维空间中的方向(以及一些相应的大小)。矢量可以被认为是指向各个方向的箭头。点和矢量是相似的,因为它们都由前面提到的元组符号表示:
V=(x,y,x);
其中x,y,z是实数。
在数学方面,矢量可以是任意的甚至是无限大小的;
在计算机图形学中,有时为了方便起见,会添加第四个元素。下面给出了具有齐次坐标的点的示例:
P=(x,y,z,w);
转换操作:
在CG中对点进行的最常见操作之一就是简单地在空间中移动矢量。这种转换更具体地称为平移,它在渲染过程中起着至关重要的作用。 平移算子只不过是对点的线性变换(可以看作输入位置点)。应用于矢量(记住,是一个方向),平移没有意义。这是因为向量开始的地方(也就是它居中的地方)并不重要;无论位置如何,指向相同方向的相同长度的所有“箭头”都是等效的。通常在矢量上使用另一个线性变换:旋转。
P→Translate→P'
V→Rotate→V'
向量的长度在CG中非常重要。当向量的长度恰好为1时,我们说向量是标准化的。归一化矢量的行为涉及改变矢量使得其长度变为1,但其方向保持不变。在计算机图形学中,大多数时候向量被归一化。但是,在某些情况下,不对它们进行归一化可能是优选的,因为向量的长度是有意义的。
假设从A点到B点追踪一条线。创建的线就是一个矢量,它表示点B相对于点A的位置。也就是说,它给出B的方向,好像你站在A点。在这种情况下,矢量的长度表示从A到B的距离。某些算法有时需要此距离。向量的归一化通常是应用程序中的错误来源;
法线: