3D数学3-基础矩阵2

05/10/2020
05/14/2020 绕y轴旋转与绕x,z轴旋转公式是不一样的

矩阵和线性变换

变换物体与变换坐标系

变换物体与变换坐标系是等价的。将物体变换一个量等价于将坐标系变换一个相反的量。比如顺时针旋转物体20度等于逆时针旋转坐标系20度。

旋转

旋转一个向量原向量的长度是不会变的,如果先想象2D中绕着原点旋转的情形。

2D绕原点旋转

[ c o s θ s i n θ s i n θ c o s θ ] \begin{bmatrix} cos\theta&sin\theta\\ -sin\theta&cos\theta \end{bmatrix}
在2D坐标系绕原点旋转

3D绕x,y,z轴旋转

  • 一定要区分左手还是右手坐标系,知道正方方向
    [ 1 0 0 0 c o s θ s i n θ 0 s i n θ c o s θ ] \begin{bmatrix} 1&0&0\\ 0&cos\theta&sin\theta\\ 0&-sin\theta&cos\theta \end{bmatrix}
    绕x轴的3D旋转矩阵
    [ c o s θ 0 s i n θ 0 1 0 s i n θ 0 c o s θ ] \begin{bmatrix} cos\theta&0&-sin\theta\\ 0&1&0\\ sin\theta&0&cos\theta \end{bmatrix}
    绕y轴的3D旋转矩阵,这边和其他旋转矩阵不一样,z轴变成x轴,x轴变成y轴
    [ c o s θ s i n θ 0 s i n θ c o s θ 0 0 0 1 ] \begin{bmatrix} cos\theta&sin\theta &0\\ -sin\theta&cos\theta &0\\ 0&0&1 \end{bmatrix}
    绕z轴的3D旋转矩阵

3D绕任意轴旋转

变换矩阵的表达式
( v ( v n ) n ) c o s θ + ( n × v ) s i n θ + ( v n ) n (v-(v\cdot n)n)cos\theta + (n\times v) sin\theta + (v\cdot n)n

缩放

沿坐标轴缩放

[ k x 0 0 0 k y 0 0 0 k z ] \begin{bmatrix} k_x&0 &0\\ 0&k_y &0\\ 0&0&k_z \end{bmatrix}

沿任意方向缩放

基础表达式:
p n e w = p + ( k 1 ) ( p n ) n p_{new} = p + (k-1)(p\cdot n)n

正交投影(平行投影)

向坐标轴(2D)或平面投影

投影意味着降维操作。有一种方法在某个方向上用零作为缩放因子。
[ 1 0 0 0 ] \begin{bmatrix} 1&0\\ 0&0\\ \end{bmatrix}
向x轴投影的2D矩阵
[ 0 0 0 1 ] \begin{bmatrix} 0&0\\ 0&1\\ \end{bmatrix}
向y轴投影的2D矩阵
[ 1 0 0 0 1 0 0 0 0 ] \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&0 \end{bmatrix}
向xy平面投影的3D矩阵

向任意直接或平面投影

通过修改上面的缩放因子等于0,进一步得到平面投影。

镜像(反射)

使缩放因子等于-1,得到反射。

沿直线(2D)或平面翻折(3D)

切变

坐标系的扭曲变换。切变的时候角度会发生变化,但是面积和体积却保持不变。基本思想是将某一坐标的乘积加到另一上。
例如,2D中,将y乘以某个因子然后加入到x上,得到x = x + sy.
[ 1 0 s 1 ] \begin{bmatrix} 1&0\\ s&1\\ \end{bmatrix}
2D切变,x坐标根据坐标y被切变,参数s控制着切变的方向和量
[ 1 0 0 0 1 0 s t 1 ] \begin{bmatrix} 1&0&0\\ 0&1&0\\ s&t&1 \end{bmatrix}
3D中,x,y坐标被坐标z改变。
包含切变与旋转的变换很容易混淆。

变换的组合

