• 图形学-向量基础与应用


    1.向量

    1.1 什么是向量

    向量指的是具有大小(Magnitude)和方向(Direction)量。在物理学中也称为矢量。向量的表示通常使用小写字母上面加上向右的箭头 → 表示,例如a;或者使用粗体的小写字母表示,例如 a。向量具有平移不变形。向量只与大小和方向有关系,和向量的起点和终点没有关系。向量也只包含两个属性:大小和方向。对于空间中的两个点 𝐴 和 𝐵,从 𝐴 到 𝐵 的向量可以表示为 ⃖⃖⃖⃖⃗ 𝐴𝐵,计算方法为 ⃖⃖⃖⃖⃗ 𝐴𝐵 = 𝐵 − 𝐴。

    1.2 向量归一化

    向量的大小(长度)称为向量的模(norm),一般记作
    在这里插入图片描述
    单位向量(Unit vector)指的是模为 1 的向量。单位向量的计算公式为:
    在这里插入图片描述
    单位向量的长度为 1,一般只用来表示方向

    1.3 向量求和

    向量的求和可以用两种法则:平行四边形法则或者三角形法则

    在这里插入图片描述
    两个向量相加时,以表示这两个向量的线段为邻边作平行四边形,这两个邻边之间的对角线就代表向量和的大小和方向,这就叫做平行四边形定则(Parallelogram law)。

    **三角形法则(Triangle law)**是指两个向量,将一个向量的起点移动到另一个向量的终点时,向量和为从未移动向量的起点指向所移动向量的终点的向量。三角形法则适用于多个向量求和,只需要将向量按照相加顺序依次首尾排列,第一个向量的起点指向最后一个向量的终点的向量就是求和的结果。在代数上,对于在笛卡尔坐标系中定义的向量,向量求和可以简化为求向量各个对应坐标值的和

    1.4 笛卡尔坐标系

    在数学里,笛卡尔坐标系 (Cartesian coordinate system),亦称直角坐标系,是一种正交坐标系。二维的直角坐标系是由两条相互垂直,相交于原点的数线构成的。在平面内,任何一点的坐标是根据数轴上对应的点的坐标设定的。对于向量,我们认为所有向量都是以原点为起点,那么终点的坐标就可以表示一个唯一的向量。
    在计算机图形学中,我们默认所有的向量都是列向量,用符号表示向量,向量的转置以及向量的模如下:
    在这里插入图片描述

    1.5 向量乘法

    点乘

    点乘(Dot product),又称为向量的内积。计算公式为:
    在这里插入图片描述
    点乘满足交换律以及分配律
    在这里插入图片描述
    在笛卡尔坐标系下点乘的计算结果是逐坐标元素相乘后相加的结果
    在这里插入图片描述

    点乘的应用:

    1. 计算两个向量的夹角;
      通过原公式我们可以推出:
      在这里插入图片描述
      当两个向量都是单位向量时,我们可以得出更为简单的公式:
      在这里插入图片描述
      我们可以求出两个向量夹角的余弦值,从而得到两个向量的夹角大小。

    2. 计算一个向量到另一个向量上的投影
      向量b在向量a上的投影满足:
      在这里插入图片描述
      𝑘 的大小为:𝑘 = ||𝑏⟂|| = ||𝑏|| cos𝜃. 已知两个向量的内积,一个向量在另一个向量上的投影长度为
      在这里插入图片描述

    3. 计算两个向量的接近程度
      根据 cos 在角度 [0, 𝜋 ] 之间的值可以得出结论,越接近(夹角比较小)的两个向量的单位向量点乘结果越接近于 1反之越远离(夹角比较大)的两个向量的单位向量点乘结果越接近于-1

    4. 计算两个向量的方向是相同还是相反的。
      首先我们定义两个向量的方向相同或者相反。如图所示,向量a 以其垂线为分界,在上半部分(上半圆)
      的向量认为和向量a方向基本相同,在下半部分(下半圆)的向量认为和向量a方向基本相反。
      在这里插入图片描述
      在这里插入图片描述
      叉乘
      叉乘(Cross product),又称作向量的外积。两个向量叉乘的结果还是一个向量这个向量和原来的两个向量垂直。叉乘的结果向量的长度为:
      在这里插入图片描述
      结果向量的方向满足右手定则. 右手定则指的是,使用右手的四指从第一个向量到第二个向量握拳,大拇指指向的方向是叉乘结果向量的方向。因此叉乘不满足交换律
      在这里插入图片描述

    叉乘满足分配律,以及数乘结合律。向量自己和自己的叉乘结果是 0.
    在笛卡尔坐标系的表示下进行叉乘计算的结果可以写作

    在这里插入图片描述
    我们可以将向量a写成等价的矩阵形式
    在这里插入图片描述
    叉乘的应用

    1. 判断一个向量在另一个向量的左边还是右边;
      一个向量对另一个向量做叉乘,如果说结果方向为正,那么另一个向量在这个向量的右边。如果结果为负,那么在左边。

    2. 判定一个点在三角形的内部还是外部。
      在这里插入图片描述
      只要 P 点在边 AB,BC,AC(注意输入顺序)的左边,那么就满足 P 点在三角形 ABC 中。那么可以对每个边分别求一次叉乘判断点是否在三角形内部。三角形的输入必须保证为顺时针或者逆时针。为了忽略顺时针和逆时针的差别(顺时针输入需要要求点在三角形每一条边的右边),只要 P 在都在每条边的左边或者每条边的右边都算作在三角形内部。对于边界情况(如果叉乘结果为 0),那么由自己根据实际问题定义这是内部还是外部

  • 相关阅读:
    【Swift 60秒】47 - Functions:Summary
    Spring Boot 项目统一结果,统一异常,统一日志,写的太好了
    【git命令】删除分支
    Splunk HEC token 白名单设置-indexes
    java计算机毕业设计物业服务管理系统源程序+mysql+系统+lw文档+远程调试
    计算机18个专业方向
    有创意且简美大气的图表-堆叠极扇图
    K8S安装过程六:etcd 集群安装
    人工智能-卷积神经网络(LeNet)
    【WMS仓库管理系统】基础概念:库位、库区、库位
  • 原文地址:https://blog.csdn.net/weixin_46773434/article/details/127397574