資源描述:
《3.2 仿射變換.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、3.2仿射變換3.2.1齊次坐標(biāo)下一節(jié)我們就會(huì)知道仿射變換是一個(gè)組合了平移的線性變換。但是,因?yàn)橄蛄恐槐硎痉较蚝烷L(zhǎng)度,與位置無(wú)關(guān),所以平移一個(gè)向量是無(wú)意義的,換句話說(shuō),平移后的向量是不變的。平移只能作用在點(diǎn)上(即,位置向量)。齊次坐標(biāo)提供了一個(gè)便捷的表示方法用來(lái)統(tǒng)一處理點(diǎn)和向量。在齊次坐標(biāo)中,我們使用4個(gè)元素,我們通過(guò)它的第4個(gè)坐標(biāo)分量w來(lái)決定所描述的是一個(gè)點(diǎn)還是一個(gè)向量。確切地說(shuō),我們寫為:1.(x,y,z,0)用于向量2.(x,y,z,1)用于點(diǎn)我們將會(huì)看到,把w設(shè)為1是為了讓點(diǎn)的平移操作得到正確執(zhí)行,把w設(shè)
2、為0是為了防止向量在變換過(guò)程中發(fā)生平移。(我們不希望平移向量的坐標(biāo),因?yàn)橄蛄靠梢愿淖兊闹挥蟹较蚝痛笮 揭茖?duì)向量來(lái)說(shuō)沒(méi)有意義。)注意:齊次坐標(biāo)的記法與圖1.17所示的概念一致。也就是,兩點(diǎn)相減q?p=(qx,qy,qz,1)?(px,py,pz,1)=(qx–px,qy–py,qz–pz,0)的結(jié)果是一個(gè)向量,而一個(gè)點(diǎn)與一個(gè)向量相加p+v=(px,py,pz,1)+(vx,vy,vz,0)=(px+vx,py+vy,pz+vz,1)的結(jié)果是個(gè)點(diǎn)。3.2.2定義和矩陣表示一個(gè)線性變換無(wú)法表示所有我們需要的變換;所
3、以,我們需要添加一組叫做仿射變換的函數(shù)。仿射變換是一個(gè)線性變換加上一個(gè)平移向量b;也就是:或者用矩陣表示為:式中的A是線性變換的矩陣表示。如果使用w=1的齊次坐標(biāo),則可表示為:(公式3.6)公式3.6中的4×4矩陣稱為仿射矩陣的矩陣表示。額外添加的b就是指平移(即,位置的改變)。因?yàn)橄蛄繘](méi)有位置的概念,所以我們并不想將b作用在向量上。但是,我們還是想將仿射矩陣的線性變換部分作用在向量上。如果我們把向量的第四個(gè)分量w設(shè)置為0,那么b對(duì)應(yīng)的平移部分就不會(huì)作用到向量上。5/5注意:因?yàn)樾邢蛄颗c4×4仿射矩陣第4列的點(diǎn)乘
4、是[x,y,z,w]·[0,0,0,1]=w,所以這個(gè)矩陣不會(huì)改變輸入向量的w坐標(biāo)。3.2.3平移單位變換(identitytransformation)是一個(gè)線性變換,返回值就是輸入的向量;即,I(u)=u。這說(shuō)明線性變換的矩陣表示就是一個(gè)單位矩陣?,F(xiàn)在,我們將一個(gè)平移變換定義為一個(gè)仿射變換,這個(gè)仿射變換的線性變換部分是一個(gè)單位變換;即:如你所見,這可以簡(jiǎn)化將點(diǎn)u移動(dòng)b的操作。圖3.5說(shuō)明了如何平移物體——要對(duì)點(diǎn)u進(jìn)行平移,只需要將一個(gè)移位向量b和該點(diǎn)相加,即可得到新的點(diǎn)u+b。注意,要平移一個(gè)完整的物體,我們
5、就要通過(guò)相同的向量b來(lái)平移物體上的每個(gè)點(diǎn)。圖3.5通過(guò)位移向量b對(duì)螞蟻的位置進(jìn)行平移。根據(jù)公式3.6,τ的矩陣表示如下:這個(gè)矩陣稱之為平移矩陣。平移矩陣的逆矩陣如下:例3.4假設(shè)我們通過(guò)一個(gè)最小點(diǎn)(?8,2,0)和一個(gè)最大點(diǎn)(?2,8,0)來(lái)定義一個(gè)正方形。讓正方形沿x軸平移12,沿y軸平移-10,z軸保持不變。則對(duì)應(yīng)的平移矩陣如下:5/5現(xiàn)在,對(duì)正方形進(jìn)行平移(變換),將正方形的兩個(gè)點(diǎn)與該矩陣相乘:結(jié)果如圖3.6所示。圖3.6沿x軸平移12,沿y軸平移?10。注意,當(dāng)沿z軸負(fù)方向俯視時(shí),由于z值為0,幾何體看上
6、去是一個(gè)2D平面圖形。注意:令T為一個(gè)變換矩陣,通過(guò)計(jì)算vT=v′就可以對(duì)點(diǎn)/向量進(jìn)行變換。如果先使用T對(duì)點(diǎn)/向量進(jìn)行變換,然后再使用逆矩陣T-1進(jìn)行變換,我們就會(huì)得到初始的向量:vTT-1=vI=v。換句話說(shuō),逆變換可以撤銷變換。例如,如果我們將一個(gè)點(diǎn)沿x軸移動(dòng)5,然后沿x軸移動(dòng)-5,會(huì)又回到出發(fā)點(diǎn)。類似地有,將一個(gè)點(diǎn)沿y軸旋轉(zhuǎn)30°,然后反向旋轉(zhuǎn)30°,該點(diǎn)又回到了原來(lái)的位置??偠灾?,逆變換矩陣的變換效果與變換相反,兩者的組合會(huì)導(dǎo)致不產(chǎn)生變換效果。3.2.4縮放和旋轉(zhuǎn)的仿射矩陣若b=0,仿射變換就退化為一個(gè)
7、線性變換。我們可以將任何一個(gè)線性變換表示成b=0的仿射變換。換句話說(shuō),我們可以用一個(gè)4×4仿射矩陣表示任意一個(gè)線性變換。例如,縮放和旋轉(zhuǎn)矩陣可以用4×4矩陣寫成如下形式:5/5通過(guò)這種方式,我們使用4×4矩陣表示所有變換,使用1×4齊次行向量矩陣表示點(diǎn)和向量,形式得到了統(tǒng)一。3.2.5仿射變換矩陣的幾何解釋在本節(jié)中,我們會(huì)對(duì)一個(gè)仿射變換矩陣中的數(shù)字表示的幾何意義有個(gè)直觀的認(rèn)識(shí)。首先,考慮一個(gè)剛體變換,它是一個(gè)形狀保持不變的變換?,F(xiàn)實(shí)世界中的例子是將一本書從桌上拿起放到書架上,在這個(gè)過(guò)程中,你將書從書桌平移到了書架
8、,還改變了書的朝向(旋轉(zhuǎn))。令τ為旋轉(zhuǎn)變換,b為位移矢量,則這個(gè)剛體變換可以用以下仿射變換表示:在矩陣表示中,使用其次坐標(biāo)(w=1表示位置,w=0表示向量,這樣平移就不會(huì)作用在向量上),上式可以寫成:(公式3.7)現(xiàn)在看一下公式3.7的幾何意義,我們只需畫出矩陣中的行向量(參見圖3.7)。因?yàn)棣邮且粋€(gè)旋轉(zhuǎn)變換,所以它保存了長(zhǎng)度和角度信息;而且τ只是將標(biāo)準(zhǔn)基向量i,j和k旋