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

如圖所示,有兩個坐標系A、B和一個向量p。假設我們已經知道了p在坐標系A下的坐標為pA = (x,y);現在我們要求p在坐標系B下的坐標,pB = (x',y') 。也就是說,給定一個坐標系下的向量p,如何計算p在另一個坐標系下的坐標呢?
顯然,在坐標系A下,p = x*u + y*v;其中u、v為坐標系A下沿着x軸和y軸的單位向量;而在坐標系B下,p = x*uB + y*vB ,其中uB和vB為A坐標系下的x軸和y軸在B坐標系下的向量表示。因此,如果求出uB = (ux,uy),vB = (vx,vy),則可以求出pB = (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*uB + y*vB + QB ,其中uB和vB為A坐標系下的x軸和y軸在B坐標系下的向量表示,QB為A坐標系下的原點在B坐標系下的坐標表示。因此,我們只要求出uB = (ux,uy),vB = (vx,vy),QB = (Qx,Qy),則可求出點p在B坐標下的坐標表示。
同理,將上述變換推廣到三維可得:
如果點pA = (x , y , z),則點pB = x*uB + y*vB + z*wB +QB ;其中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到坐標系的變換矩陣為

