3D遊戲基礎 空間幾何(三) 變換、平面、射線

來源:互聯網
上載者:User
因為內容都不多,所以把變換 與平面、射線  合在一起說。
變換包含:平移、旋轉和縮放。
我們可以對座標進行所有的三種變換操作;
而對於向量,則只能做 旋轉 和 縮放,因為向量不包含位置資訊,所以對他做平移變化是無意義的。

每一種變換,都有對應的變換矩陣,用向量或座標乘以變換矩陣,即可對它們完成變換。
變換矩陣之間,也可以做乘法疊加,疊加的幾何意義是把變換按疊加的先後順序複合到一個矩陣中去,注意矩陣疊加不滿足交換律。
變換矩陣是一個4 x 4的矩陣,所以向量和座標需要擴充到齊次空間中。

向量:(x, y, z, 0)
座標:(x, y, z, 1)
他們的區別在於第四項,向量的第4項取0,可以使矩陣的平移變換失效,而不影響旋轉和縮放運算。
座標第4項取1,使平移有效,並且平移變換的比例不會被變化。如果取2,則其平移的距離則是矩陣中定義的2倍。以此類推。
注意,在變換後,有可能出現第4項非0/1 的情況,這個時候,我們必須要做一個映射動作,將它從齊次空間映射回3維空間,方法很簡單:
(x, y, z, w) --> (x/w, y/w, z/w, w/w) --> (x/w, y/w, z/w, 1) --> (x/w, y/w, z/w)

具體的變換矩陣就不寫出來了,很容易找到。矩陣運算,請參考《線性代數》。

-------------------------------------------------------------------------------------------------------------

平面:
設空間中有向量 P0,則 (P - P0) 就形成了一條屬於某個平面的新的向量。即定義了以(P - P0)為軸,穿過這個軸的所有平面。那麼,要確定在這眾多平面中某一個特定平面,則需要再確定一個垂直於這個平面的向量 (法向量) n,即有n Dot (P - P0) = 0,這樣就定義出了一個平面。
其中,法線向量通常要做正常化運算。且,n 和 P0都是確定的,所以,平面可定義為:
n Dot P - n Dot P0 = 0, 令 d = - n Dot P0,則有:
                                                                                       n Dot P + d = 0
相關的判斷:
n Dot P + d = X;
若 X<0, 點P位於平面的背面,|X| 即點P到平面的距離
若 X>0, 點P位於平面的正面,|X| 為點P到平面的距離
這兩點,很容易證明,就不再詳細寫了。

------------------------------------------------------------------------------------------------------------

射線:
設起點為 P0, 方向為 u, t 為參數,t 屬於 [0, 無窮大),當t 屬於(-無窮大, +無窮大)時就表示直線。
p(t) = p0 + t * u

可以再根據平面和射線的定義,推匯出平面與射線相交的方程。
因為推導很簡單,就不寫了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.