座標變換 旋轉矩陣

2021-08-28 02:09:51 字數 1341 閱讀 8153

關於最常見的繞座標軸旋轉,可以看看前一篇-幾何變換詳解。

繞任意軸旋轉的情況比較複雜,主要分為兩種情況,一種是平行於座標軸的,一種是不平行於座標軸的,對於平行於座標軸的,我們首先將旋轉軸平移至與座標軸重合,然後進行旋轉,最後再平移回去。

整個過程就是

對於不平行於座標軸的,可按如下方法處理。(該方法實際上涵蓋了上面的情況)

將旋轉軸平移至原點

將旋轉軸旋轉至yoz平面

將旋轉軸旋轉至於z軸重合

繞z軸旋轉θ度

執行步驟3的逆過程

執行步驟2的逆過程

執行步驟1的逆過程

假設用v1(a1, b2, c2)和v2(a2, b2, c2)來表示旋轉軸,θ表示旋轉角度。為了方便推導,暫時使用右手系並使用列向量,待得出矩陣後轉置一下即可,上面步驟對應的流程圖如下。

步驟1是乙個平移操作,將v1v2平移至原點,對應的矩陣為

步驟2是乙個旋轉操作,將p(p = v2 -v1)旋轉至xoz平面,步驟3也是乙個旋轉操作,將p旋轉至與z軸重合,這兩個操作對應的圖如下。

做點p在平面yoz上的投影點q。再過q做z軸垂線,則r是p繞x軸旋轉所得,且旋轉角度為α,且

於是旋轉矩陣為

現在將r繞y軸旋轉至與z軸重合,旋轉的角度為-beta(方向為順時針),且

於是得到旋轉矩陣為

最後是繞z軸旋轉,對應的矩陣如下

如果旋轉軸是過原點的,那麼第一步和最後一步的平移操作可以省略,也就是把中間五個矩陣連乘起來,再轉置一下,得到下面的繞任意軸旋轉的矩陣

對應的函式**如下。

void rotatearbitraryaxis(d3dxmatrix* pout, d3dxvector3* axis, float theta)

01 旋轉矩陣與變換矩陣

旋轉矩陣描述了兩個座標系 slam中兩個時刻機械人的姿態 之間的相互關係,是slam中描述姿態變換的數學工具。為了更深入地理解旋轉矩陣及座標變化,我們簡單地以兩個原點重合的座標系來闡釋旋轉矩陣的含義及其性質。有兩個座標系 b a 其中 b 為剛體座標系 兩座標係原點重合,點 p 是剛體上的一點 座標...

旋轉矩陣怎麼推導 矩陣旋轉變換推導

矩陣旋轉變換,就是說給定乙個角度和點,我們將點繞著乙個座標軸旋轉。在旋轉過程中發生變化的總是 三個座標裡面的其中兩個,而不讓第三個座標值變化。這意味著,旋轉路徑總在三個座標軸平面中的乙個之中 繞 z 軸的是 xy 面 繞 x 軸的是 yz 面 繞 y 軸的是 xz 面。還有許多複雜的旋轉變換可以讓你...

旋轉矩陣求旋轉角度 矩陣旋轉變換推導

矩陣旋轉變換,就是說給定乙個角度和點,我們將點繞著乙個座標軸旋轉。在旋轉過程中發生變化的總是 三個座標裡面的其中兩個,而不讓第三個座標值變化。這意味著,旋轉路徑總在三個座標軸平面中的乙個之中 繞 z 軸的是 xy 面 繞 x 軸的是 yz 面 繞 y 軸的是 xz 面。還有許多複雜的旋轉變換可以讓你...