基礎知識點 Eigen幾何模組 旋轉變換

2021-10-03 21:54:07 字數 1967 閱讀 3316

剛體運動中的旋轉通常可以由旋轉矩陣,旋轉向量和四元數等多種方式表示,在eigen庫中也有其對應的實現。本文主要介紹剛體運動時旋轉矩陣,旋轉向量和四元數的初始化以及相互轉換在eigen中的實現方式。

1. eigen庫中各種形式的表示

旋轉矩陣(3x3):eigen::matrix3d

旋轉向量(3x1)

:eigen::angleaxisd

四元數(4x1):eigen::quaterniond

平移向量(3x1):eigen::vector3d

變換矩陣(4x4):eigen::isometry3d

四元數筆記參考

eigen官網-四元數部分

補充學習資料

注意:?程式**與數學表示有細微差別,例如通過運算子過載,四元數和三維向量可以直接計算乘法。

?只有單位四元數才表示旋轉矩陣,所以要先對四元數做單位化

q.

normalized()

;//important

matrix3d r=q.

torotationmatrix()

;

#include

#include

using

namespace std;

#include

#include

using

namespace eigen;

// 本程式演示了eigen幾何模組的使用方法

intmain

(int argc,

char

**ar**)

cout <<

"(1,0,0) after rotation = "

<< v_rotated.

transpose()

<< endl;

// 用常規向量乘法表示,則計算如下

cout <<

"should be equal to "

<<

(q *

quaterniond(0

,1,0

,0)* q.

inverse()

).coeffs()

.transpose()

<< endl;

return0;

}

輸出結果:

rotation matrix =

0.707

-0.707

00.707

0.70700

01(1

,0,0

) after rotation (by angle axis)

=0.707

0.7070(

1,0,

0) after rotation (by matrix)

=0.707

0.707

0 yaw pitch roll =

0.785-0

0transform matrix =

0.707

-0.70701

0.707

0.70703

0014

0001

v transformed =

1.71

3.71

4 quaternion from rotation vector =00

0.383

0.924

quaternion from rotation matrix =00

0.383

0.924

0.707

-0.707

00.707

0.70700

01(1,0,0

) after rotation =

0.707

0.707

0should be equal to 0.707

0.707

00

基礎知識點

1 inline block布局 2 table布局 3 justify的末行不對齊 4 兩個圖示之間有空格 換行 5 背景中的的 路徑的 全部斜槓都為 不是 命令列下的這種 doctype html html head meta charset utf 8 title xx title head ...

erlang基礎知識點

1 變數是不可改變的,必須以首字母大寫開頭 2 字串就是小寫字母,或者單引號引起來的字串 3 賦值可以使用匹配模式 4 資料結構有元組,取值用匹配模式來取值 就能取到x,b的值 5 資料結列表 ss,aa,取值是用 head foot 的形式取值 頭和尾的形式匹配 6 字串只能用雙引號表示 7 函式...

ios基礎知識點

1.記憶體管理 用記憶體引用計數來進行管理 alloc,retain,copy會使記憶體引用計數立即 1 當物件使用結束後要對它進行釋放 release 立即 1 autorelease 未來 1 autorelease的物件會把這個物件放置到離它最近的自動釋放池裡,自動釋放池釋放的時候才會把自動釋...