物体坐标系矩阵到世界坐标系矩阵再到摄影机坐标系矩阵,经过两次变换矩阵。也可以直接从物体坐标系矩阵到摄影机坐标系矩阵。
P表示物体方向或者位置
P = P M P_{世界} = P_{物体}M_{物体\rightarrow世界}
P = P M P_{摄像机} = P_{世界}M_{世界\rightarrow摄像机}
P = ( P M ) M = P ( M M ) P_{摄像机} = (P_{物体}M_{物体\rightarrow世界})M_{世界\rightarrow摄像机} = P_{物体}(M_{物体\rightarrow世界}M_{世界\rightarrow摄像机})
P = P M P_{摄像机} = P_{物体}M_{物体\rightarrow摄像机}

变换分类

线性变换

F ( a + b ) = F ( a ) + F ( b ) F ( j k a ) = k F ( a ) F(a+b) = F(a) + F(b) \\ F(jka) = kF(a)
满足上述函数等式就是线性变换。例如两个向量相加变换与各自分别先变换再相加的结果是一样的。

仿射变换

仿射变换是指线性变换后接着平移。

可逆变换

存在一个逆变换可以撤销原变换。

等角变换

如果变换前后两向量夹角的大小和方向都不改变。例如平移,旋转,和均匀缩放。

正交变换

刚体变换

只改变物体的位置和方向,不包括形状。所有的长度、角度、面积和体积都不变。平移和旋转是仅有的刚体变换

矩阵的行列式

方阵M的行列式记作 |M| 或 “det M”。求法就是对角线和反对角线各自相乘,然后用主对角线的积减去反对角线元素的积。

行列式的公式计算

[ m 11 m 12 m 21 m 22 ] = m 11 m 22 m 12 m 21 \begin{bmatrix} m_{11}&m_{12}\\ m_{21}&m_{22}\\ \end{bmatrix} = m_{11}m_{22} - m_{12}m_{21}
2X2 行列式

图算法

3D数学 9.2

余子式

M i j M^{ij}
表示去掉第i行和第j列之后的矩阵

代数余子式

c i j = ( 1 ) i + j M i j c_{ij} = (-1)^{i+j} |M^{ij}|

矩阵行列式重要特性

  • |AB| = |A||B|
  • |MT| = |M|
  • 如果矩阵的任意行或列全为零,那么它的行列式等于零

几何解释

在2D中,行列式表示面积,在3D中表示体积。

矩阵的逆

M-1
I 为单位矩阵
M(M-1) = M-1M = I

标准伴随矩阵

记作“adj M”
M的标准伴随矩阵是代数余子式矩阵的转置。

代数余子式矩阵

重要性质

  • |AB| = |A||B|
  • |MT| = |M|
  • 如果矩阵的任意行或列全为零,那么它的行列式等于零。
  • 交换矩阵的任意两行或两列,行列式变负
  • 任意行或列的非零积加到另一行或列不会改变行列式的值

几何解释

  • 2D中,行列式等于以基向量为两边的平行四边形的有符号面积
  • 3D中,平面六面体的体积
  • 行列式为0,矩阵包含投影、如果为负,包含镜像

矩阵的逆

运算法则

M ( M 1 ) = M 1 M = I M(M^{-1}) = M_{-1}M = I

几何解释

矩阵的逆在几何上可以计算变换的相反变换,能撤销元变换的变换
( v M ) M 1 = v ( M M 1 ) = v (vM)M^{-1} = v(MM^{-1}) = v

  • 并非所有矩阵都有逆

标准伴随矩阵

  • 记作 “adj M”,定义为M的代数余子式的转置矩阵

逆公式

M 1 = a d j M M M^{-1} = \frac{adjM}{|M|}

性质

  • ( M 1 ) 1 = M (M^{-1})^{-1} = M
  • I 1 = I I^{-1} = I
  • 矩阵转置的逆等于它的逆矩阵的转置: ( M T ) 1 = ( M 1 ) T ) (M^T)^{-1} = (M^{-1})^{T})
  • ( A B ) 1 = B 1 A 1 (AB)^{-1} = B^{-1}A^{-1}

正交矩阵

方阵M是正交的,M与M的转置的积等于单位矩阵
M M T = I = M MM^T = I = M正交
同时逆矩阵与原矩阵的积也是单位矩阵
M M 1 = I MM^{-1} = I
所以转置与逆相等
M T = M 1 M^T = M^{-1}
由于逆矩阵的计算量很大,如果是正交矩阵,我们就不需要去求逆矩阵来撤销,直接使用转置来撤销变换后的矩阵

正交性质

  • 矩阵的每一行都是单位向量
  • 矩阵的所有行互相垂直

缺点

证明正交性质与求逆矩阵的代价基本相等。

4 X 4齐次空间

关于如何平移3D向量。w代表1或者0。x,y,z,w一共4个分量的4D向量

w分量含义

当在2D空间中,加入第三个分量w,可以看成2D点(x,y)用齐次坐标表示为(x,y,1),所有的点都在1这个平面上,可以想象成3D中的Z轴。那那些不在w=1上的点,则将它们投影到w=1的平面上,所以齐次坐标(x,y,z)映射的实际2D点为(x/w,y/w)。
大家都知道,除一个大于1的分量w,获得的点或缩小,所以这就是近大远小的方法,它们最后会交互到一点上去。

平移矩阵

[ x y z 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 Δ x Δ y Δ z 1 ] = [ x + Δ x y + Δ y z + Δ z 1 ] \begin{bmatrix} x&y&z&1 \end{bmatrix} \begin{bmatrix} 1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ \Delta x&\Delta y&\Delta z&1\\ \end{bmatrix} = \begin{bmatrix} x+\Delta x&y+\Delta y&z+\Delta z&1\\ \end{bmatrix}
这个矩阵针第四行是对w分量的影响,实现了对点的移动操作。如果点坐标是(x,y,z,0)表示这个点在无穷原上,它无法被4X4矩阵影响,得到的点不会被平移。

  • 4D向量的w分量可以开关4X4矩阵的平移部分。
  • 4D齐次空间与4D平移矩阵是不一样的意思。

一般仿射变换

3D中矩阵仅能表达3D中的线性变换,所以当时没有考虑平移。平移这个操作需要升维。4X4矩阵的延伸更多的可能:通过嵌套矩阵和逆矩阵的联用

  • 绕不通过原点的轴旋转
  • 沿不穿过原点的平面缩放
  • 沿不穿过原点的平面镜像
  • 沿不穿过原点的平面正交投影

透视投影(近大远小)

运用4D投影到3D面上,使分向量除w。我们知道齐次坐标可以进行投影。
[ x y z w ] = [ x / w y / w z / w 1 ] \begin{bmatrix} x&y&z&w \end{bmatrix} = \begin{bmatrix} x/w&y/w&z/w&1\\ \end{bmatrix}

小孔成像

当我们知道小孔到投影平面的距离,设为d. 关于3D空间点投影之后的坐标为
[ d x / z d y / z d ] = [ x y z z / d ] \begin{bmatrix} dx/z &dy/z &d \end{bmatrix} = \begin{bmatrix} x &y &z & z/d \end{bmatrix}
经过3D到4D升维操作的点坐标。

矩阵如何影响最后一个系数呢

[ 1 0 0 0 0 1 0 0 0 0 1 1 / d 0 0 0 1 ] \begin{bmatrix} 1&0&0&0\\ 0&1&0&0\\ 0&0&1&1/d\\ 0&0&0&1\\ \end{bmatrix}
那个位置显示出小孔到投影平面z的距离。也可以对x,y其他平面进行投影。

透视投影与正交投影

一个近大远小,一个完全平移不产生变化。

3DMath 第8,9章

猜你喜欢

转载自blog.csdn.net/weixin_44200074/article/details/105992178