左右手坐標(biāo)系下三維位姿(旋轉(zhuǎn)、平移)的轉(zhuǎn)換

太長(zhǎng)不看

假設(shè)右(或左)手坐標(biāo)系下的旋轉(zhuǎn)矩陣和平移向量分別為RT,左(或右)手坐標(biāo)系下分別為R^{’}T^{’},假設(shè)S = \begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix},則有
R = S \cdot R^{’} \cdot S \\ T = S \cdot T^{’}

推導(dǎo)

右手食指為Y軸正方向,中指為Z軸正方向,大拇指為X軸正方向,這樣的坐標(biāo)系為右手坐標(biāo)系。右手換成左手則為左手坐標(biāo)系。將一個(gè)坐標(biāo)系的一個(gè)軸取反向,則改變了手性;兩個(gè)軸取反向,則等價(jià)于繞第三軸旋轉(zhuǎn)180度;將三個(gè)軸都取反向,則是前面兩者的疊加,改變手性+旋轉(zhuǎn)。

左右手坐標(biāo)系的轉(zhuǎn)換在圖形學(xué)開(kāi)發(fā)中經(jīng)常出現(xiàn),例如OpenGL使用右手坐標(biāo)系,Unity使用左手坐標(biāo)系。下文所述右手坐標(biāo)系即是OpenGL坐標(biāo)系,左手坐標(biāo)系即是Unity坐標(biāo)系。

左右手坐標(biāo)系示意圖

左手坐標(biāo)系下有一個(gè)點(diǎn)P_l=(x,y,z)^T,則在右手坐標(biāo)系下,該點(diǎn)應(yīng)該表示為P_r=(-x,y,z)^T。

假設(shè)空間中有變換矩陣
S=\begin{bmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}=S^{-1}

則左右手坐標(biāo)系下點(diǎn)的變換即可用S來(lái)表示,即
P_l = S \cdot P_r \\\\ P_r = S \cdot P_l

假設(shè)空間中有旋轉(zhuǎn)矩陣R和平移向量T,世界坐標(biāo)系下有點(diǎn)P_w,對(duì)應(yīng)相機(jī)坐標(biāo)系下有點(diǎn)P_c,則有
P_c = R \cdot P_w + T

假設(shè)P_c、P_wR、T均定義在右手坐標(biāo)系下,{P_c}^{’}、{P_w}^{’}{R}^{’}、{T}^{’}分別為上述變量在左手坐標(biāo)系下的定義,即
P_c = R \cdot P_w + T \\\\ {P_c}^{’} = {R}^{’} \cdot {P_w}^{’} + {T}^{’}

左右手坐標(biāo)系下位置的變換我們已經(jīng)知道,即{P}^{’}=S \cdot P,則有
{P_c}^{’} = {R}^{’} \cdot {P_w}^{’} + {T}^{’} \rightarrow \\\\ S \cdot {P_c} = {R}^{’} \cdot S \cdot {P_w} + {T}^{’} \rightarrow \\\\ {P_c} = {S}^{-1} \cdot {R}^{’} \cdot S \cdot {P_w} + {S}^{-1} \cdot {T}^{’}

已知右手坐標(biāo)系下P_c = R \cdot P_w + T,故有左右手坐標(biāo)系下旋轉(zhuǎn)矩陣和平移向量的的轉(zhuǎn)換
R = S^{-1} \cdot R^{’} \cdot S = S \cdot R^{’} \cdot S \\\\ T = S^{-1} \cdot {T}^{’} = S \cdot {T}^{’}

以上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容