一 3D數學介紹
1D——數軸。
2D——兩條相交數軸,兩條數軸度量單位相等則稱爲笛卡爾座標系。
3D——空間直角座標系,分爲左手/右手座標系:大拇指 - x軸,食指 - y軸, 其餘三指 - z軸。左手座標系順時針旋轉,右手座標系逆時針旋轉。Unity使用左手座標系。
二 Unity中的座標系
全局座標系——以(0,0,0)爲原點
局部座標系——每個物體都有的自身獨立的座標系,獲取物體局部座標:transform.localPosition(有父物體的情況下)。
屏幕座標系——屏幕上的二維座標系,左下(0,0),右上(Screen.widtf,Screen.height)。
視口座標系——屏幕座標系單位化,左下(0,0),右上(1,1)。
-
座標系的相互轉換
- 全局和局部
transform.Translate(Vector3 , Space = Space.Self/Space.World):默認按着局部座標系中的方向移動。
Transform.TransfromPoint(Vector3 pos):局部座標轉全局座標。
Transform.InverseTransfromPoint(Vector3 pos):全局座標轉局部座標。
Transform.TransfromVector(Vector3 vec):向量從局部座標轉全局座標。
Transform.InverseTransfromVector(Vector3 vec):向量從全局座標轉局部座標。
transform.position:物體世界座標。
transform.forward/right/up:當前物體自身座標的z軸,x軸,y軸正方向相對世界座標系的方向。
2. 全局和屏幕
Camera.main.WorldToScreenPoint(Vector3)
Camera.main.WorldToScreenPoint(Vector3)
3. 屏幕和視口
Camera.main.ScreenPointToViewport(Vector3)
Camera.main.ViewportToScreenPoint(Vector3)
三 向量
Vector3.magnitude:向量長量
Vector3.Normalize():向量歸一化
Vector3.normalized:返回歸一化後的向量
Vector3.Dot(v1, v2)——向量點乘得到標量
向量叉積:a x b =
結果垂直原向量。
Vector3.Cross(v1, v2)
四 矩陣
Matrix4x4.SetRow(int, Vector4)/SetColumn(int, Vector4):設置行/列。
Matrix4x4.SetRow(int)/SetColumn(int):返回行/列Vector4。
Matrix4x4.identity:4x4單位矩陣。
Matrix4x4.isidentity:判斷是否單位矩陣。
Matrix4x4.zero:零矩陣。
Matrix4x4.transpose:返回矩陣的轉置矩陣。
Matrix4x4.inverse:逆矩陣。
五 變換
2D平移矩陣——
2D縮放矩陣——
Unity中的變換
Matrix4x4.Translate(Vector3):創建平移矩陣。
Matrix4x4.Rotate(Quaternion):創建旋轉矩陣。
Matrix4x4.Scale(Vector3):創建縮放矩陣。