【图形学】02 数学部分(二、向量和坐标系)

02 数学部分(二、向量和坐标系)

来源:3B1B的视频、《3D数学基础》

1、向量(Vector)

①一个向量

  我们表示为 ( x a , y a ) (x_a, y_a) (xa,ya),或者写成矩阵的形式: a = [ x a y a ] a=\begin{bmatrix}x_a\\y_a\end{bmatrix} a=[xaya],为了方便,我们也写成 a T = [ x a     y a ] a^T=\begin{bmatrix} x_a\,\,\, y_a \end{bmatrix} aT=[xaya]

②点乘(dot product)

$ \mathbf{a\cdot b=||a||,,||b||} ,cos\phi $。
点乘也满足以下交换律:
a ⋅ b = b ⋅ a a ⋅ ( b + c ) = a ⋅ b + a ⋅ c ( k a ) ⋅ b = a ⋅ ( k b ) = k a ⋅ b \mathbf{a\cdot b=b \cdot a \\ a\cdot (b+c)=a\cdot b+a\cdot c \\ }(k\mathbf{a)\cdot b=a\cdot (}k\mathbf{b)=}k\mathbf{a\cdot b} ab=baa(b+c)=ab+ac(ka)b=a(kb)=kab
如果使用了笛卡尔坐标系,则有:
a ⋅ b = x a x b + y a y b + z a z b \mathbf{a\cdot b}=x_ax_b+y_ay_b+z_az_b ab=xaxb+yayb+zazb
点乘的运用:

a.用于一个向量在另一个方向上的投影,a在b方向上的投影:$\mathbf{a\longrightarrow b=||a||},,cos\phi ,=,,,\frac{\mathbf{a\cdot b}}{\mathbf{||b||}} $。
b.分解一个向量:可以把 b 分解成 a 方向和 垂直于 a 方向的两个方向,即:
在这里插入图片描述

c.计算是否是相同方向的,比如图中,b 和 a 是被认为是 同向的,而 c 和 a是反向的。我们使用 点乘,正数则是同向,负数则是反向。而且,如果是单位向量相乘的话,越接近1则越靠近,接近 -1 则说明方向完全相反:

在这里插入图片描述

③叉乘(Cross Product)

  通常用于三维向量,返回一个垂直于前两个向量的向量,其长度为与向量ab的夹角有关:
∣ ∣ a × b = ∣ ∣ a ∣ ∣   ∣ ∣ b ∣ ∣ s i n ϕ ||\mathbf{a}\times \mathbf{b}=\mathbf{||a||\,||b||}sin\phi a×b=absinϕ
因为有两个垂直于ab形成的平面,按照习俗,我们有常常采用右手坐标系来确定它实际的方向:
x × y = + z , y × x = − z , y × z = + x , z × y = − x , z × x = + y , x × z = − y . x × y = +z,\\ y × x = −z,\\ y × z = +x,\\ z × y = −x,\\ z × x = +y,\\ x × z = −y. x×y=+z,y×x=z,y×z=+x,z×y=x,z×x=+y,x×z=y.
此外,一个向量叉乘自己为0,即: x × x = 0 \mathbf{x × x = 0} x×x=0
叉乘有以下的一些性质:
a × ( b + c ) = a × b + a × c a × ( k b ) = k ( a × b ) a × b = − ( b × a ) \mathbf{a\times(b+c)=a\times b+a\times c}\\ \mathbf{a}\times(k\mathbf{b})=k(\mathbf{a\times b})\\ \mathbf{a\times b=-(b\times a) } a×(b+c)=a×b+a×ca×(kb)=k(a×b)a×b=(b×a)
,在笛卡尔坐标系中:
a × b = ( y a z b − z a y b , z a x b − x a z b , x a y b − y a x b ) . \mathbf{a × b} = (y_az_b − z_ay_b, z_ax_b − x_az_b, x_ay_b − y_ax_b). a×b=(yazbzayb,zaxbxazb,xaybyaxb).

④单位向量(unit vector)

  一个向量除以它本身的长度就是它的单位向量了,$\hat{a} =\frac{a}{|a|} , 两 个 向 量 之 间 的 夹 角 可 以 通 过 单 位 向 量 来 计 算 : ,两个向量之间的夹角可以通过单位向量来计算: cos\theta =\hat{a}\cdot\hat{b}$。

