【Game101】Lecture02 线性代数 整理

本文介绍了计算机图形学基础知识,包括向量的概念、点乘与叉乘的定义、在笛卡尔坐标系下的计算方法,以及它们在图形渲染中的应用,如角度计算、投影和空间定位。此外,还讲解了矩阵运算在图形变换中的核心作用和正交坐标系下的表示。
摘要由CSDN通过智能技术生成

视频&图片来源:【B站】GAMES101-现代计算机图形学入门-闫令琪

1.零碎的概念

  • 实时:从CG的角度说,≥30fps的情况可以称作实时(Real-time);否则,则称为离线(Offline)。

2.向量

  • A B → = B − A \overrightarrow {AB}=B-A AB =BA
  • 向量的长度: ∥ a → ∥ \lVert \overrightarrow{a}\rVert a
  • 单位向量: a ^ = a → ∥ a → ∥ \hat{a}=\frac{\overrightarrow{a}}{\lVert\overrightarrow{a}\rVert} a^=a a . 其中, ∥ a ^ ∥ = 1 \lVert\hat{a}\rVert=1 a^=1.
  • 向量求和:左图平行四边形法则;右图三角法则
  • 笛卡尔坐标系下的描述:
    A = ( x y ) A=\left(\begin{matrix} x\\ y\\ \end{matrix}\right) A=(xy) A T = ( x , y ) A^T=\left(x,y\right) AT=(x,y) ∥ A ∥ = x 2 + y 2 \lVert A\rVert=\sqrt{x^2+y^2} A=x2+y2

3.向量的点乘

3.1 概念

  • 向量的点乘:可以帮助快速得到两个向量之间的夹角

    a → ⋅ b → = ∥ a → ∥ ∥ b → ∥ cos ⁡ θ \overrightarrow{a}\cdot\overrightarrow{b}=\lVert\overrightarrow{a}\rVert \lVert\overrightarrow{b}\rVert \cos\theta a b =a b cosθ. 其中, cos ⁡ θ = a → ⋅ b → ∥ a → ∥ ∥ b → ∥ \cos\theta=\frac{\overrightarrow{a}\cdot\overrightarrow{b}}{\lVert\overrightarrow{a}\rVert \lVert\overrightarrow{b}\rVert} cosθ=a b a b
    对于单位向量: cos ⁡ θ = a ^ ⋅ b ^ \cos\theta=\hat{a}\cdot\hat{b} cosθ=a^b^.
  • 向量点乘的性质:
    a → ⋅ b → = b → ⋅ a → \overrightarrow{a}\cdot\overrightarrow{b}=\overrightarrow{b}\cdot\overrightarrow{a} a b =b a
    a → ⋅ ( b → + c → ) = a → ⋅ b → + a → ⋅ c → \overrightarrow{a}\cdot(\overrightarrow{b}+\overrightarrow{c})=\overrightarrow{a}\cdot\overrightarrow{b}+\overrightarrow{a}\cdot\overrightarrow{c} a (b +c )=a b +a c
    ( k a → ) ⋅ b → = a → ⋅ ( k b → ) = k ( a → ⋅ b → ) (k\overrightarrow{a})\cdot\overrightarrow{b}=\overrightarrow{a}\cdot(k\overrightarrow{b})=k(\overrightarrow{a}\cdot\overrightarrow{b}) (ka )b =a (kb )=k(a b )

3.2 笛卡尔坐标系下的向量点乘

  • 2D环境
    a → ⋅ b → = ( x a y a ) ⋅ ( x b y b ) = x a x b + y a y b \overrightarrow{a}\cdot\overrightarrow{b}=\left(\begin{matrix} x_a\\ y_a\\ \end{matrix}\right) \cdot \left(\begin{matrix} x_b\\ y_b\\ \end{matrix}\right)=x_ax_b+y_ay_b a b =(xaya)(xbyb)=xaxb+yayb.
  • 3D环境
    a → ⋅ b → = ( x a y a z a ) ⋅ ( x b y b z b ) = x a x b + y a y b + z a z b \overrightarrow{a}\cdot\overrightarrow{b}=\left(\begin{matrix} x_a\\ y_a\\ z_a\\ \end{matrix}\right) \cdot \left(\begin{matrix} x_b\\ y_b\\ z_b\\ \end{matrix}\right)=x_ax_b+y_ay_b+z_az_b a b =xayazaxbybzb=xaxb+yayb+zazb.

3.3 点乘在图形学中的作用

  • 快速找到两个向量之间的夹角
  • 找到一个向量到另一个向量上的投影

    e.g. b → ⊥ \overrightarrow{b}_\bot b b → \overrightarrow{b} b a → \overrightarrow{a} a 上的投影
    • b → ⊥ \overrightarrow{b}_\bot b 必须沿着 a → \overrightarrow{a} a 或者 a ^ \hat{a} a^的方向,即 b → ⊥ = k a ^ \overrightarrow{b}_\bot=k\hat{a} b =ka^
    • 系数 k k k k = ∥ b → ⊥ ∥ = ∥ b → ∥ cos ⁡ θ k=\lVert\overrightarrow{b}_\bot\rVert=\lVert\overrightarrow{b}\rVert\cos\theta k=b =b cosθ. 算长度用的。
  • 测量两个方向上的距离
  • 向量分解
  • 确认向量前(forward)与后(backward)的信息:在方向上有多接近

4.向量的叉乘

4.1 概念

  • 叉乘计算得出的向量必然和原始的两个向量垂直(不在一个平面内)
    即: a → × b → = c → \overrightarrow{a}\times\overrightarrow{b}=\overrightarrow{c} a ×b =c ,其中, a → ⊥ b → \overrightarrow{a}\bot\overrightarrow{b} a b b → ⊥ c → \overrightarrow{b}\bot\overrightarrow{c} b c ,遵循右手螺旋定则
  • 性质:
    a → × b → = − b → × a → \overrightarrow{a}\times\overrightarrow{b}=-\overrightarrow{b}\times\overrightarrow{a} a ×b =b ×a
    ∥ a → × b → ∥ = ∥ a → ∥ ∥ b → ∥ sin ⁡ θ \lVert\overrightarrow{a}\times\overrightarrow{b}\rVert=\lVert \overrightarrow{a}\rVert\lVert\overrightarrow{b}\rVert\sin\theta a ×b =a b sinθ
    a → × a → = 0 → \overrightarrow{a}\times\overrightarrow{a}=\overrightarrow{0} a ×a =0 . 强调:得到的是一个长度为0的向量
    a → × ( b → + c → ) = a → × b → + a → × c → \overrightarrow{a}\times(\overrightarrow{b}+\overrightarrow{c})=\overrightarrow{a}\times\overrightarrow{b}+\overrightarrow{a}\times\overrightarrow{c} a ×(b +c )=a ×b +a ×c
    a → × ( k b → ) = k ( a → × b → ) \overrightarrow{a}\times(k\overrightarrow{b})=k(\overrightarrow{a}\times\overrightarrow{b}) a ×(kb )=k(a ×b )

4.2 笛卡尔坐标系下的叉乘

a → × b → = ( y a z b − y b z a z a x b − x a z b x a y b − y a x b ) \overrightarrow{a}\times\overrightarrow{b}=\left(\begin{matrix} y_az_b-y_bz_a\\ z_ax_b-x_az_b\\ x_ay_b-y_ax_b\\ \end{matrix}\right) a ×b =yazbybzazaxbxazbxaybyaxb

  • 矩阵表示形式
    a → × b → = A ∗ b = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ( x b y b z b ) \overrightarrow{a}\times\overrightarrow{b}=A^*b=\left(\begin{matrix} 0&-z_a&y_a\\ z_a&0&-x_a\\ -y_a&x_a&0\\ \end{matrix}\right)\left(\begin{matrix} x_b\\ y_b\\ z_b\\ \end{matrix}\right) a ×b =Ab=0zayaza0xayaxa0xbybzb

4.3 叉乘在图形学中的作用

  • 判定左右:为正,在左;为负,在右。
  • 判定内外:多边形的每个顶点和这个点的连线叉乘多边形的每一条边,在边的左侧还是边的右侧,判断是不是同在左or同在右。得到0向量的话up to you…

