计算机图形学之矩阵变换

重点是理解矩阵的含义:矩阵实际上是一种坐标系的转换

理解矩阵的几何功能:

  1. 矩阵是一种线性变换(线段变换后还是线段,而且原点不会改变)
  2. 矩阵是一种映射,映射能够是一对一,也能够是一对多
  3. 矩阵是一种空间变换,每一种矩阵都是有自己的几何意义,而不是单纯的数字组合

理解矩阵的形式含义(矩阵在左,向量在右):3d

  1. 方阵满秩,是进行当前空间的坐标变换,不会进行维度的升高和下降
  2. M×N(M>N),这种矩阵是一种升维矩阵,几何意义如3×2,就如同把一个平面进行一个方向维度的延展(当秩为2时),变成一个三维的空间,固然以前空间中的点(x,y)在提高维度的过程当中在三维空间中仍是一个平面分布,只是多了一个值全相等的第三个维度的值而已
  3. M×N(M<N),这是一种降维矩阵,几何意义如2×3(当秩为2时),是把三维的向量进行一个维度的压缩,挤压成一个平面,这个时候固然会出现不少个点压缩到一个二维坐标的状况
  4. 方阵不满秩,其实和以前是同样的,不满秩就说明这个维度是虚的,没什么用,若是秩是一的话就是挤压成一条线。

一.平移矩阵

1.1二维平移矩阵

形式:平移矩阵的形式是什么样的呢。cdn

必定是一个满秩的矩阵,由于咱们并不会进行维度的变换。 坐标轴的方向和长度是不变的,由于矩阵运算的本质是改变的参考系的X,Y。
寻找矩阵:blog

那么什么样的矩阵可以使得一个点进行平移操做呢,由于平移操做并不会改变参考系XY的方向和单位向量的长度,因此实际上,在当前的维度中,咱们并不可能作到,为何呢?由于咱们以前说过,矩阵的线性变换并不会改变原点的位置,矩阵是默认原点就是(0,0),在矩阵中填充任何的值都没办法改变这个约定熟成的决定。那么怎么作到呢,咱们利用更高一维的矩阵,也就是三维矩阵进行操做,其实就是在更高的维度当中,解决咱们的原点平移问题。it

在这里,须要说明的是,若是咱们使用的是左矩阵右向量的形式,那么构成咱们全新的坐标系的向量应当是矩阵中的列。咱们在增长了一个新的维度,(dx,dy,1),dx,dy就是咱们要平移的数量,而增长一个1,是由于要保持秩是3,毕竟咱们是从更高一层的维度来转移咱们的坐标原点的。

从几何意义来讲,平移矩阵其实就是增长一个并不正交的Z轴(dx,dy,1)来进行一个坐标轴的从新定义,继而将坐标转换位置。io

这里须要注意的是,点V=(x,y,1),并非再是咱们二维坐标上的点,而是以P的列向量为基所构成的三维空间上的点,只是说咱们把二维的点变为V=(x,y,1)而后通过对应矩阵P的线性变换,最终获得平移点的位置。class

这个过程可能有些难以理解,可是又是那么的巧妙和精确。咱们所构造的矩阵P,是经过新空间中基的列向量来构成的,其中的列向量中每个坐标值对应的数值,其实都是以咱们原有的基x=(1,0),y=(0,1)来决定的。P这个矩阵,是一种线性的变换,是把用它坐标系中表示的点的位置坐标,来映射到原先咱们肯定它的时用的基的空间里。基础

这其实就是一种投影运算,对V的每一个坐标值进行投影。原理

而p的逆矩阵,其实就是把咱们的坐标映射到P的坐标中的运算。lazyload

1.2三维平移矩阵

当咱们理解了二维的平移矩阵,那么,其实三维的矩阵也是同样的原理gc

二.旋转矩阵

旋转矩阵的基础含义就是绕原点的旋转。

2.1二维旋转矩阵

形式:旋转矩阵的形式是什么样的呢。

必定是满秩的,由于没有进行维度变换 坐标轴的长度应该是不变的,由于没有进行放缩操做,可是角度应该是要变的。
寻找矩阵:

假设咱们有点v=(x,y),坐标轴是标准的坐标轴,角度是为,是与x轴正方向的夹角。

首先,咱们已经知道了一些知识,那就是寻找新的坐标轴的基,且基的长度还是1.那么

这就是咱们所须要的旋转矩阵

2.2三维旋转矩阵

对于三维来讲是差很少的,不过由于旋转轴的不一样,旋转矩阵的形状也是不一样的

能够结构成这么一段话,对于标准坐标系而言,要将一个点V移动到V1(在这里V和V1的表示都是标准坐标系下的),那么用新基构成的矩阵P变换V,获得V1。这是由于,V在标准坐标系中的坐标和V1在P的坐标系下的坐标是同样的。

因此,矩阵变换的并非V,而是V1。由于P的做用是把自己的坐标里的点变成标准坐标系的点的坐标,因此变换的其实不是标准坐标系里的V,而是自身的V1,由于他们二者的值是相同的,会有很强的误导性,可是并非说他们空间中的绝对位置是相同的。仅仅由于参考系的变换,致使了他们的值相同。

三.放缩矩阵

放缩矩阵其实就很简单,图形的放缩其实就是咱们自己的坐标轴的基的放缩

四.投影矩阵

将点v,投影到一个平面A,投影方向是B的法向量n。

形式:正交投影矩阵的形式是什么样的呢。

应该是高维矩阵,由于其中包含平移操做 应该是一个不满秩的矩阵,毕竟咱们的坐标都放到了一个面上 由于是正交投影,因此咱们压缩的,其实就是沿着B法向量上的点 寻找矩阵:咱们设V=(vx,vy,vz),A有一点a=(ax,ay,az),面的法向量N=(Nx,Ny,Nz)

  1. 首先确立平面上的坐标系,经过点A,和法向量N创建坐标系(X*,Y*,Z*).
  2. 其中Z是法向量N的方向,转向是没有关系的。
  3. 若是这么就完了并不能完成平移操做,仅仅完成的是坐标系方向的转向,位置上还须要平移
  4. 因此须要原点到平面的距离矢量L
  5. 创建最后的投影矩阵 注意:咱们这里所须要的,是应该求逆矩阵,当咱们所须要的是投影坐标表示而不是在原先坐标系表示的时候
相关文章
相关标签/搜索