前言:非常感謝http://m.blog.csdn.net/blog/qiuqchen/21980731的總結和分享 ,讓我再一次詳細的學習了三維座標中的選擇矩陣推導過程。
爲了方便自己記憶,記錄一下三維座標旋轉矩陣的推導過程。
座標的旋轉變換在很多地方都會用到,比如機器視覺中的攝像機標定、圖像處理中的圖像旋轉、遊戲編程等。
在進行圖像程序開發的過程中,免不了要對圖像做各種變換處理。有的時候變換可能比較複雜,比如平移之後又旋轉,旋轉之後又平移,又縮放。
直接用公式計算,不但複雜,而且效率低下。這時可以藉助變換矩陣和矩陣乘法,將多個變換合成一個。 最後只要用一個矩陣對每個點做一次處理就可以得到想要的結果。
另外,矩陣乘法一般有硬件支持,比如3D 圖形加速卡,處理3D變換中的大量矩陣運算,比普通CPU 要快上1000倍。
下面是3類基本的3D圖形變換: (2D圖形的變換相當於在3D的變換上減少一個維度即可)
一、平移:
設某點向x方向移動 dx, y方向移動 dy ,z方向移動dz, [x,y,z]爲變換前座標, [X,Y,Z]爲變換後坐標。
則 X = x+dx; Y = y+dy; Z =z+dz
以矩陣表示:
其中即爲平移矩陣。
二、旋轉:
設某點與原點連線和X軸夾角爲度,以原點爲圓心,繞z軸逆時針旋轉度 , 原點與該點連線長度爲R, [x,y,z]爲變換前座標, [X,Y,Z]爲變換後坐標。
設某點座標,在x軸方向擴大 sx倍,y軸方向擴大 sy倍,z軸方向擴大sz倍,[x,y,z]爲變換前座標, [X,Y,Z]爲變換後坐標。
X = sx*x; Y = sy*y; Z=sz*z
其中j即爲旋轉矩陣。