线性代数基础——向量

向量

  • 基础属性

    向量的基础属性为方向与长度;
    向量 a ⃗ \vec{a} a 的长度写为 ∥ a ⃗ ∥ \Vert\vec{a}\Vert a
    单位向量 a ^ = a ⃗ ∥ a ⃗ ∥ \widehat{a} = \frac {\vec{a}}{\Vert\vec{a}\Vert} a =a a 用来表示方向。

  • 向量的代数写法

    在图形学中,向量一般会写出矩阵的形式
    A ⃗ = ( x y ) \vec{A} = \begin{pmatrix} x\\ y \end{pmatrix} A =(xy)
    A ⃗ T = ( x , y ) \vec{A}^T = \begin{pmatrix} x , y \end{pmatrix} A T=(x,y)
    向量的长度为:
    ∥ A ⃗ ∥ = x 2 + y 2 \Vert\vec{A}\Vert = \sqrt{x^2+y^2} A =x2+y2

  • 向量的计算

  • 点乘

    点乘的定义为两个向量的长度的乘积再乘以这两个向量夹角的余弦,最终结果是一个数(标量)。
    a ⃗ ⋅ b ⃗ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ cos ⁡ θ \vec{a}\cdot\vec{b}=\Vert\vec{a}\Vert\Vert\vec{b}\Vert\cos\theta a b =a b cosθ
    由此,可计算两个向量夹角的余弦值
    cos ⁡ θ = a ⃗ ⋅ b ⃗ ∥ a ⃗ ∥ ∥ b ⃗ ∥ \cos\theta=\frac{\vec{a}\cdot\vec{b}}{\Vert\vec{a}\Vert\Vert\vec{b}\Vert} cosθ=a b a b
    在代数中,向量的点乘可以写成如下形式:
    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 \vec{a} \cdot \vec{b} = \begin{pmatrix} x_a \\ y_a \\ z_a\end{pmatrix} \cdot \begin{pmatrix} x_b \\ y_b \\ z_b \end{pmatrix} = x_ax_b + y_ay_b + z_az_b a b =xayazaxbybzb=xaxb+yayb+zazb
    点乘在图形学中,主要是用来计算两个向量的夹角的大小,另外,还可以用来计算一个向量在另一个向量上的投影的大小。
    比如:计算向量 b ⃗ \vec{b} b 在向量 a ⃗ \vec{a} a 上的投影,首先,投影的方向肯定与向量 a ⃗ \vec{a} a 的方向相同或者相反,投影的长度为 b ⃗ ⊥ = k a ^ \vec{b}_\bot=k\widehat{a} b =ka ,其中 a ^ \widehat{a} a 为单位向量, k = ∥ b ⃗ ⊥ ∥ = ∥ b ⃗ ∥ cos ⁡ θ k=\Vert\vec{b}_\bot\Vert=\Vert\vec{b}\Vert\cos\theta k=b =b cosθ
    投影的用处就是,可以将一个向量分解成若干给向量的和,例如:
    u ⃗ \vec{u} u v ⃗ \vec{v} v w ⃗ \vec{w} w 分别是互相垂直的单位向量, w ⃗ = u ⃗ × v ⃗ \vec{w}=\vec{u}\times\vec{v} w =u ×v (右手坐标系),那么向量 p ⃗ \vec{p} p 可以写成如下的式子:
    p ⃗ = ( p ⃗ ⋅ u ⃗ ) u ⃗ + ( p ⃗ ⋅ v ⃗ ) v ⃗ + ( p ⃗ ⋅ w ⃗ ) w ⃗ \vec{p} = ( \vec{p} \cdot \vec{u} ) \vec{u} + ( \vec{p} \cdot \vec{v} ) \vec{v} + ( \vec{p} \cdot \vec{w} ) \vec{w} p =(p u )u +(p v )v +(p w )w
    点乘还可以计算两个向量是否接近,同时还能计算前后关系,通过点乘,将向量与面朝的负方向做点乘,如果值大于0,那么这个向量就是面向我们的,如果值小于0,那么这个向量就是背朝我们的。可以使用这点来判断模型的正反面。

  • 叉乘

    叉乘的结果是一个向量,这个向量的方向与输入的两个向量的方向都垂直,通过右手螺旋定则来决定方向。比如说 a ⃗ × b ⃗ \vec{a}\times\vec{b} a ×b 的方向,将右手握拳,大拇指竖起来,四指从 a ⃗ \vec{a} a 旋转到 b ⃗ \vec{b} b ,大拇指所指的方向,就是叉乘结果的方向。结果向量的大小如下式:
    ∥ a ⃗ × b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ sin ⁡ θ \Vert \vec{a} \times \vec{b} \Vert = \Vert \vec{a} \Vert \Vert \vec{b} \Vert \sin\theta a ×b =a b sinθ
    通过方向的决定方法可以得出: a ⃗ × b ⃗ = − b ⃗ × a ⃗ \vec{a}\times\vec{b}=-\vec{b}\times\vec{a} a ×b =b ×a
    向量自身与自身的叉乘等于 0 ⃗ \vec{0} 0 ,注意不是0,结果是一个向量。
    在代数中,向量的叉乘表达式为:
    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 ) \vec{a} \times \vec{b} = \begin{pmatrix} y_az_b - y_bz_a \\ z_ax_b - x_az_b \\ x_ay_b - y_ax_b \end{pmatrix} 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 ) \vec{a} \times \vec{b} = \vec{A}^* \vec{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 =A b =0zayaza0xayaxa0xbybzb
    这里的 A ⃗ ∗ \vec{A}^* A 是一个矩阵,不是 A ⃗ ∗ b ⃗ \vec{A}*\vec{b} A b
    叉乘在图形学的作用是可以用来判断向量的左右和内外。

你可能感兴趣的:(计算机图形学基础学习笔记,线性代数,几何学)