5. 正交坐标系内的表示

  • 3D,其中 u → , v → , w → \overrightarrow{u},\overrightarrow{v},\overrightarrow{w} u v w 互相垂直,且都是单位向量
    ∥ u → ∥ = ∥ v → ∥ = ∥ w → ∥ = 1 \lVert\overrightarrow{u}\rVert=\lVert\overrightarrow{v}\rVert=\lVert\overrightarrow{w}\rVert=1 u =v =w =1
    u → ⋅ v → = v → ⋅ w → = u → ⋅ w → = 0 \overrightarrow{u}\cdot\overrightarrow{v}=\overrightarrow{v}\cdot\overrightarrow{w}=\overrightarrow{u}\cdot\overrightarrow{w}=0 u v =v w =u w =0
    w → = u → × v → \overrightarrow{w}=\overrightarrow{u}\times\overrightarrow{v} w =u ×v 右手螺旋定则
  • p → \overrightarrow{p} p 分解到三个方向上:
    p → = ( p → ⋅ u → ) u → + ( p → ⋅ v → ) v → + ( p → ⋅ w → ) w → \overrightarrow{p}=(\overrightarrow{p}\cdot\overrightarrow{u})\overrightarrow{u}+(\overrightarrow{p}\cdot\overrightarrow{v})\overrightarrow{v}+(\overrightarrow{p}\cdot\overrightarrow{w})\overrightarrow{w} p =(p u )u +(p v )v +(p w )w

6.矩阵

6.1 矩阵乘法

  • 成立条件:对于 A × B = C A\times B=C A×B=C,乘法成立的条件是矩阵A的列数=矩阵B的行数
    大概这种感觉: A m × n × B n × p = C m × p A_{m\times n}\times B_{n\times p}=C_{m\times p} Am×n×Bn×p=Cm×p
  • 性质: 交换律不成立结合律和分配律成立。
    ( A B ) C = A ( B C ) (AB)C=A(BC) (AB)C=A(BC)
    A ( B + C ) = A B + A C A(B+C)=AB+AC A(B+C)=AB+AC
    ( A + B ) C = A C + B C (A+B)C=AC+BC (A+B)C=AC+BC
  • 矩阵和向量的乘法:把向量看作 m × 1 m\times1 m×1的列矩阵,是变换的核心

6.2 矩阵形式的向量乘法

  • 点乘: a → ⋅ b → = a → T b → = ( x a y a z a ) ( x b y b z b ) = ( x a x b + y a y b + z a z b ) \overrightarrow{a}\cdot\overrightarrow{b}=\overrightarrow{a}^T\overrightarrow{b}=(\begin{matrix}x_a&y_a&z_a\end{matrix})\left(\begin{matrix}x_b\\y_b\\z_b\end{matrix}\right)=(x_ax_b+y_ay_b+z_az_b) a b =a Tb =(xayaza)xbybzb=(xaxb+yayb+zazb)
  • 叉乘: a → × b → = A ∗ b = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ( x b y b z b ) \overrightarrow{a}\times\overrightarrow{b}=A^*b=\left(\begin{matrix}0&-z_a&y_a\\z_a&0&-x_a\\-y_a&x_a&0\end{matrix}\right)\left(\begin{matrix}x_b\\y_b\\z_b\end{matrix}\right) a ×b =Ab=0zayaza0xayaxa0xbybzb
    其中, A ∗ A^* A a → \overrightarrow{a} a 的对偶矩阵(dual matrix)

6.3 矩阵的其他操作

  • 转置: ( 1 2 3 4 5 6 ) T = ( 1 3 5 2 4 6 ) \left(\begin{matrix} 1&2\\ 3&4\\ 5&6\\ \end{matrix}\right)^T=\left(\begin{matrix} 1&3&5\\ 2&4&6 \end{matrix}\right) 135246T=(123456)
    转置的性质: ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT

  • 单位矩阵及其逆矩阵
    单位矩阵: I 3 × 3 = ( 1 0 0 0 1 0 0 0 1 ) I_{3\times3}=\left(\begin{matrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{matrix}\right) I3×3=100010001
    A A − 1 = A − 1 A = I AA^{-1}=A^{-1}A=I AA1=A1A=I
    ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值