【转】二维图形的几何变换
OpenGL和OpenInventor中坐標(biāo)變換是一個(gè)基本概念,不搞清楚這些概念,變換矩陣會(huì)一塌糊涂,從下面網(wǎng)站搜到一些基礎(chǔ)知識(shí),補(bǔ)一補(bǔ)。
http://202.118.167.67/eol/data/res/jsjtxx/Chapter6/CG_Txt_6_011.htm
?
正如我們?cè)诟戒浿刑岬降哪菢?#xff0c;用齊次坐標(biāo)表示點(diǎn)的變換將非常方便,因此在本節(jié)中所有的幾何變換都將采用齊次坐標(biāo)進(jìn)行運(yùn)算。二維齊次坐標(biāo)變換的矩陣的形式是:
這個(gè)矩陣每一個(gè)元素都是有特殊含義的。
形進(jìn)行平移變換;[g h]是對(duì)圖形作投影變換;[i]則是對(duì)圖形整體進(jìn)行縮放變換。
1)平移變換
?
2)縮放變換
?
3)旋轉(zhuǎn)變換
4)對(duì)稱變換
?
對(duì)稱變換其實(shí)只是a、b、d、e取0、1等特殊值產(chǎn)生的一些特殊效果。例如:
當(dāng)b=d=0,a=-1,e=1時(shí)有x′=-x,y′=y,產(chǎn)生與y軸對(duì)稱的圖形。
當(dāng)b=d=0,a=-1,e=-1時(shí)有x′=x,y′=-y,產(chǎn)生與x軸對(duì)稱的圖形。
當(dāng)b=d=0,a=e=-1時(shí)有x′=-x,y′=-y,產(chǎn)生與原點(diǎn)對(duì)稱的圖形。
當(dāng)b=d=1,a=e=0時(shí)有x′=y,y′=x,產(chǎn)生與直線y=x對(duì)稱的圖形。
當(dāng)b=d=-1,a=e=0時(shí)有x′=-y,y′=-x,產(chǎn)生與直線y=-x對(duì)稱的圖形。
5)錯(cuò)切變換
?
當(dāng)d=0時(shí),x′=x+by,y′=y,此時(shí),圖形的y坐標(biāo)不變,x坐標(biāo)隨初值? (x,y)及變換系數(shù)b作線性變化。
當(dāng)b=0時(shí),x′=x,y′=dx+y,此時(shí),圖形的x坐標(biāo)不變,y坐標(biāo)隨初值? (x,y)及變換系數(shù)d作線性變化。
6)復(fù)合變換
如果圖形要做一次以上的幾何變換,那么可以將各個(gè)變換矩陣綜合起來(lái)進(jìn)行一步到位的變換。復(fù)合變換有如下的性質(zhì):
對(duì)同一圖形做兩次平移相當(dāng)于將兩次的平移兩加起來(lái):
兩次連續(xù)的縮放相當(dāng)于將縮放操作相乘:
兩次連續(xù)的旋轉(zhuǎn)相當(dāng)于將兩次的旋轉(zhuǎn)角度相加: 縮放、旋轉(zhuǎn)變換都與參考點(diǎn)有關(guān),上面進(jìn)行的各種變換都是以原點(diǎn)為參考點(diǎn)的。如果相對(duì)某個(gè)一般的參考點(diǎn)(xf,yf)作縮放、旋轉(zhuǎn)變換,相當(dāng)于將該點(diǎn)移到坐標(biāo)原點(diǎn)處,然后進(jìn)行縮放、旋轉(zhuǎn)變換,最后將(xf,yf)點(diǎn)移回原來(lái)的位置。切記復(fù)合變換時(shí),先作用的變換矩陣在右端,后作用的變換矩陣在左端。
總結(jié)
以上是生活随笔為你收集整理的【转】二维图形的几何变换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ArcEngine编辑功能的实现(二)
- 下一篇: 我用的archlinux+slim+op