摘 要:共形幾何代數(shù)是一種新的幾何表示和幾何計(jì)算工具,它具有直觀、簡(jiǎn)潔、高效、統(tǒng)一、雅致等特性。在簡(jiǎn)單介紹外積、內(nèi)積和幾何積等基本概念之后,重點(diǎn)論述了共形幾何代數(shù)在圖形反射、旋轉(zhuǎn)、平移等變換和剛體運(yùn)動(dòng)、螺旋運(yùn)動(dòng)等方面的描述和計(jì)算方法,并給出了實(shí)驗(yàn)示例。共形幾何代數(shù)在計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)視覺(jué)和機(jī)器人學(xué)等領(lǐng)域?qū)⒂袕V泛應(yīng)用。
關(guān)鍵詞:共形幾何代數(shù); 幾何積; 圖形變換; 剛體運(yùn)動(dòng); 螺旋運(yùn)動(dòng)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):10013695(2008)09284203
CGA representation of graphic transformations and motions
XING Yana,b, TAN Jieqinga,b
(a.School of Science, b.School of Computer Information, Hefei University of Technology, Hefei 230009, China)
Abstract:Conformal geometric algebra (CGA) is a kind of new geometric representation and geometric computation tool, and it has properties of geometric intuitiveness, compactness, high efficiency, unification and elegance. After introducing the basic knowledge of geometric algebra such as outer product, inner product and geometric product, this paperfocused on the CGA description and computation with graphic reflection, rotation, translation, rigid body motion and screw motion, and gave the experimental demonstrations. CGA promises a bright future in a variety of application areas of computer graphics, computer vision, robotics and so on.
Key words:conformal geometric algebra; geometric product; graphic transformation; rigid body motion; screw motion
三維圖形的幾何變換是計(jì)算機(jī)圖形學(xué)的重要基本技術(shù)。各類圖形應(yīng)用軟件的開(kāi)發(fā)不可避免地需要經(jīng)常處理一些典型的圖形變換,如圖形的平移、反射、旋轉(zhuǎn)和縮放等。機(jī)械手和機(jī)器人等研究的廣泛興起,也促使人們尋求更有效的圖形變換方法。這些圖形變換的經(jīng)典方法一般都是通過(guò)變換矩陣來(lái)實(shí)現(xiàn),而四元數(shù)方法是比較新穎的方法[1,2]。本文將介紹的是與四元數(shù)有密切聯(lián)系的但卻是更加通用的簡(jiǎn)潔統(tǒng)一的共形幾何代數(shù)方法[3,4]。
1 共形幾何代數(shù)
1.1 簡(jiǎn)介
1997年,共形幾何代數(shù)由中國(guó)科學(xué)院數(shù)學(xué)與系統(tǒng)科學(xué)研究院的李洪波研究員主創(chuàng)。它建立了經(jīng)典幾何統(tǒng)一的和簡(jiǎn)潔的齊次代數(shù)框架,即以簡(jiǎn)明的方式統(tǒng)一表述所有的初等幾何,包括歐氏幾何、雙曲(非歐)幾何、球幾何、投影幾何、仿射幾何等,在幾何建模與計(jì)算方面表現(xiàn)出極大的優(yōu)勢(shì)。近年來(lái),它在微分幾何、理論物理、經(jīng)典分析等方面取得了輝煌的成就,是現(xiàn)代數(shù)學(xué)和理論物理的一個(gè)核心工具,并在現(xiàn)代科技的各個(gè)領(lǐng)域,如計(jì)算機(jī)圖形學(xué)和動(dòng)畫(huà)、計(jì)算機(jī)視覺(jué)和機(jī)器人學(xué)等方面有著廣泛的應(yīng)用。
1.2 幾何代數(shù)的積
12.1 外積
外積用∧表示,有如下性質(zhì):
反對(duì)稱性 a∧b=-b∧a
線性a∧(b+c)=a∧b+a∧c
結(jié)合性 a∧(b∧c)=(a∧b)∧c
可見(jiàn),平行的向量外積為0:a∧a=-a∧a=0。
外積主要用于幾何對(duì)象的構(gòu)建和求交。例如兩個(gè)向量的外積是一個(gè)二向量(平面量),即這兩個(gè)向量張成的平面內(nèi)的一個(gè)有方向的面積元素;三個(gè)向量的外積是一個(gè)三向量(體向量)。
12.2 內(nèi)積
兩個(gè)向量的內(nèi)積與向量的點(diǎn)積(標(biāo)量積)相同。互相垂直的向量?jī)?nèi)積為0。在幾何代數(shù)中,不僅僅向量能做內(nèi)積,二向量、三向量等多向量均能做內(nèi)積。不同級(jí)別的對(duì)象做內(nèi)積的結(jié)果是位于高維空間中的垂直于低維對(duì)象的對(duì)象。因此,內(nèi)積運(yùn)算可以降級(jí),如向量和平面量的內(nèi)積是向量。
向量與平面量的內(nèi)積公式[5]:
a×(b∧c)=(a×b)c-(a×c)b(1)
既然(a×b)和(a×c)是標(biāo)量,可見(jiàn)向量和平面量的內(nèi)積是一個(gè)向量,降了1級(jí)。
令A(yù)〈k〉=a1∧a2∧a3∧…∧ak,式(1)可以推廣為
x×A〈k〉=x×(a1∧a2∧a3∧…∧ak)=
(x×a1)(a2∧a3∧a4∧…∧ak)-
(x×a2)(a1∧a3∧a4∧…∧ak)+
(x×a3)(a1∧a2∧a4∧…∧ak)-…=
∑ki=1(-1)(i+1)(x×ai)[A〈k〉\ai](k≥1)
其中:x是向量;k≥1;[A〈k〉\ai]表示A〈k〉中缺少ai項(xiàng)。可見(jiàn),向量和k-向量的內(nèi)積是k-1級(jí)向量。
二向量與A〈k〉的內(nèi)積公式如下:
內(nèi)積結(jié)果是k-2級(jí)元素,降了2級(jí)。更一般地,若令B〈l〉=b1∧b2
內(nèi)積結(jié)果是l-k級(jí)元素,降了k級(jí)。
內(nèi)積可用來(lái)計(jì)算角度和距離。
123 幾何積
幾何積是外積與內(nèi)積的組合。對(duì)于向量a和b,幾何積ab被定義為ab=a×b+a∧b。
幾何積滿足結(jié)合率和分配率:
a(bc)=(ab)c=abca(b+c)=ab+ac
可以推得 a×b=1/2(ab+ba)
a∧b=1/2(ab-ba)
任何向量的平方是標(biāo)量:
a2=aa=a×a+a∧a0=a×a
不僅僅向量定義了幾何積,各種多向量(如二向量、三向量等)也同樣可以求幾何積。
幾何積有一個(gè)重要的屬性,即它是可逆的。一個(gè)對(duì)象A的逆A-1滿足AA-1=1。
所以向量a的逆是a-1=a/(a×a),因?yàn)閍(a/(a×a))=(a×a)/(a×a)=1。
正因?yàn)閹缀畏e是可逆的,所以被幾何對(duì)象除是可能的。幾何積是一個(gè)功能強(qiáng)大的運(yùn)算,它能簡(jiǎn)單地描述變換。
13 五維共形幾何代數(shù)
三維歐氏幾何代數(shù)有三個(gè)歐氏基向量e1,e2,e3。這些基向量的線性組合能被解釋成三維向量或三維點(diǎn)。定義I3=e1e2e3。
I3是一個(gè)有方向大小為1的體積元素,其平方I23=-1,它被稱為歐氏偽標(biāo)量。
四維投影幾何代數(shù)增加了表示三維原點(diǎn)的基e0,將歐氏空間中的非奇次點(diǎn)x=x1e1+x2e2+x3e3通過(guò)X=x+e0轉(zhuǎn)換成奇次點(diǎn)。基于這種映射,原點(diǎn)被映射到e0。投影幾何代數(shù)是共形幾何代數(shù)的一部分。
五維共形幾何代數(shù)增加兩個(gè)新的基e0和e∞,e0表示三維原點(diǎn),e∞表示無(wú)窮遠(yuǎn)點(diǎn)。
這兩個(gè)新的基是空向量 e20=e2∞=0
它們的內(nèi)積是 e0×e∞=-1
它們的幾何積是e0e∞=e0×e∞+e0∧e∞=-1+e0∧e∞或e∞e0=e∞×e0+e∞∧e0=-1-e0∧e∞
共形幾何代數(shù)可以容易地表示大量的幾何實(shí)體,即點(diǎn)、點(diǎn)對(duì)、線、圓、面、球,它們均有兩種互為對(duì)偶的代數(shù)表示[5]。共形幾何代數(shù)能夠容易地處理共形變換(角度為不變量)[3,4,6]。
2 圖形的變換和運(yùn)動(dòng)及實(shí)驗(yàn)示例
共形幾何代數(shù)中,變換和運(yùn)動(dòng)很容易被描述。一個(gè)對(duì)象o的各種變換均可借助下面的幾何積來(lái)實(shí)現(xiàn):
otransformed=VoV
其中:V通常是規(guī)格化(即模為1)的變換算子,常被稱為versor,可以表示反射算子、旋轉(zhuǎn)算子或平移算子;V表示V的倒轉(zhuǎn)。運(yùn)算符~表示簡(jiǎn)單地倒轉(zhuǎn)操作對(duì)象中所有向量的次序,如A=a1a2…ak,則A=akak-1…a1。
2.1 反射
令n是任一單位向量(|n|=1),對(duì)象o關(guān)于n的反射為oreflected=non=non。
當(dāng)反射軸n是向量,對(duì)象o是向量a時(shí),a可分解為a=a‖+a⊥。其中:a‖是a平行于n的分量;a⊥是a垂直于n的分量,則可推導(dǎo)
nan=n(an)=n(a×n+a∧n)=n(a×n)+n(a∧n)=n(a×n)+n×(a∧n)+n∧(a∧n)
由于(a×n)是標(biāo)量,有n(a×n)=(a×n)n。由式(1),n×(a∧n)=(n×a)n-(n×n)1a=(a×n)n-a;而n∧(a∧n)=-n∧(n∧a)=-(n∧n)0∧a=0,所以
nan=n(a×n)+n×(a∧n)+n∧(a∧n)=2(a×n)n-a=2|a‖|n-a=2a‖-(a‖+a⊥)=a‖-a⊥
由圖1可見(jiàn),nan是向量a關(guān)于軸n的反射向量。
不僅向量可以關(guān)于反射軸作反射(圖2),作反射操作的對(duì)象o還可以是任意多向量。圖3中給出了一個(gè)平面量A關(guān)于反射軸n的反射示例。
進(jìn)一步推廣,對(duì)象o不僅可以關(guān)于反射軸(向量)作反射操作,還可以關(guān)于反射面(二向量)甚至任意多向量作反射操作。圖4給出了一向量a在平面量N上的反射示例。
2.2 旋轉(zhuǎn)
幾何對(duì)象o的旋轉(zhuǎn)可借助以下運(yùn)算實(shí)現(xiàn):
這里R=e-/2L稱為轉(zhuǎn)子(轉(zhuǎn)動(dòng)算子)。其中:L表示轉(zhuǎn)軸,由一個(gè)規(guī)格化的二向量表示(轉(zhuǎn)軸是二向量所在平面的法線);是旋轉(zhuǎn)角。
類似于復(fù)數(shù)的歐拉公式,R也能被記做R=cos(/2)-L sin(/2)。
與反射操作類似,一個(gè)轉(zhuǎn)子不僅可以轉(zhuǎn)動(dòng)向量,還可以轉(zhuǎn)動(dòng)任意多向量(二、三向量等)。圖5和6給出了同一轉(zhuǎn)子R轉(zhuǎn)動(dòng)向量v和球S(三向量)的示例。其中旋轉(zhuǎn)角取60°,所以連續(xù)六次旋轉(zhuǎn),向量和球均回到原始位置。
23 平移
在共形幾何代數(shù)中,平移可以借助平移算子T用下式運(yùn)算實(shí)現(xiàn)otranslated=ToT。
一個(gè)向量,表示平移的方向和長(zhǎng)度,稱之為平移向量。
T也可以記做T=1-1/2te∞
因?yàn)橛商├占?jí)數(shù)有T=e-1/2te∞=1+(-1/2te∞)/1!+(-1/2te∞)2/2!+(-1/2te
又(e∞)2=0,所以T=1-1/2te∞。
圖7是球S的平移示意圖。
24 剛體運(yùn)動(dòng)
三維空間中的運(yùn)動(dòng)既包括旋轉(zhuǎn)也包括平移。在共形幾何代數(shù)中,剛體運(yùn)動(dòng)由運(yùn)動(dòng)算子M實(shí)現(xiàn):M=RT。其中:R是轉(zhuǎn)動(dòng)算子,T是平移算子。
對(duì)象o的剛體運(yùn)動(dòng)被描述為origid_body_motion=MoM。
圖8演示了球S的剛體運(yùn)動(dòng)。其中:t是平移向量;當(dāng)然平移算子T=1-1/2te∞;R是轉(zhuǎn)子。可見(jiàn),剛體運(yùn)動(dòng)可被分解為兩步進(jìn)行,球S先在平移算子T作用下平移,得到被平移的球TranslatedS,然后球TranslatedS再在轉(zhuǎn)子R作用下旋轉(zhuǎn),到達(dá)最終想要的剛體運(yùn)動(dòng)位置——球RotTranS所在位置。
一般來(lái)說(shuō),先平移后旋轉(zhuǎn)M=RT即先旋轉(zhuǎn)后平移M=TR的剛體運(yùn)動(dòng)效果不同。圖9是對(duì)比圖示例。其中RotTranS是球S先平移(到TranslatedS),再繞綠色轉(zhuǎn)軸旋轉(zhuǎn)60°所得到的球;而TranRotS是球S先繞綠色轉(zhuǎn)軸旋轉(zhuǎn)60°(到RotatedS),再在平移向量t作用下平移所得到的球。很明顯,這是兩個(gè)不同的運(yùn)動(dòng)。
剛體運(yùn)動(dòng)中還有一類比較特殊的運(yùn)動(dòng),它的平移是沿著旋轉(zhuǎn)軸方向進(jìn)行的,這類剛體運(yùn)動(dòng)被稱為螺旋運(yùn)動(dòng)。
圖10給出了螺旋運(yùn)動(dòng)的示例。
由圖可見(jiàn),螺旋運(yùn)動(dòng)先平移后旋轉(zhuǎn)和先旋轉(zhuǎn)后平移效果相同。螺旋運(yùn)動(dòng)非常適合運(yùn)動(dòng)插值。
3 結(jié)束語(yǔ)
上述描述圖形變換和運(yùn)動(dòng)的方法——共形幾何代數(shù)方法,在應(yīng)用中體現(xiàn)出通用、靈活、簡(jiǎn)捷等特點(diǎn),功能強(qiáng)大,應(yīng)能在計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)視覺(jué)和機(jī)器人學(xué)等方面發(fā)揮很大作用。共形幾何代數(shù)這種新的幾何表示和計(jì)算工具,實(shí)現(xiàn)了幾何語(yǔ)言直接進(jìn)行幾何計(jì)算(脫離坐標(biāo)),對(duì)幾何對(duì)象的算法穩(wěn)定、簡(jiǎn)潔、快速、高效,為某些高新技術(shù)幾何問(wèn)題的解決提供了新的數(shù)學(xué)工具。
參考文獻(xiàn):
[1]陳國(guó)華. 三維連續(xù)圖形變換的一類算法與實(shí)現(xiàn)[J]. 中國(guó)圖象圖形學(xué)報(bào), 2001,6(12):12401243.
[2]劉俊峰. 三維轉(zhuǎn)動(dòng)的四元數(shù)表述[J]. 大學(xué)物理, 2004,23(4):3943.
[3]李洪波. 共形幾何代數(shù)——幾何代數(shù)的新理論和計(jì)算框架[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2005,17(11):23832393.
[4]李洪波. 共形幾何代數(shù)與幾何不變量的代數(shù)運(yùn)算[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2006,18(7):902911.
[5]HILDENBRAND D, FONTIJNE D, PERWASS C,et al.Geometric algebra and its applicatin to computer graphics[C]//Proc of Eurographics Conference.Grenoble:[s.n.],2004.
[6]DORAN C, LASENBY A. Geometric algebra for physicists[M]. Cambridge:Cambridge University Press, 2003.