• 向量的数学运算
    • 1、特殊向量
    • 2、向量大小计算
    • 3、向量的方向
    • 4、向量与标量的运算
    • 5、向量标准化
    • 6、向量加法
    • 7、向量减法
    • 8、向量点乘
    • 9、向量叉乘

    向量的数学运算

    向量的计算主要借助 “线性代数”

    1、特殊向量

    零向量:

    1. 向量的所有分量都是0
    2. 几何意义:用于表达参考坐标系的原始点(出发点)
    3. 注意:零向量没有大小没有方向,是一个特殊向量

    负向量:

    1. 对于向量的每一个维度产生负数的变化(通俗讲就是每个维度乘以 1
    2. 几何意义:负向量与原始向量的位置一样,但是位移相反
    3. 注意:零向量没有负向量

    单位向量:

    1. 长度为1的向量

    2、向量大小计算

    1. 方向是我们规定的,但是移动了多少个单位,我们需要精确的计算
    2. 在线性代数中我们称向量的大小计算为“求模”运算
    3. 各个维度上的数平方再相加,将最后的和开方求解;
    4. 求模运算的结果是:一个标量;
    5. 例如:向量 V [x, y, z]
    6. 求模:sqrt( x * x + y * y + z * z);
    7. 几何意义:用来求这个向量的长度(从原点到向量尾的长度)

    3、向量的方向

    1. 可以用向量的单位向量表示,便于计算

    4、向量与标量的运算

    1. 向量与标量乘法
    2. 向量的各个维度和已有标量值进行相乘,计算结果还是一个向量
    3. 1 2 3)* 5 5 10 15
    4. 向量与标量除法
    5. 5 10 15)/5 1 2 3
    6. 注意:向量与标量只能进行乘除,不能加减
    7. 几何意义:为了实现向量的各个维度同时扩大或缩小。向量缩放因子范围是 0 - 正无穷。如果缩放因子为负表示反方向向量(倒转向量方向放大或缩小)。

    5、向量标准化

    1. 有时候我们只关心向量的位移,对于向量的大小不需要关心,这样的形式我们可以将向量的各个维度缩到0 1之间,使向量的长度为 1。去除他的位置特性。这样的表示我们称为“向量标准化”
    2. 公式:V / |V| = Vnormal
    3. 几何意义:为了得到指定向量的方向,不保留向量大小。在计算机图形学中是为了描述一个“法线”法线只有方向没有大小,他是人为虚拟的一个向量。

    6、向量加法

    1. 计算方式:两个向量的维度必须一样,两个向量的各个维度相加,得到一个新向量;
    2. 数学意义
    3. 3 4 5)+(7 8 9)= 10 12 14
    4. 几何意义
    5. A向量+B向量=把这个两个向量首尾相连,从起始端指向末端的一个向量

    7、向量减法

    1. 计算方式:两个向量的维度必须一样,两个向量的各个维度相减,得到一个新向量;
    2. 数学意义
    3. 3 4 5)-(7 8 9)= (-4 -4 -4
    4. 几何意义
    5. A向量-B向量=从B向量的带箭头的那一端指向A向量带箭头的那一端

    8、向量点乘

    1. 写法:a 点乘 b;你在纸上写成一个 “点”
    2. 点乘需要两个维度相同的向量,然后让两个向量的维度相互乘再把所有维度的积加起来;
    3. 几何意义:点乘用于描述两个向量的相似度的,如果点乘结果越大两个向量的方向越相似;
    4. 点乘就是为了求角度的:
    5. a b ||a|| * ||b|| * cos@;
    6. 注意:如果两个向量已经标准化了,a 点乘 b表示两个向量的 cos值,我们对其 acos 得到弧度值,然后用 弧度转度获取角度

    9、向量叉乘

    1. A向量 X B向量;两个向量中间的乘号我们应该写成 "X"
    2. 叉乘的结果是一个垂直于这两个向量的新向量。
    3. 方向要用“右手法则”判断(用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向)
    4. 数学运算:
    5. x1 x2 y1z2 - z1y2
    6. y1 X y2 = z1x2 - x1z2
    7. z1 z2 z1y2 - y1x2
    8. 叉乘不满足交换律,也不满足结合律;
    9. 几何意义:两个向量叉乘后的结果是垂直于这两个向量的。起始就是为了求得两个向量的垂直线,这个垂直线被标准化后就是我们的法线
    10. |c| = |a x b| = |a| * |b| * sin<theta>

    ?