• 计算机图形学(一) 向量


    向量

    表示

    在这里插入图片描述1. 通常写为 a ⃗ \vec{a} a 或者黑体的 a
    2. 或者使用开始和结束的端点表示 A B → \overrightarrow{AB} AB = B - A
    3. 向量既有大小又有方向,标量只有大小没有方向
    4. 没有绝对的起始位置(向量的大小和方向与它的位置无关)

    向量的归一化(vector normalization)

    • 向量的大小表示为 ∣ ∣ a ⃗ ∣ ∣ ||\vec{a}|| a
    • 单位向量
      • 向量的大小为 1
      • 求一个向量的单位向量(向量的归一化): a ^ \hat{a} a^ = a ⃗ \vec{a} a / ∣ ∣ a ⃗ ∣ ∣ ||\vec{a}|| a
      • 单位向量的作用:用来表示方向

    向量求和

    在这里插入图片描述
    在这里插入图片描述

    图形学上默认向量是列向量: A = ( x y ) (xy)

    (xy)
    (xy)
    转置之后是行向量: A T A^T AT = ( x , y ) (x,y)
    (x,y)
    (x,y)

    向量的模: ∣ ∣ A ⃗ ∣ ∣ ||\vec{A}|| A = x 2 + y 2 \sqrt{x^2 + y^2} x2+y2

    向量点乘(Dot Product)

    在这里插入图片描述
    a ⃗ ∗ b ⃗ \vec{a} * \vec{b} a b = ∣ ∣ a ⃗ ∣ ∣ ||\vec{a}|| a ∣ ∣ b ⃗ ∣ ∣ ||\vec{b}|| b c o s θ cos\theta cosθ
    c o s θ cos\theta cosθ = a ⃗ ∗ b ⃗ ∣ ∣ a ⃗ ∣ ∣ ∣ ∣ b ⃗ ∣ ∣ \frac{\vec{a}*\vec{b}}{||\vec{a}||||\vec{b}||} a b a b
    对于单位向量就有:
    c o s θ cos\theta cosθ = a ^ ∗ b ^ \hat{a}*\hat{b} a^b^

    点乘的属性:
    在这里插入图片描述

    笛卡尔坐标系下的点乘运算

    在这里插入图片描述

    点乘在图形学中的作用

    1. 计算两个向量的夹角(比如光源和平面的夹角的 c o s cos cos 值)
    2. 计算一个向量到另一个向量的投影,如下图:
      在这里插入图片描述
    3. 计算两个向量(方向)有多接近(计算出两个向量的 c o s cos cos值)
    4. 分解一个向量为两个相互垂直的向量(利用平行四边形法则)
    5. 在这里插入图片描述
    6. 判定向量是向前的还是向后的
      在这里插入图片描述

      向量的叉乘

      1. 两个向量叉乘的结果是垂直于这两个向量的一个新的向量
      2. 新向量的方向由右手定则确定
      3. 通常用于建立一个坐标系系统
        在这里插入图片描述

    叉乘的属性

    在这里插入图片描述

    叉乘的作用

    1. 判定左和右
    2. 判定内和外
      在这里插入图片描述
      使用 a ⃗ \vec{a} a 叉乘 b ⃗ \vec{b} b ,得到的 Z 是正的,则 b ⃗ \vec{b} b a ⃗ \vec{a} a 的左侧,Z 是负的,表示 b ⃗ \vec{b} b a ⃗ \vec{a} a 的右侧(使用右手螺旋定则)
      在这里插入图片描述
      A B → \overrightarrow{AB} AB , B C → \overrightarrow{BC} BC , C A → \overrightarrow{CA} CA 依次叉乘 A P → \overrightarrow{AP} AP , B P → \overrightarrow{BP} BP , C P → {\overrightarrow{CP}} CP , 得到的垂直于两个向量的向量都是正的,则都依次位于三个向量的左边,则代表在三角形内部。有一个不位于左边则表明在三角形的外部。

    点乘与叉乘的联系

    实际应用中,可以使用叉乘建立一个直角坐标系,之后就可以将一个任意一个向量分解到坐标系的三个轴上。分解的方法就是使用投影,而计算投影的方法是使用点乘
    在这里插入图片描述

    矩阵

    在这里插入图片描述

    矩阵的乘法

    在这里插入图片描述

    矩阵的属性

    1. 不存在任何交换律,AB 不等于 BA
    2. 结合律和分配律
      • (AB)C = A(BC)
      • A(B + C) = AB + AC
      • (A + B)C = AC + BC

    矩阵与向量乘作用

    将一个向量当作一个 mx1 的矩阵(列向量)
    矩阵在做,向量在右,
    变换的核心
    比如:将一个点做按 Y 轴对称操作:
    ( − 1 0 0 1 ) (1001)

    (1001)
    (1001) ( x y ) (xy)
    (xy)
    (xy)
    = ( − x y ) (xy)
    (xy)

    矩阵的转置

    矩阵的转置就是将矩阵的行和列互换,比如
    ( 1 2 3 4 5 6 ) T (123456)

    ^T 135246T = ( 1 3 5 2 4 6 ) (135246)
    (123456)

    转置的性质

    ( A B ) T (AB)^T (AB)T = B T A T B^TA^T BTAT

    单位矩阵和逆矩阵

    1. 对角线方向上(左上到右下)都为 1,其他全为 0,就是单位矩阵
      I 3 ∗ 3 = ( 1 0 0 0 1 0 0 0 1 ) I_{3*3} = (100010001)
      I33=100010001
    2. 对一个 n 阶方阵 A ,如果存在另一个 n 阶方阵 B,它们满足:AB = BA = I(其中 I 为单位矩阵),那么两矩阵互为逆矩阵。换句话说,A 的逆矩阵为 B ,B 的逆矩阵为 A, 记为 A − 1 A^{-1} A1
    3. 逆矩阵是唯一的

    性质

    ( A B ) − 1 = B − 1 A − 1 (AB)^{-1} = B^{-1}A^{-1} (AB)1=B1A1

    正交矩阵

    矩阵 A A A 的逆等于矩阵 A − 1 A^{-1} A1 的转置矩阵 A T A^T AT, 那么矩阵 A A A 就是一个正交矩阵

    矩阵形式的向量的乘积

    在这里插入图片描述

  • 相关阅读:
    36个数据分析方法与模型
    【工程部署】在RK3588上部署OCR(文字检测识别)(DBNet+CRNN)
    「C++程序设计 (面向对象进阶)」学习笔记・二
    python 使用xlsx和pandas处理Excel表格
    数据库设计DDL
    字节一面:说说HTTP 常见的状态码有哪些,适用场景?
    Java8的 lambda Stream的 map 和 flatmap 方法区别 map和flatMap方法的用法
    关于爬虫!看这一篇就够了!
    Docker 容器的数据卷的使用
    C++PrimerPlus(第6版)中文版:Chapter14.2私有继承use_stui
  • 原文地址:https://blog.csdn.net/VOlsenBerg/article/details/127714254