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):创建缩放矩阵。

 

    

 

     

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