左手坐標系 vs 右手坐標系

2d 坐標系一般來說大家都有默認: x軸朝右,y軸朝向。

左手坐標系

而對於三維坐標系,一般有兩種習俗,左手坐標系和右手坐標系,它們的重點不是在於 z 軸標註的是哪根,而是三個方向的組合,比如之前的[從零開始計算機圖形學]系列一直用左手坐標系,為了作圖方便,我把 z 軸指向屏幕裏。

對應關係:

  • right - x指向
  • up - y指向
  • front - z指向

但是如果我們把手轉90°。這依舊是一個左手坐標系。

右手坐標系

右手坐標系是這樣:

如果我們為了作圖方便將 x軸 放到右邊, y軸 放到上邊,那麼 z軸的朝向:

跟左手坐標系中 z軸朝向剛好相反。

叉乘

兩個三維中的向量叉乘有:

A 	imes B =  egin{bmatrix} a_x \ a_y \ a_z end{bmatrix} 	imes egin{bmatrix} b_x \ b_y \ b_z end{bmatrix} =  egin{bmatrix} a_yb_z - a_zb_y \ a_zb_x - a_xb_z \ a_xb_y - a_yb_x end{bmatrix}

A 	imes B = C 這個值跟在哪個坐標系是無關的。

但是我們來想最簡單的 hat{x} 	imes hat{y} = hat{z} ,所以我們可以知道這個朝向在不同的坐標系中是不同的,而朝向不同是因為我們兩個坐標系中 z軸 方向的不同,這個時候好像之前學的左手定則和右手定則都可以使用起來。從 A 轉到 B, 大拇指指向 C 的朝向,在右手坐標系中用右手,左手坐標系中使用左手。

Maya 和 OPenGL 使用右手坐標系, DirectX, pbrt, PRMan 使用左手坐標系。


推薦閱讀:
相關文章