数学基础P1-P6

数学基础 P1-P6

1. 向量

1.1 定义

  • 几何定义:

    $\vec{a}=\vec{AB}=B-A$
    几何意义:
    长度 $|\vec{a}|$ 向量的模
    方向 $\hat{a}=\vec{a}/|\vec{a|}$ 单位向量

  • 数学定义

    向量矩阵 $A=\pmatrix{x\y}$
    转置矩阵 $A^T=(x,y)$
    矩阵的模 $|A|=\sqrt{x^2+y^2}$

1.2 运算

1.2.1 加法运算

  • 几何学

    四边形法则三角形法则
  • 数学
    $A=\pmatrix{x_{A1}\y_{A2}}$ $B=\pmatrix{x_{B1}\y_{B2}}$
    $A+B=\pmatrix{x_{A1}+x_{B1}\y_{A2}+y_{B2}}$

运算结果:新向量

1.2.2 点乘

  • 几何学

    $\vec{a}\cdot\vec{b}=|\vec{a}||\vec{b}|cos\theta$
    一般向量:$cos\theta=\cfrac{\vec{a}\cdot\vec{b}}{|\vec{a}||\vec{b}|}$
    单位向量: $cos\theta=\hat{a}\cdot\hat{b}$

    适用规则:

    • 交换律 $\vec{a}\cdot\vec{b}=\vec{b}\cdot\vec{a}$
    • 分配律 $\vec{a}\cdot(\vec{b}+\vec{c})=\vec{a}\cdot\vec{b}+\vec{a}\cdot\vec{c}$
    • 结合律 $(k\vec{a})\cdot\vec{b}=\vec{a}\cdot(k\vec{b})=k(\vec{a}\cdot\vec{b})$
  • 数学

    • 2D:$\vec{a}\cdot\vec{b}=\pmatrix{x_a\y_a}\cdot\pmatrix{x_b\y_b}=x_ax_b+y_ay_b$
    • 3D:$\vec{a}\cdot\vec{b}=\pmatrix{x_a\y_a\z_a}\cdot\pmatrix{x_b\y_b\z_b}=x_ax_b+y_ay_b+z_az_b$

运算结果:数字

应用:

  1. 计算两向量夹角(光线反射角)
    $cos\theta=\cfrac{\vec{a}\cdot\vec{b}}{|\vec{a}||\vec{b}|}$

  2. 计算投影(垂直分解)

  3. 判断两向量方向

    $\vec{a}\cdot\vec{b}\cases{>0 \Rightarrow同向\=0 \Rightarrow垂直\<0 \Rightarrow逆向}$

1.2.3 叉乘

  • 几何学

    右手螺旋定则确认新向量方向
    适用规则:

    • 交换律:$\vec{a}\times\vec{b}=-\vec{b}\times\vec{a}$

    • 分配律:$\vec{a}\times(\vec{b}+\vec{c})=\vec{a}\times\vec{b}+\vec{a}\times\vec{c}$

    • 结合律:$\vec{a}\times(k\vec{b})=k(\vec{a}\times\vec{b})$

    • 零向量:$\vec{a}\times\vec{a}=\vec{0}$

  • 数学
    $\vec{a}\times\vec{b}=\pmatrix{y_az_b-y_bz_a\z_ax_b-x_az_b\x_ay_b-y_ax_b}=A*b=\pmatrix{0&-a_a&y_a\z_a&0&-x_a\-y_a&x_a&0}\pmatrix{x_b\y_b\z_b}$
    A是$\vec{a}$的特征矩阵

运算结果:新向量

应用:

  1. 构建坐标系
    • 右手坐标系(教学用):$\vec{x}\times\vec{y}=\vec{z}$
    • 左手坐标系(生产用):$\vec{x}\times\vec{y}=-\vec{z}$
  2. 判断左右

    $\vec{a}\times\vec{b}\cases{=+\vec{z}\Rightarrow\vec{b}在\vec{a}左侧\=-\vec{z}\Rightarrow\vec{b}在\vec{a}右侧}$
  3. 判断内外(法线、光栅化)

    $\cases{\vec{AB}\times\vec{AP}\\vec{BC}\times\vec{BP}\\vec{CA}\times\vec{CP}}$
    • 若均在同侧则P在ABC外
    • 否则P在ABC内

2.矩阵

2.1 矩阵运算

2.1.1 加法

$A_{(M\times N)}B_{(M\times N)}=C_{(M\times N)}$

$A+B=\pmatrix{a_{11}&a_{12}\a_{21}&a_{22}}+\pmatrix{b_{11}&b_{12}\b_{21}&b_{22}}=\pmatrix{a_{11}+b_{11}&a_{12}+b_{12}\a_{21}+b_{21}&a_{22}+b_{22}}=C$

$C_{xy}=A_{xy}=B_{xy}$

2.1.2 乘法

2.1.2.1 矩阵x数字

$A\times k=\pmatrix{a_{11}&a_{12}\a_{21}&a_{22}}\times k=\pmatrix{ka_{11}&ka_{12}\ka_{21}&ka_{22}}$

2.1.2.2 矩阵x矩阵

M行N列矩阵 X N行P列矩阵 = M行P列矩阵
$A_{(M\times N)}B_{(N\times P)}=C_{(M\times P)}$

$C_{xy}=A_x\cdot B_y$

例:
$\pmatrix{1&3\5&2\0&4}\pmatrix{3&6&9&4\2&7&8&3}=\pmatrix{9&27&33&13\19&44&61&26\8&28&32&12}$

$26=\pmatrix{5&2}\cdot \pmatrix{4\3}=20+6=26$

适用规则:

  • 交换律:$AB \not = BA$
  • 结合律:$(AB)C=A(BC)$
  • 分配律:$A(B+C)=AB+AC$

2.1.2.3 矩阵x向量

要求:向量必须是列向量才有意义
$A_{(N\times M)}B_{(M\times 1)}=C_{(N\times 1)}$
用途:向量变换

例:向量y轴镜像(翻转x)
$\pmatrix{-1&0\0&1}\vec{a}=\pmatrix{-1&0\0&1}\pmatrix{x\y}=\pmatrix{-x\y}$

2.1.2.4 向量运算与矩阵运算的转换

点乘:
$\vec{a}\cdot\vec{b}=\vec{a}^T\vec{b}=\pmatrix{x_a&y_a&z_a}\pmatrix{x_b\y_b\z_b}=(x_ax_b+y_ay_b+z_az_b)$

叉乘:
$\vec{a}\times\vec{b}=A^*b=\pmatrix{0&-z_a&y_a\z_a&0&-x_a\-y_a&x_a&0}\pmatrix{x_b\y_b\z_b}$

2.1.3 转置

$A_{(M\times N)}^T=A_{(N\times M)}$
$\pmatrix{a_{11}&a_{12}\a_{21}&a_{22}\a_{31}&a_{32}}^T=\pmatrix{a_{11}&a_{21}&a_{31}\a_{12}&a_{22}&a_{32}}$

特性:$(AB)^T=B^TA^T$

2.2 单位矩阵与逆矩阵

2.2.1单位矩阵

单位矩阵是一个对角阵

$I_{3\times 3}=\pmatrix{1&0&0\0&1&0\0&0&1}$

任何矩阵乘单位矩阵不产生变化

$AI=IA=A$

2.2.2 逆矩阵

若$AB=I$则AB互为逆矩阵,B可记为$A^{-1}$

$AA^{-1}=A^{-1}A=I$

$(AB)^{-1}=B^{-1}A^{-1}$

3. 变换

3.1 2D变换

3.1.1 常见变换

缩放(Scale):


公式推导:
$\cases{x’=s_xx\y’=s_yy}\Rightarrow\pmatrix{x’\y’}=\pmatrix{s_x&0\0&s_y}\pmatrix{x\y}$

线性变换:
$S(s_x,s_y)=\pmatrix{s_x&0\0&s_y}$

齐次变换:
$S(s_x,s_y)=\pmatrix{s_x&0&0\0&s_y&0\0&0&1}\cdot\pmatrix{x\y\1}$

镜像(Reflection):

公式推导:
$\cases{x’=-x\y’=y}\Rightarrow\pmatrix{x’\y’}=\pmatrix{-1&0\0&1}\pmatrix{x\y}$

线性变换:
$\pmatrix{-1&0\0&1}$

齐次变换:
$\pmatrix{-1&0&0\0&1&0\0&0&1}$

切变(Shear):

$\cases{x’=ay\y’=y}\Rightarrow\pmatrix{x’\y’}=\pmatrix{1&a\0&1}\pmatrix{x\y}$

线性变换:
$\pmatrix{1&a\0&1}$

齐次变换:
$\pmatrix{1&a&0\0&1&0\0&0&1}$

旋转(Rotate):

公式推导:

线性变换:
$R_\theta=\pmatrix{cos\theta&-sin\theta\sin\theta&cos\theta}$

齐次变换:
$R_\theta=\pmatrix{x’\y’\1}=\pmatrix{cos\theta&-sin\theta&0\sin\theta&cos\theta&0\0&0&1}\cdot\pmatrix{x\y\1}$

平移(Move):

公式推导:
$\cases{x’=x+t_x\y’=y+t_y}\Rightarrow\pmatrix{x’\y’}=\pmatrix{a&b\c&d}\pmatrix{x\y}+\pmatrix{t_x\t_y}\Rightarrow\pmatrix{x’\y’\1}=\pmatrix{a&b&t_x\c&d&t_y\0&0&1}\cdot\pmatrix{x\y\1}$

线性变换:
$T(t_x,t_y)=\pmatrix{x’\y’}=\pmatrix{1&0\0&1}\pmatrix{x\y}+\pmatrix{t_x\ t_y}$

齐次变换:
$T(t_x,t_y)=\pmatrix{x’\y’\1}=\pmatrix{1&0&t_x\0&1&t_y\0&0&1}\cdot\pmatrix{x\y\1}$

3.1.2 常见变换矩阵速查表

变换名称 线性变换矩阵 齐次变换矩阵
缩放(Scale) $S(s_x,s_y)=\pmatrix{s_x&0\0&s_y}$ $S(s_x,s_y)=\pmatrix{s_x&0&0\0&s_y&0\0&0&1}\cdot\pmatrix{x\y\1}$
镜像(Reflection) $\pmatrix{-1&0\0&1}$ $\pmatrix{-1&0&0\0&1&0\0&0&1}$
切变(Shear) $\pmatrix{1&a\0&1}$ $\pmatrix{1&a&0\0&1&0\0&0&1}$
旋转(Rotate) $R_\theta=\pmatrix{cos\theta&-sin\theta\sin\theta&cos\theta}$ $R_\theta=\pmatrix{x’\y’\1}=\pmatrix{cos\theta&-sin\theta&0\sin\theta&cos\theta&0\0&0&1}\cdot\pmatrix{x\y\1}$
平移(Move) $T(t_x,t_y)=\pmatrix{x’\y’}=\pmatrix{1&0\0&1}\pmatrix{x\y}+\pmatrix{t_x\ t_y}$ $T(t_x,t_y)=\pmatrix{x’\y’\1}=\pmatrix{1&0&t_x\0&1&t_y\0&0&1}\cdot\pmatrix{x\y\1}$

3.1.2 线性变换(linear transform)范式

只要能将变换推导为以下形式的矩阵,就称之为线性变换

$\cases{x’=ax+by\y’=cx+dy}\Rightarrow\pmatrix{x’\y’}=\pmatrix{a&b\c&d}\pmatrix{x\y}$

缩放、镜像、切变、旋转都是线性变换

3.1.3 齐次坐标

平移的变换矩阵推导:

$\cases{x’=x+t_x\y’=y+t_y}\Rightarrow\pmatrix{x’\y’}=\pmatrix{a&b\c&d}\pmatrix{x\y}+\pmatrix{t_x\t_y}$

平移不是线性变换

需要一种方法可以简单的表达所有变换:齐次坐标

维度扩展:2维扩3维:

  • 点:$(x,y,1)^T$
    $\pmatrix{x\y\w}=\pmatrix{x/w\y/w\1},w\not=0$

  • 向量:$(x,y,0)^T$
    向量具有平移不变性,所以是0
    $\pmatrix{x’\y’\w’}=\pmatrix{1&0&t_x\0&1&t_y\0&0&1}\cdot\pmatrix{x\y\z}=\pmatrix{x+t_x\y+t_y\1}$

  • 向量+向量=向量

  • 点-点=向量

  • 点+向量=点

  • 点+点=无意义,在齐次坐标下扩充为两点中点

$\pmatrix{a&b&t_x\c&d&t_y\0&0&1}\cdot\pmatrix{x\y\1}$