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