Unity3D 数学相关
文章目录
点积
点积,又称为点乘,a.b,是向量对应分量乘积的和,结果为一个标量。 代数定义:[x,y,z].[a,b,c] = ax+by+cz。 几何定义:a.b = |a||b|cos(夹角)。 点积描述了向量的相似程度,结果值越大,向量越相近。
向量积
向量积,又称为叉乘,结果为一个向量,且不满足交换律。 公式:[x,y,z]x[a,b,c] = [yc-zb,za-xc,xb-ya]。 几何解释:向量积得到的向量垂直于原来的两个向量。叉乘的结果方向遵守坐标系规则。 a x b = c,如果左手坐标系,当左手从 a 以不超过180度的转角转向 b 时,竖起的大拇指指向的就是 c 的方向。 Unity使用的是左手坐标系,因为z轴朝向前方。所以 (1, 0, 0) 点乘 (0, 0, 1) 等于 (0, -1, 0)。
旋转
Transform.rotation:对象在世界坐标系下的旋转; Transform.localRotation:对象在父对象的局部坐标系下的旋转。 两个变量的类型均为四元素。
- 
得到游戏对象当前旋转的角-轴表示 transform.rotation.ToAngleAxis(angle, axis); 
- 
旋转归零,局部坐标系的坐标轴与世界坐标系的坐标轴平行 transform.rotation = Quaternion.identity; 
- 
使对象朝向target 
|  |  | 
- 将对象的旋转从from平滑差值到to,可以用来模拟相机的观察方向从物体a过渡到物体b的效果。
|  |  | 
坐标系
常用的坐标系有世界坐标系、局部坐标系、相机坐标系、屏幕坐标系。Transform.TransformPoint可以将坐标点从局部坐标系转换到世界坐标系,Transform.InverseTransformPoint可以将坐标点从世界坐标系转换到局部坐标系;Transform.TransformDirection和Transform.InverseTransformDirection对向量在世界坐标系和局部坐标系之间转换。例如,将对象位置转换为相机坐标系下的坐标:
|  |  | 
矩阵
一组元素,以n个数为一段,分成m段,按顺序排列为m行,可以构成一个矩阵。 矩阵形如矩形,当 m==n 时形如正方形,称为n阶方阵。 矩阵乘以一个常数,就是所有位置都乘以这个数。 两个矩阵可以相乘,条件:左矩阵的列数必须等于右矩阵的行数。 左矩阵每行与右矩阵每列的对应的数进行相乘然后相加得到一个数。
|  |  | 
转置矩阵:将 mxn 的矩阵的行和列互换,得到 nxm 的矩阵。 逆矩阵:对于一个n阶方阵A,如果存在一个n阶方阵B,使得 AxB=BxA=E,那么互为逆矩阵,E为单位矩阵。 单位矩阵:单位矩阵E就是对角线上全为1,其它为0。AxE=A。 如果一个数为g,有gxA=C,那么为了求g,可以使用逆矩阵,gxAx(A的逆矩阵)=Cx(A的逆矩阵),g=Cx(A的逆矩阵)。
一个点的坐标乘以一个矩阵,可以对改点进行缩放、旋转操作。如果要表示平移,需要添加一列元素,所以通常用 4x4 的矩阵对 vector3 表示的点坐标进行各种变换。
四元素
$i^2 = j^2 = k^2 = ijk = -1$ 其中i,j,k都为虚数,虽然虚数是不存在的,但是可以把一次旋转90度看作是乘以一个i,转180度即乘以 $i^2$,正好反向。复数是实数和虚数的和,而四元素源于复数,四元素的一般形式,用4个数表示: $q = [s, xi + yj + zk]$ 由于四元素计算公式复杂,通常在Unity中用欧拉角来创建四元素,而非直接使用。
傅立叶变换
卷积
文章作者 huijian142857
上次更新 2014-07-09