HALCON高級篇:3D轉換之旋轉

旋轉

點的旋轉

在圖1(a)中,點P1沿著相機座標系統的z軸被旋轉-90度。

HALCON高級篇:3D轉換之旋轉


圖1:旋轉一個點:(a)首先沿著軸;(b)然後沿著軸。

旋轉一個點通過其座標向量左乘一個3x3旋轉矩陣R。

旋轉鏈

在圖1(b)中,旋轉點可以進一步沿著y軸旋轉,這樣的旋轉鏈可以用一個旋轉矩陣鏈非常簡潔的表述出來。

HALCON高級篇:3D轉換之旋轉

要注意的是,與標量的多乘相比,矩陣的多乘是不可交換交換的,例如,如果你改變旋轉矩陣的序列,你將得到不同的結果。

座標系統的旋轉

相比於點,座標系統相對於其他的座標系統有一個方向,這個方向當座標被旋轉的時候而改變。例如,座標系統c3是由座標系統c1沿著y軸旋轉得到的,這樣就導致了相機的不同方向。注意的是,為了在你的腦海中旋轉一個座標系統,它可能幫助去想想座標向量點被旋轉。

僅僅像一個座標系統的位置可以通過平移向量來直接表述,方向也包含在旋轉矩陣中:旋轉矩陣的列是對應於旋轉座標系統的軸向量在原始座標系統的座標:

HALCON高級篇:3D轉換之旋轉

例如,在圖2(a)中,座標系統c3的軸向量可以由對應的旋轉矩陣

HALCON高級篇:3D轉換之旋轉

來決定,如下面的方程所顯示的那樣,你可以在圖中看到結果:

HALCON高級篇:3D轉換之旋轉

HALCON高級篇:3D轉換之旋轉

圖2: 旋轉座標系統:(a)首先沿著軸進行旋轉;(b)然後沿著軸進行旋轉

座標轉換

就像平移一樣,從一個旋轉座標系統c3到原始座標系統c1去轉換點座標,你可以應用同坐標系統c3一樣的轉換,例如,你將點座標與旋轉系統c1到c3的旋轉矩陣相乘:

HALCON高級篇:3D轉換之旋轉

圖2也描述了這樣的一個旋轉鏈,其對應於下面的方程:

HALCON高級篇:3D轉換之旋轉


旋轉在那個隊列和繞著那個軸來執行?

如果你比較 了圖1和圖2的兩個旋轉鏈,你將注意到,兩個不同的旋轉序列被用同一個旋轉矩陣鏈來描述:圖1中,點首先沿著z軸旋轉,然後沿著y軸旋轉;然而在圖2中,座標系統首先沿著y軸旋轉,然後沿著z軸旋轉,但是,兩者都是用

HALCON高級篇:3D轉換之旋轉

鏈來描述。

對於這個看起來有悖論在的情景的解釋是,在兩個例子中,旋轉矩陣可以從兩個不同的方向來“讀”:在圖1中,其讀的方向是從右向左,在圖2中是從左向右。

但是,這一定在兩個序列之間有不同之處,因為,就像我們已近提及的,旋轉矩陣的相乘是不可交替的。這個不同就反映在標題中第二個問題了,旋轉是沿著那個軸被執行的。

讓我們重新在圖2中開始座標系統的第二次旋轉。這裡,有兩個可能繞著旋轉的座標軸集:老座標系統c1的座標軸,和已近被旋轉新的座標系統c3。在例子中,第二個旋轉是沿著“新”的z軸被執行的。

可以對比的是,在圖1中旋轉點的時候,這僅有一組座標軸可以被沿著旋轉:“老”座標系統的座標軸。

基於此,我們得出瞭如下的規則:

  • 當從左向右讀一個鏈的時候,旋轉是沿著“新”軸來執行的
  • 當從右向左讀一個鏈的時候,旋轉是沿著“舊”軸來執行的

已經知道了,點旋轉鏈總是從右向左讀。對於座標系統的情況,你有選擇去怎麼讀旋轉鏈。在大多數的情況下,更本能的去從左到右的讀。

圖3展示了從兩個不同方向讀取而得到相同的結果。

HALCON高級篇:3D轉換之旋轉

圖3 執行一個旋轉鏈(a)從左向右,或者(b)從右向左

總結

  • 通過將它們的點向量與旋轉矩陣相乘,而旋轉點
  • 如果你選擇座標系統,旋轉矩陣描述了其結果方向: 矩陣的列向量對應旋轉座標系統軸向量在原始座標系統的座標
  • 從旋轉座標系統c3到原始座標系統c1,去轉換點座標,你可以應用同坐標系統相同的轉換,例如你將它們的座標同被用於旋轉座標系統c1到c3的旋轉矩陣相乘。
  • 多旋轉可以用一個旋轉矩陣來描述,其可以從兩個方向來讀取。當從左向右讀時,旋轉繞著”新”軸來執行;當從右向左讀取,旋轉繞著“舊”軸來執行。


分享到:


相關文章: