图形学-向量基础与应用

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),那么由自己根据实际问题定义这是内部还是外部

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值