遊戲開發中的矩陣初探

2022-05-09 00:51:11 字數 1542 閱讀 4422

(1)長方體a想繞(10,3,4)旋轉50°且沿著x方向放大2倍且向(9,-1,8)方向平移2個單位,那麼經過上面的變換後,新的長方體各個點的座標是多少呢?應用矩陣可以很輕鬆的算出答案。

(2)知道子座標繫在父座標系中的位置,可以求出子座標系中的店在父座標系中的位置。

矩陣能描述任意線性變換。線性變換保留了直線和平行線,線性變換保留直線的同時,其他的幾何性質如長度、角度、面積和體積可能被變換改變了。簡單的說,線性變換可能「拉伸」座標系,但不會「彎曲」或「捲摺」座標系。

(1)平移

以下矩陣能把一點向t向量方向平移:

(2)旋轉

正方向為從旋轉軸正向看過去的逆時針方向,比如繞z軸[0,0,1]旋轉,正方向為x至y軸方向

知道了繞著三軸後的旋轉矩陣,那麼下面就是繞任意向量所得的矩陣了。設m為單位矩陣經向量a旋轉後的矩陣,且a= (xa, ya, za),旋轉角度為α,則

m=

不要問為什麼,記住即可。

(3)縮放

縮放點為r,x軸縮放sx,y軸縮放sy,z軸縮放sz,則新座標為:

(4)綜合

比如要把座標系中的所有點平移[2,3,4](x軸平移2,y軸平移3,z軸平移4)

,繞z軸旋轉90°

,x,y,z軸都放大2倍

,則得到的變換矩陣為

注意:縮放不是只把sx,sy,sz位置相乘,而是那一軸的模為縮放值

最後所得的變換矩陣

不等於相乘把點或方向從任何子座標系c變換至父座標系p的矩陣,可寫作mc-p。此矩陣表示把點或方向從子空間變換至父空間。以下等式把任何子空間位置向量pc變換至父空間位置向量pp,pp = pcmc-p   

mc-p  =

opengl超級寶典第四版p101頁說:如果乙個4×4矩陣包含了乙個不同的座標系統的位置和方向(可以看成上面的mc-p),那麼,把乙個頂點pp與這個矩陣相乘,其結果就是乙個變換到該座標系統的新頂點pc(座標還是相對於原座標系)。這看起來像公式pc

=pp mc-p ,錯錯錯!這用pp完全是個誤導,把pp改名字叫a,座標v,由於是線性變換,所以在新座標系統中a的座標還是v,所以這就與pp = pcmc-p  一致了,pp為a在新座標系統中v在原座標系中的座標。

opengl中矩陣的變換是疊加的,每做一次矩陣變換,就把零點移到新的座標系中。下次變換只影響當前座標系及其子座標系,不會影響其父座標系。載入單位矩陣是將零點重新置為最初的零點。

單純的矩陣運算不會移動零點位置,所以與單位矩陣相乘沒有任何效果。

1.opengl超級寶典第四版p101

2.遊戲引擎架構p151

3. opengl中glrotatef()函式究竟對矩陣做了什麼

4.3d數學 ---- 矩陣的幾何解釋 - 天行健 君子當自強而不息 - c++部落格

Unity3D遊戲開發初探

1 如何在遊戲指令碼程式中建立物件而不是一開始就建立好物件?使用gameobject的靜態方法 createprimitive view code 其中在createcube方法中,使用gameobject.createprimitive方法來建立cube型別的遊戲物件例項,設定了它出現的座標並為它...

tvOS的開發初探

steve不幸離世已經過去很久了,但是人們一直翹首以盼著這款產品。就在昨天2015年9月9日,超過四個春秋的期盼,我們終於等來了這個禮物,雖然可能與steve對這款產品的願景和理想有所差距,但是革命的步伐已經堅實的邁出了第一步。我和其他教程團隊的成員已經開始深入研究tvos sdk,並且正在努力準備...

遊戲開發中的概念設計

上次錄完 日式美學小記 之後,小路邀請到了一位做遊戲設計和開發的朋友品,這次就請他來聊一聊概念設計和遊戲開發。不怕大家笑話,我是乙個寫字 因為這個被老師從小學罵到大學 和畫畫 學到素描就徹底放棄 都特別差的人,一直以來都特別羨慕會畫畫的人。看了下品在微博發的圖,感覺到了深深的羨慕和嫉妒,同樣是手,我...