UNITY3D中涉及的一些數學知識

2021-09-23 07:33:23 字數 1403 閱讀 7065

3d中的法線是什麼意思啊~

在空間垂直於乙個平面的直線;或者在乙個平面裡面,垂直於一條直線的直線.法線也可以指的某個方向.對於圓弧來講,指的是它與圓心相連的直線(方向).

法線:英語叫normal line.

就是一條垂直線,我們可以這樣聯想著記:

法 = 法律,法規,正直 = 垂直

學習quaternion的一點點筆記

在3d程式中,通常用quaternion來計算3d物體的旋轉角度,與matrix相比,quaternion更加高效,占用的儲存空間更小,此外也更便於插值。在數學上,quaternion表示複數w+xi+yj+zk,其中i,j,k都是虛數單位:

i*i = j*j = k*k= -1

i*j = k, j*i = -k

可以把quaternion看做乙個標量和乙個3d向量的組合。實部w表示標量,虛部表示向量標記為v,或三個單獨的分量(x,y,z)。所以quaternion可以記為[ w,v]或[ w,(x,y,x)]。對quaternion最大的誤解在於認為w表示旋轉角度,v表示旋轉軸。正確的理解應該是w與旋轉角度有關,v與旋轉軸有關。例如,要表示以向量n為軸,軸旋α度,相對的quaternion應該是:

q = [ cos(α/ 2) , sin(α/ 2)n]

=[ cos(α/ 2) , ( sina(α/ 2)nx, sin(α/ 2)ny, sin(α/ 2)nz ) ]

為了計算方便,一般要求n為單位向量。對quaternion來說使用四個值就能記錄旋轉,而不是matrix所需的十六個值。為什麼用quaternion來計算旋轉很方便呢?先說過quaternion是乙個複數,如果你還記得一點點複數的知識,那麼應該知道複數乘法(叉乘)的幾何意義實際上就是對複數進行旋轉。對最簡單的複數p= x + yi來說,和另乙個複數q = ( conα,sinα)相乘,則表示把p沿逆時針方向旋轉α:

p』 = pq

當然,x+yi的形式只能表示2d變換,對3d變換來說就需要使用quaternion了,而且計算也要複雜一點。為了對3d空間中的乙個點p(x,y,z)進行旋轉,需要先把它轉換為quaternion形式p = [0, ( x, y, z)],接下來前面討論的內容,定義q = cos(α/ 2) , sin(α/ 2)n為旋轉quaternion,這裡n為單位向量長度的旋轉軸,α為旋轉角度。那麼旋轉之後的點p』則為:

p』 = qpq-1

ps:粗體字母表示向量

posted on 2016-09-22 13:40收藏

unity3d 一些新用法

1.ref 用法setstate ref this.curstate,animatorstate.other 如果用上ref的話,操作的是同乙個變數,所以會改變值,如果沒用上ref的話,操作的不是同乙個變數,所以值不會改變。呼叫的引數要在呼叫前就要初始化,賦值2.physics2d linecast...

C 作為unity3D的一些常用函式

1.gameobject跟隨遊戲物件 即將c 指令碼拖給誰gameobject就是誰 如 gameobject.transform.rotate 0,15 time.deltatime,0,space.self 就是使遊戲物件按自己的y軸旋轉。2.通過遊戲物件名來獲取遊戲物件 如 gameobjec...

Unity3d開發之對Public的一些個人說法

在開發專案中,我們經常需要公開類內部的變數讓外部呼叫。c 標準寫法是讓我宣告私有字段然後生成對應的公共屬性供外部呼叫。保證 安全。而我們在開發unity專案時,因為為了省時或者可以在面板賦值,我們經常直接在類內部宣告公開的字段。如下 public int num 1 unity的獨特之處時,在我們編...