Liner Algebra

向量(vector)

  • 两个重要属性:方向和长度
  • 没有特定的开始位置

Normalization标准化

  • 长度: ∣ ∣ a ∣ ∣ ||\bold a|| ∣∣a∣∣
  • 单位向量: a ^ = a ∣ ∣ a ∣ ∣ \hat a = \frac {\bold a} { || \bold a ||} a^=∣∣a∣∣a
    用来表示方向

Addition

  • Parallelogram law & Triangle law,平行四边形定则或者三角定则

  • Algebraically(代数上理解):坐标相加

笛卡尔坐标系(Cartesian Coordinates)

将所有向量的起点都移动到原点,使用两个向量(通常相互垂直的单位向量(orthogonal unit))来表示空间中的所有向量。

在这里插入图片描述

相互垂直的单位向量的优势是便于计算长度: ∣ ∣ A ∣ ∣ = x 2 + y 2 ||A|| = \sqrt{x^2 + y^2} ∣∣A∣∣=x2+y2

Product乘法

Dot(Scalar) Product

a ⋅ b = ∣ ∣ a ∣ ∣ ∣ ∣ b ∣ ∣ cos ⁡ θ \bold a · \bold b = || \bold a || || \bold b || \cos\theta ab=∣∣a∣∣∣∣b∣∣cosθ
点乘满足交换律、结合律、分配律。
在这里插入图片描述

在笛卡尔坐标系下,计算点乘可以通过对应轴相乘,再加和。

在这里插入图片描述

点乘通常用来找到两个向量的夹角(或者说夹角的余弦) ,以及找到一个向量到另一个向量的投影。

在这里插入图片描述

  • 投影一定和a共线

  • 投影的长度符合直角三角形定则,用b的长度乘夹角cos就能求得

  • 计算投影可以用于将向量拆解

在这里插入图片描述

  • 点乘也可以用于计算前后(相对于某一向量),根据点积结果的大小[-1, 1],也可以计算两个向量在方向上有多接近(计算光照会用)

在这里插入图片描述

cross product叉乘

  • 叉乘结果和原本的两个向量都垂直(垂直于a, b的平面)

  • 右手定则。计算a和b的叉积,就用四指摆成从a旋转到b的方向,大拇指的方向就是叉积方向

    根据右手定则,也可以注意到叉积不满足交换律。

在这里插入图片描述

  • 叉积的一个重要作用是计算坐标系。

  • 另一个重要应用是判断左右和内外。

在这里插入图片描述

如图,若叉乘结果为正,例如a叉乘b,则b位于a的右侧(右手定则);而b叉乘a,结果为负,则a位于b的左侧。

在这里插入图片描述

如图,如果p在三角形内部,则 A B × A P , B C × B P , C A × C P AB \times AP, BC \times BP, CA \times CP AB×AP,BC×BP,CA×CP应该同向,否则P点就会在三角形外。这个操作是光栅化的基础(遍历位于三角形内的图元)

对于正好卡在边上的点,是否包含在三角形里看自己意愿,都可以

单位正交基

在这里插入图片描述

对于单位正交基,拆分p在该方向上的投影可以直接用 p ⋅ u = ∣ ∣ p ∣ ∣ cos ⁡ θ \bold p \cdot \bold u = ||\bold p ||\cos\theta pu=∣∣p∣∣cosθ获取长度,再乘单位基就是该方向上的投影。

矩阵(Matrices)

矩阵在图形学中最大的应用是表示变换transform

最常用的操作是矩阵乘积,两个矩阵可乘的前提是 ( M × N ) ( N × P ) (M \times N)(N \times P) (M×N)(N×P),前一个的列数等于第二个的行数(或者说中间必须相同);需要算第i行第j列就找第一个的i行乘第二个的j列。

矩阵不满足交换率。但结合律很好用。

在这里插入图片描述

矩阵乘向量

向量为列向量,矩阵乘向量是变换的核心。

转置

在这里插入图片描述

单位矩阵 & 逆

在这里插入图片描述

向量乘积转成矩阵形式(反称矩阵)

在这里插入图片描述

叉乘转矩阵在旋转变换(Rotation)很有用。

反称矩阵补充

反称矩阵是满足 A T = − A A^T = -A AT=A的矩阵,即矩阵的转置等于矩阵的负数。

反称矩阵的特征是主对角线元素全为0,而两侧元素反号。

反称矩阵的一个应用是表示向量的叉积,下面是一个例子
设 a = ( a 1 , a 2 , a 3 ) 和 b = ( b 1 , b 2 , b 3 ) 是两个三维向量,那么它们的叉积可以写成: a × b = ∣ i j k a 1 a 2 a 3 b 1 b 2 b 3 ∣ = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] 其中 i , j , k 是三个单位向量。我们可以注意到结果向量是对 b 进行线性变换的结果,所以将 b 提取出来 a × b = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] [ b 1 b 2 b 3 ] 其中第一个矩阵就是反称矩阵,因为它满足 A T = − A 。 设 \bold{a} = (a_1, a_2, a_3) 和 \bold{b} = (b_1, b_2, b_3) 是两个三维向量,那么它们的叉积可以写成: \newline \bold{a}\times\bold{b} =\left| \begin{array}{} \bold{i} & \bold{j} & \bold{k}\\ a_1 & a_2 & a_3\\b_1 &b_2&b_3 \end{array} \right| = \left[ \begin{array}{} a_2b_3 - a_3b_2 \\ a_3b_1 - a_1b_3 \\ a_1b_2 - a_2b_1 \end{array} \right] \newline\newline 其中 \bold{i},\bold{j},\bold{k} 是三个单位向量。我们可以注意到结果向量是对b进行线性变换的结果,所以将b提取出来 \newline \bold{a}\times\bold{b} =\begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\-a_2&a_1&0 \end{bmatrix}\begin{bmatrix} b_1\\ b_2\\ b_3 \end{bmatrix} \newline 其中第一个矩阵就是反称矩阵,因为它满足 A^T = -A 。 a=(a1,a2,a3)b=(b1,b2,b3)是两个三维向量,那么它们的叉积可以写成:a×b= ia1b1ja2b2ka3b3 = a2b3a3b2a3b1a1b3a1b2a2b1 其中i,j,k是三个单位向量。我们可以注意到结果向量是对b进行线性变换的结果,所以将b提取出来a×b= 0a3a2a30a1a2a10 b1b2b3 其中第一个矩阵就是反称矩阵,因为它满足AT=A

叉积写成行列式那一步,等价于 ( a 1 i + a 2 j + a 3 k ) × ( b 1 i + b 2 j + b 3 k ) (a_1i + a_2j + a_3k) \times (b_1i + b_2j + b_3k) (a1i+a2j+a3k)×(b1i+b2j+b3k),根据叉乘的分配结合律可以展开。

参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Recitative

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值