⑤正交坐标系

  只要三个向量满足以下条件,就能成为坐标系:
∣ ∣ u ⃗ ∣ ∣ = ∣ ∣ v ⃗ ∣ ∣ = ∣ ∣ w ⃗ ∣ ∣ = 1 u ⃗ ⋅ v ⃗ = v ⃗ ⋅ w ⃗ = u ⃗ ⋅ w ⃗ = 0 w ⃗ = u ⃗ ⋅ v ⃗ ||\vec{u}||=||\vec{v}||=||\vec{w}||=1 \\ \vec{u}\cdot\vec{v} =\vec{v}\cdot\vec{w} =\vec{u}\cdot\vec{w} =0 \\ \vec{w}=\vec{u}\cdot\vec{v} u =v =w =1u v =v w =u w =0w =u v
所以,用人话解释:1.三个都是单位向量。2.互相垂直。3.两个的叉乘结果是另外一个。
现在,对于空间内任意一个向量 p 有:
p ⃗ = ( p ⃗ ⋅ u ⃗ ) u ⃗ + ( p ⃗ ⋅ v ⃗ ) + ( p ⃗ ⋅ w ⃗ ) w ⃗ \vec{p}=(\vec{p}\cdot\vec{u})\vec{u}+(\vec{p}\cdot\vec{v})+(\vec{p}\cdot\vec{w})\vec{w} p =(p u )u +(p v )+(p w )w
也就是每个向量在坐标上的点乘(即在对应坐标轴上的投影)乘以其单位向量。

⑥点乘的意义

  实际上,两个向量相乘的结果和 一个降维矩阵和向量相乘的结果一致,也就是:
向 量 相 乘 : [ a b ] ⋅ [ c d ] = a c + b d 降 维 变 换 矩 阵 乘 以 向 量 : [ a b ] ⋅ [ c d ] = a c + b d 向量相乘:\begin{bmatrix} a \\b \end{bmatrix} \cdot \begin{bmatrix} c \\d \end{bmatrix}=ac+bd \\ 降维变换矩阵乘以向量: \begin{bmatrix} a &b \end{bmatrix} \cdot \begin{bmatrix} c \\d \end{bmatrix}=ac+bd [ab][cd]=ac+bd[ab][cd]=ac+bd

请添加图片描述

  这样的降维矩阵所做的事情就是把空间中的向量都映射到 图中黄色向量 所在的数轴上,即把空间中所有的二维向量压缩到了一维的坐标轴上,也就是 投影 了,将空间中任意的一个向量投影到 黄色向量 上,再乘以 黄色向量 的长度。这和 点乘 其实也是点乘可以被当成的意义了。在3B1B的线性代数合集中有讲到。
  也就是说,空间中任意一个向量和这个 黄色向量 相乘,其结果等于 它自己 在黄色向量上的投影长度乘以黄色向量的长度。这个结论也与公式相符合: ∣ a ∣ ∣ b ∣ c o s α |a||b|cos\alpha abcosα

  ⑦叉乘的意义:叉乘的结果满足以下两个个条件:
  a.叉乘的长度 = 这两个向量所形成的四边形的面积,也就是它们所组成的矩阵的 行列式 的长度。
  b.其方向垂直于这两个叉乘向量的平面,而满足 右手定则。
在这里插入图片描述
在这里插入图片描述

  image-20220329154054457
  也就是说,叉乘会创造一个新的向量,其方向垂直于两个基向量的长度,其长度也就是那两个矩阵所形成的面积。
在这里插入图片描述

  叉乘的计算方法: [ x 1 y 1 z 1 ] × [ x 2 y 2 z 2 ] = [ y 1 z 2 − z 1 y 2 z 1 x 2 − x 1 z 2 x 1 y 2 − y 1 x 2 ] \begin{bmatrix} x_1\\y_1\\z_1\end{bmatrix} \times \begin{bmatrix} x_2\\y_2\\z_2\end{bmatrix} =\begin{bmatrix}y_1z_2-z_1y_2\\z_1x_2-x_1z_2\\x_1y_2-y_1x_2\end{bmatrix} x1y1z1×x2y2z2=y1z2z1y2z1x2x1z2x1y2y1x2
  当点乘和叉乘在一起时,叉乘优先计算:$\mathbf{a\cdot b\times c=a\cdot b \times c} , 交 换 律 : ,交换律: \mathbf{a\times b =-(b \times a)} $

