Unity3D数学之向量基础

xiaoxiao2021-02-28  222

向量 1)向量 是有大小和方向的有向线段,没有位置。向量的大小就是向量的长度(模),向量有非负的长度。如“向前三步走”、“以50公里/小时向北行驶”都是有方向有速度的向量。 向量没有具体位置,但可以描述相对位置和位移。点用来描述位置。 任意一点都可以用从原点开始的向量来表达,如(3,5,1)即可以代表一个点,也可以代表从0,0,0指向该点的一个位移向量。 通过一个点或者两个点都可以确定一个向量。 ---- 2)向量大小 为向量各分量平方和的平方根。代码: dir.magnitude ---- 3)向量与标量。 标量强调数值,“速度、位移”等是向量;“速率、长度”等是标量。 ---- 4)标准化向量(法线) :许多向量我们不关注其大小只关心其方向,如:“我面向的是什么方向?”标准化(法线)向量即大小为1的向量(3D环境下为一个半径为1的单位球)。代码: dir.normalized。 向量标准化原理:将向量除以它的大小(模)即可。 ---- 5)向量乘法: ①标量与向量 不能相加,但可以 相乘 。结果仍为一个向量与原方向平行,但长度加倍,方向可能相反。如dir*3; ②向量与向量的乘法有两种: 点乘: 点乘等于向量大小与向量夹角Cos值的积, 结果是一个标量 。点乘结果描述了两个向量的“相似”程度。Vector3.Dot(M,N); a*b=||a||*||b||*Cos(α); 当设定a、b向量为单位向量时(a.forward,b.normalized)则a点乘b的值就是两个向量的夹角Cos(α)的值(-1~1),当重叠时则夹角Cos(α)无限接近于1(0°) 叉乘: 叉乘仅可用于3D向量。和点乘不一样,点乘得到一个标量并满足交换律;叉乘 结果是一个向量 且不满足交换律。叉乘得到的向量垂直于原来的两个向量。 Vector3.Cross(M,N)==>||M||*||N||*Sin(α); 叉乘Vector3.Cross(M,N)与Vector3.Cross(N,M);的结果是不同的。在Unity中左手坐标系中,可以使用左手法则,以左手手掌指向M的方向,弯曲四指指向N的方向,此时拇指方向即为叉乘结果的方向,向下为负,向上为正。 叉乘最重要的应用就是创建垂直于平面、三角形或多边形的向量。 ---- 6)向量加减: 向量加法满足交换律:a+b=b+a;向量减法不满足交换律:a-b=-(b-a); a+b等于使b的始点与a的终点重合时,以a的始点为始点,以b的终点为终点的向量。 a-b等于使b的始点与a的始点重合时,以b的终点为始点,以a的终点为终点的向量。 根据三角形法则得知, a-b得到的是一个从b到a的位移向量(表示在此方向上移动的一段距离)
转载请注明原文地址: https://www.6miu.com/read-43323.html

最新回复(0)