十七 图形图像开发中的3D数学
2020-08-05 本文已影响0人
王俏
坐标系
左手坐标系和右手坐标系
image-
世界坐标系:经纬坐标
原点在本初子午线与赤道的交点 -
物体坐标系
和物体的位置的所处的方向相关联,有时也被称作模型坐标系(模型顶点的坐标都是在模型坐标系中描述的) -
摄像机坐标系:和观察者相关联
摄像机在原点,x轴向右,z轴向前,y轴向上 -
惯性坐标系:为简化世界坐标系到物体坐标系的转换,引入的坐标系
向量的运算和几何意义 向量的点乘和叉乘
参照 https://juejin.im/post/6850418118155501582
矩阵的数学意义
方阵:行数和列数相同的矩阵
单位矩阵:是一种特殊的对角矩阵,n维单位矩阵记做 In。是n * n 矩阵。对象元素为1.其他元素为0。
矩阵转置
一个r * c 矩阵M。M的转置记做M^T,是一个 c * r 矩阵。它的列由M的行组成。可以从另⽅面理解。 (Mij)^T = Mji ,即沿着矩阵的对角线翻折。
向量的转置:
image
image
标量与矩阵的乘法计算
image矩阵相乘
A ✖ B 计算的前提条件是: A的列数 = B的行数
矩阵相乘法则:对结果中的任意元素Cij,取A的第i行和第j列,将行和列中的对应元素相乘。然后将结果相加 (等于A的i列列和B的j列列的点积),Cij就等于这个和。
image注意:
- 单位矩阵左乘/右乘矩阵,都等于原矩阵
- 不满足交换律 AB != BA
- 满足结合律(前提是矩阵相乘有意义) ABC= A(BC)
- (kA)B = k(AB) = A(kB)
- (AB)^T = (BT)(AT)
向量与矩阵乘法
⾏向量左乘矩阵时,结果是⾏向量;
列向量右乘矩阵时,结果是列向量;
行向量右乘矩阵时,结果是无意义;
列向量左乘矩阵时,结果是无意义;
矩阵与向量相乘 注意事项:
1.结果向量中的每个元素都是原向量与矩阵中单独行或列的点积; 2.矩阵一向量乘法满足对向量加法的分配律,对于向量v,w 和 矩阵M 有,
(v + w)M = vM + wM;
为什么要使用行向量?(偏向于书写⽅便)
- 1.在文字中使用行向量的形式更更加好书写;
- 2.用矩阵乘法实现坐标系转换时,向量左乘矩阵的形式更加方便
- 3.DirectX使用的是行向量
为什么要使用列向量?
- 1.等式中使⽤列向量形式更好
- 2.多本计算机图形学都是使用的列向量
- 3.OpenGL 使⽤的是列向量
矩阵的几何意义:
- 1.⽅阵的行能被解释为坐标系的基向量;
- 2.为了将向量从原坐标系变换到新坐标系,⽤它乘以一个矩阵。
- 3.从原坐标系到这些基向量定义的新坐标系的变化是一种线性变换。线性变换保持直线和平行线。但角度、⻓度 面积或体积可能会改变。
- 4.零向量乘以任何矩阵仍然得到零向量。因此,⽅阵所代表的线性变换的原点和原坐标系原⼀一致。变换不包含原点。
- 5.可以通过想象变换后的坐标系的基向量来想象矩阵。这些基向量在2D中构成L形。在3D构成“三⻆架”型。⽤一个盒⼦以及辅助更更有助于理解
2D下的旋转矩阵公式推演
image image3D下的旋转矩阵公式推演
- 围绕X轴旋转
- 围绕Y轴旋转
- 围绕Z轴旋转
- 围绕n轴旋转
缩放与平移矩阵公式推演
- 沿坐标轴2D的缩放矩阵
- 沿坐标轴3D的缩放矩阵
- 沿任意方向缩放