2、矩阵(matric)

①单位矩阵

  从左到右的那个对角线都是1,其余都是0。

②矩阵的逆

  如果存在一个矩阵乘以原来的矩阵,结果是 单位矩阵,则这是矩阵的逆: A A − 1 = A − 1 A = I AA^{-1}=A^{-1}A=I AA1=A1A=I

③矩阵的转置

  把矩阵的行和列都互换就好了。

④矩阵应用

  点乘,转换为乘以它的转置:
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 ) \vec{a}\cdot\vec{b}=\vec{a}^T\vec{b}=\left ( x_a \,y_a\,z_a\right)\begin{pmatrix}x_b \\ y_b\\z_b\end{pmatrix}=(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 ) \vec{a}\times \vec{b}=A^\ast b=\begin{pmatrix}0 & -z_a &y_a \\ z_a& 0 & -x_a\\-y_a&x_a &0\end{pmatrix}\begin{pmatrix}x_b \\ y_b\\z_b\end{pmatrix} a ×b =Ab=0zayaza0xayaxa0xbybzb

⑤矩阵在图形学中的意义

  将原本坐标系的基向量: j ^ \hat{j} j^ i ^ \hat{i} i^ 作相应的线性变换而得到的。如下图:

在这里插入图片描述

  即,我们说这个矩阵对整个空间进行了线性变换,我们只观察 两个基向量 和 我们关注的黄色向量 ,开始的基向量坐标分别是: [ 1 , 0 ] [ 0 , 1 ] [1, 0] [0,1] [1,0][01]。经过矩阵线性变换,如上例,变成了 [ − 1 , 2 ] [ 3 , 0 ] [-1, 2] [3, 0] [1,2][3,0],整个空间也发生了相应的变换。我们所求的 黄色坐标 也变换成了一个新的向量。,我们将两个挨着的基向量放在一起: [ − 1 3 2 0 ] \begin{bmatrix} -1 & 3\\ 2 &0\end{bmatrix} [1230],这就是这个变换矩阵了。
  这样的思想可以同时运用在所有矩阵上,包括:平移矩阵,旋转矩阵,降维矩阵等。3b1b的视频讲述了这样的事情。

⑥非方阵矩阵

  对于非方阵的矩阵来说,它们不仅涉及到变换,也涉及到维度的变换,
比如:3X2的矩阵 乘以 2X1的向量,便是把一个二维向量,直接拓展到 三维的空间。也就是两个基向量都被拓展到了3维空间,那么那个2X1的向量也自然到了3维空间了。
类似,2X3的矩阵 乘以 3X1的向量,便是把一个3维空间的向量压缩到2维空间中。三个基向量都只剩下两个维度了。

⑦行列式

  比如一个2X2的矩阵的 行列式,就是这两个向量的平行四边形的面积,如果它们左右的位置交换过后,它们的面积也可以是负数。如果第一个乘积项在前,那么它应该在另一个向量的左边,如果在右边则算出来应该就是负数了。

  • 二维表示:二维行列式中两个二维向量构成的 面积
    符号取决于 区域是否发生了翻转变换(翻转为 负)
    行列式的值与所选坐标系无关
    在这里插入图片描述

  • 三维 表示:三维行列式中三个三维向量构成的 体积
    符号取决于 构成矩阵的这三个向量是否满足右手定则(不满足为 负)

在这里插入图片描述

⑧行列式的特殊情况

  • 当线性变化后 区域 面积 为 0 时(点,线)
    说明发生了由 高维到低维 的线性变换

在这里插入图片描述

  • 当线性变化后 区域 体积 为 0 时(点,线,面)

在这里插入图片描述

  • 当线性变化后 比例为 负数 时,平面翻转

在这里插入图片描述

3、运算规律总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值