三維坐標變換矩陣的推導過程


在3D計算機圖形學中,我們經常需要使用多個坐標系,因此我們需要知道如何從一個坐標系轉到另一個坐標系。在3D計算機圖形學中,點(Point)和向量(Vector)的變換是不同的,所以需要分別討論。

1、向量的變換

 

如圖所示,有兩個坐標系A、B和一個向量p。假設我們已經知道了p在坐標系A下的坐標為p= (x,y);現在我們要求p在坐標系B下的坐標,p= (x',y') 。也就是說,給定一個坐標系下的向量p,如何計算p在另一個坐標系下的坐標呢?

顯然,在坐標系A下,p = x*u + y*v;其中u、v為坐標系A下沿着x軸和y軸的單位向量;而在坐標系B下,p = x*u+ y*vB ,其中uB和vB為A坐標系下的x軸和y軸在B坐標系下的向量表示。因此,如果求出u= (ux,uy),vB = (vx,vy),則可以求出p= (x',y')的值。

相應地,將二維情況推廣到三維,即可得到:

如果向量pA = (x , y , z),則pB = x*uB + y*vB + z*wB;其中pA為p在A坐標系下的向量表示,pB為p在B坐標系下的向量表示,uB 、vB 、wB分別為A坐標系下的坐標軸x、y、z在B坐標系下的向量表示。

2、點的變換

 

點是需要包含位置信息的,因此,點的變換和向量的變換稍微有些不同。

如圖所示,在坐標系A下,點p可表示為:p = x*u + y*v + Q ,其中u、v為坐標系A的坐標軸,Q為坐標系A原點的坐標。而在B坐標系下,點p可表示為:p = x*u+ y*vB + Q,其中uB和vB為A坐標系下的x軸和y軸在B坐標系下的向量表示,QB為A坐標系下的原點在B坐標系下的坐標表示。因此,我們只要求出u= (ux,uy),vB = (vx,vy),QB = (Qx,Qy),則可求出點p在B坐標下的坐標表示。

同理,將上述變換推廣到三維可得:

如果點pA = (x , y , z),則點pB = x*uB + y*vB + z*wB +Q;其中pA為p在A坐標系下的坐標,pB為p在B坐標系下的坐標,uB 、vB 、wB分別為A坐標系下的坐標軸x、y、z在B坐標系下的向量表示,QB為A坐標系下的原點在B坐標系下的坐標表示。

 

3、點和向量的矩陣表示

結合1和2可得,

對於向量:

(x', y', z') = x*uB + y*vB + z*wB;

對於點:

(x', y', z') = x*uB + y*vB + z*wB + QB。

使用齊次坐標,我們將以上兩式統一表示為:

(x', y', z',w') = x*uB + y*vB + z*wB + w*QB。

 其中,w=0,為向量的坐標變換;w=1,為點的坐標變換。

令QB = (Qx ,Qy ,Qz ,1), uB = (ux , uy , uz ,0), vB = (vx ,vy ,vz ,0), wB = (wx , wy , wz ,0),則可得坐標系A到坐標系的變換矩陣為

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM