Unity開發-3D數學基礎

一    3D數學介紹

       1D——數軸。

       2D——兩條相交數軸,兩條數軸度量單位相等則稱爲笛卡爾座標系。

       3D——空間直角座標系,分爲左手/右手座標系:大拇指 - x軸,食指 - y軸, 其餘三指 - z軸。左手座標系順時針旋轉,右手座標系逆時針旋轉。Unity使用左手座標系。

二     Unity中的座標系

       全局座標系——以(0,0,0)爲原點

       局部座標系——每個物體都有的自身獨立的座標系,獲取物體局部座標:transform.localPosition(有父物體的情況下)。

       屏幕座標系——屏幕上的二維座標系,左下(0,0),右上(Screen.widtf,Screen.height)。

       視口座標系——屏幕座標系單位化,左下(0,0),右上(1,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 = (a_{x}, a_{y}, a{z}) \times (b_{x}, b_{y}, b{z}) =(a_{y}b_{z} - a_{z}b_{y}, a_{z}b_{x} - a_{x}b_{z}, a_{x}b_{y} - a_{y}b_{x})

     結果垂直原向量。

     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平移矩陣——\begin{bmatrix} 1 & 0&t_{x} \\ 0& 1&t_{y} \\ 0& 0& 1 \end{bmatrix}

      2D縮放矩陣——\begin{bmatrix} s_{x} & 0&0 \\ 0& s_{y} &0 \\ 0& 0& 1 \end{bmatrix}

 

       Unity中的變換

       Matrix4x4.Translate(Vector3):創建平移矩陣。

       Matrix4x4.Rotate(Quaternion):創建旋轉矩陣。

       Matrix4x4.Scale(Vector3):創建縮放矩陣。

 

    

 

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章