摘要: 處理變換是一件非常令人頭疼的事,矩陣更是棘手。如果你曾經(jīng)編寫過關于矩陣的代碼并且沒有用設計良好的類,你會發(fā)現(xiàn)經(jīng)常要處理負號、轉(zhuǎn)置矩陣或翻轉(zhuǎn)連接順序以使其能正常工作。
下面這幾個類正是為了消除在編程中經(jīng)常遇到的這類問題而設計的。例如,很少需要直接訪問矩陣或四元數(shù)中的元素,因此特意限制了可用操作的數(shù)目以避免產(chǎn)生迷惑,再如,對cRotationMatrix類,沒有求逆和連接操作,因為如果按其本身的目的使用cRotationMatrix,這些操作是不應該出現(xiàn)或沒有意義的。
閱讀全文
摘要: cRotationMatrix就其特殊目的來說是稱職的,但也正因為如此,它的廣泛應用受到了限制。cMatrix4x3類是一個更加一般化的矩陣,它被用來處理更加復雜的變換。這個矩陣類保存了一個一般仿射變換矩陣。旋轉(zhuǎn)、縮放、鏡像、投影和平移變換它都支持,該矩陣還能求逆和組合。
因此,cMatrix4x3類的語義和cRotationMatrix類完全不同。cRotationMatrix僅應用于特殊的物體空間和慣性空間,而cMatrix4x3有更一般的應用,所以我們使用更一般化的術語"源"和"目標"坐標空間。和cRotationMatrix不一樣,它的變換方向是在矩陣創(chuàng)建時指定的,之后點只能向那個方向(源到目標)變換。如果要向相反的方向變換,須先計算逆矩陣。
閱讀全文
摘要: cRotationMatrix類的目的就是處理非常特殊的(也是極其常用的)物體和慣性坐標空間之間的旋轉(zhuǎn)。這個矩陣類不是一般的變換類,我們假定這個類只包含旋轉(zhuǎn),因此,它是正交的。換句話說,該矩陣表達的是方位,而不是角位移。當你創(chuàng)建這樣的矩陣時,不必指定變換的方向(物體坐標空間到慣性坐標空間或是慣性坐標空間到物體坐標空間)。變換的方向在實際執(zhí)行變換時指定,每個方向?qū)粋€函數(shù)。
閱讀全文
摘要: cQuaternion類用來以四元數(shù)形式保存方位或角位移,在能應用到四元數(shù)上的完整數(shù)學運算集合中,只有那些對單位四元數(shù)有意義的運算才對保存角位移有用,這里沒有提供四元數(shù)的求負、加減、標量乘、對數(shù)操作。
閱讀全文
留下一個人和一盞燈
讓黑夜躲在窗外
寒冷的盡頭是一壺酒
溫暖我唯一的夢
許多生命里走過的風雨
并非每個人都懂
就當我和你從不曾有過
如此短暫的相遇
化身沒有愛也沒有恨的海
洗凈憂傷的塵埃
眼中的遺憾和心底的傷感
總有停泊的港灣
不是我能夠負擔
摘要: 處理變換是一件非常令人頭疼的事,矩陣更是棘手。如果你曾經(jīng)編寫過關于矩陣的代碼并且沒有用設計良好的類,你會發(fā)現(xiàn)經(jīng)常要處理負號、轉(zhuǎn)置矩陣或翻轉(zhuǎn)連接順序以使其能正常工作。
下面這幾個類正是為了消除在編程中經(jīng)常遇到的這類問題而設計的。例如,很少需要直接訪問矩陣或四元數(shù)中的元素,因此特意限制了可用操作的數(shù)目以避免產(chǎn)生迷惑,再如,對cRotationMatrix類,沒有求逆和連接操作,因為如果按其本身的目的使用cRotationMatrix,這些操作是不應該出現(xiàn)或沒有意義的。
閱讀全文
唉,游戲這東西。
摘要: 直觀地說,我們知道物體的“方位”主要描述的是物體的朝向。然而“方向”和“方位”并不完全一樣。向量有“方向”但沒有“方位”,區(qū)別在于,當一個向量指向特定方向時,可以讓向量自轉(zhuǎn)(如圖10.1所示),但向量(或者說它的方向)卻不會有任何變化,因為向量的屬性只有“大小”,而沒有“厚度”和“寬度”。
閱讀全文
摘要: 為了將角位移從歐拉角轉(zhuǎn)換到四元數(shù),可以使用從歐拉角構造矩陣類似的方法。先將這三個旋轉(zhuǎn)分別轉(zhuǎn)換為四元數(shù),這是一個簡單的運算。再將這三個四元數(shù)連接成一個四元數(shù)。和矩陣一樣,有兩種情況需要考慮,第一種是慣性 -- 物體四元數(shù),第二種是物體-- 慣性四元數(shù)。因為它們互為共軛關系,所以我們只推導慣性--物體四元數(shù)。
閱讀全文
摘要: 為了將角位移從四元數(shù)轉(zhuǎn)換到矩陣形式,可以利用旋轉(zhuǎn)矩陣,它能計算繞任意軸的旋轉(zhuǎn):
這個矩陣是用n和θ表示的,但四元數(shù)的分量是:
w = cos(θ/2)
x = nx sin(θ/2)
y = ny sin(θ/2)
z = nz sin(θ/2)
閱讀全文