向量Vector 简介

Reading time ~1 minute

概念

向量有一个方向(Direction)大小(Magnitude,也叫做强度或长度)。 向量的维度(Dimension)表示向量包含的“数”的个数。 向量表示的是方向,起始于何处并不会改变它的值。我们通常设定方向的原点为(0,0,0),然后指向对应坐标的点,使其变为位置向量(Position Vector)来表示。

运算

向量取反:

对一个向量取反会将其方向逆转。在一个向量的每个分量前加负号就可以实现取反了(或者说用-1数乘该向量)。

向量与标量运算:

标量(Scalar)只是一个数字。当把一个向量加/减/乘/除一个标量,我们可以简单的把向量的每个分量分别进行该运算。

向量加减:

向量的加法可以被定义为是分量的(Component-wise)相加,即将一个向量中的每一个分量加上另一个向量的对应分量。 几何意义:

加法:

减法:

向量模长:

利用勾股定理(Pythagoras Theorem)来获取向量的长度:

123

标准化向量:

即单位向量(Unit Vector),或“法线”。单位向量就是长度为1的向量。 可以用任意向量的每个分量除以向量的长度得到它的单位向量:

距离公式:

两点间的距离即从一个点到另一个点的向量的长度。 点a到点b的向量d距离等于b-a。 两点距离即d的模长||d||。

向量点乘:

点乘也称为内积。点乘结果是标量,并且满足交换律。 向量点乘就是对应分量乘积的和。

几何解释: 点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。 点乘等于向量大小与向量夹角的cos值的乘积:

如果两个向量都是单位向量,则点乘只与夹角有关:

从而很容易知道两个向量的方向关系,如是否正交(Orthogonal)或平行:

a·b θ a和b
>0 0 <= θ < 90 方向基本相同
0 θ =90 正交
<0 90 < θ < 180 方向基本相反
1 θ = 0 平行

向量投影:

有两个向量v和u,假设u在v上的投影向量是u’。

因为u’ 和 v 是同方向的,可以得到:

综合以上公式可得:

即最终的投影向量。

向量叉乘:

与点乘不同,向量叉乘得到一个向量,并且不满足交换律。 公式:

叉乘和点乘在一起运算时,叉乘优先计算:

该运算称为三重积。

几何意义: 叉乘只在3D空间有定义,两个不平行的向量叉乘,会得到正交于两个向量的第三个向量。

axb的长度等于向量长度与向量夹角sin值的乘积:

可知axb的长度也等于以a和b向量构成的平行四边形的面积:

注意: 已知axb垂直于a、b。但是垂直于a、b有两个方向,如何确定呢? 可以通过将a的头与b的尾相接,查看a到b是顺时针还是逆时针。在左手坐标系,如果是顺时针,则指向自己一侧,逆时针则远离自己一侧。

Scriptable Objects 及 游戏架构

Scriptable Objects 相关介绍,及基于其的游戏架构技术 Continue reading

AssetBundle 最佳实践

Published on January 29, 2019

AssetBundle 基础总结

Published on January 27, 2019