下載C++實現程序
3D中的方位和角位移的C++實現(4) 摘要: cRotationMatrix就其特殊目的來說是稱職的,但也正因為如此,它的廣泛應用受到了限制。cMatrix4x3類是一個更加一般化的矩陣,它被用來處理更加復雜的變換。這個矩陣類保存了一個一般仿射變換矩陣。旋轉、縮放、鏡像、投影和平移變換它都支持,該矩陣還能求逆和組合。
因此,cMatrix4x3類的語義和cRotationMatrix類完全不同。cRotationMatrix僅應用于特殊的物體空間和慣性空間,而cMatrix4x3有更一般的應用,所以我們使用更一般化的術語"源"和"目標"坐標空間。和cRotationMatrix不一樣,它的變換方向是在矩陣創建時指定的,之后點只能向那個方向(源到目標)變換。如果要向相反的方向變換,須先計算逆矩陣。
3D中的方位和角位移的C++實現(3) 摘要: cRotationMatrix類的目的就是處理非常特殊的(也是極其常用的)物體和慣性坐標空間之間的旋轉。這個矩陣類不是一般的變換類,我們假定這個類只包含旋轉,因此,它是正交的。換句話說,該矩陣表達的是方位,而不是角位移。當你創建這樣的矩陣時,不必指定變換的方向(物體坐標空間到慣性坐標空間或是慣性坐標空間到物體坐標空間)。變換的方向在實際執行變換時指定,每個方向對應一個函數。
3D中的方位和角位移的C++實現(2) 摘要: cQuaternion類用來以四元數形式保存方位或角位移,在能應用到四元數上的完整數學運算集合中,只有那些對單位四元數有意義的運算才對保存角位移有用,這里沒有提供四元數的求負、加減、標量乘、對數操作。
3D中的方位和角位移的C++實現(1) 摘要:
處理變換是一件非常令人頭疼的事,矩陣更是棘手。如果你曾經編寫過關于矩陣的代碼并且沒有用設計良好的類,你會發現經常要處理負號、轉置矩陣或翻轉連接順序以使其能正常工作。
下面這幾個類正是為了消除在編程中經常遇到的這類問題而設計的。例如,很少需要直接訪問矩陣或四元數中的元素,因此特意限制了可用操作的數目以避免產生迷惑,再如,對cRotationMatrix類,沒有求逆和連接操作,因為如果按其本身的目的使用cRotationMatrix,這些操作是不應該出現或沒有意義的。