1. 程式人生 > >座標系轉換之三:尤拉角、四元數、旋轉矩陣、方向餘弦矩陣、旋轉向量、軸角表示

座標系轉換之三:尤拉角、四元數、旋轉矩陣、方向餘弦矩陣、旋轉向量、軸角表示

座標轉換有很多種方法,不同的領域有不同的使用習慣。
上兩篇文章我們講了旋轉矩陣和尤拉角,可知尤拉角是可以由旋轉矩陣轉化而來。
那麼怎麼從尤拉角轉化為旋轉矩陣呢?

尤拉角(Euler angles)與旋轉矩陣(Rotation Matrix)

假設座標系1的尤拉角yaw(Azimuth)、pitch、roll的角度為α,β,γ,可以由公式:

R(α,β,γ)=Rz(α)Ry(β)Rx(γ)=cosαcosβsinαcosβsinβcosαsinβsinγsinαcosγsinαsinβsinγ+cosαcosγcosβsinγcosαsinβcosγ+sinαsinγ
sinαsinβcosγcosαsinγcosβcosγ

旋轉矩陣是一個正交矩陣,其中,

Rz(α)=cosαsinα0sinαcosα0001

Ry(β)=cosβ0sinβ010sinβ0cosβ

Rx(γ)=1000cosγsinγ0sinγcosγ

那麼假設有座標系1中的點座標為 P1 ,經過尤拉角的旋轉變換變成了座標系2的座標 P2,那麼有


P1=RP2

注意相乘的順序,順序不同旋轉矩陣也不同

旋轉矩陣與方向餘弦矩陣(Direction Cosine Matrix)

方向餘弦就是各個座標軸之間的夾角的餘弦。上面提到的尤拉角就是按照某座標軸順序依次進行旋轉,每相乘一次即乘以一個矩陣,而這個矩陣其實就是方向餘弦矩陣。
比如尤拉角yaw(Azimuth),是圍繞z軸旋轉,那麼就是乘以R

z(α)。這裡的Rz(α)就是一個方向餘弦矩陣。
其實可以看出,旋轉矩陣就是三個方向餘弦矩陣的相乘,本質上都是一樣的。所以在下面的討論中不再做區分,統稱旋轉矩陣。

在matlab中,可以用函式angle2dcm和dcm2angle來完成旋轉矩陣與尤拉角之間的相互轉換。

軸角表示(Axis-Angle)

旋轉的軸角表示用兩個值引數化了旋轉: 一個直線(軸),和描述繞這個軸旋轉的一個角。也叫做旋轉的指數座標。

比如我們可以使用<Axis,Angle>=<(x,y,z),θ>=(x,y,z,θ)來表示座標的旋轉。其中Axis可以是任意一條直線,大小也不一。

旋轉向量(Rotation vector)

軸角表示很直觀得說明了座標系的旋轉情況,但還是不夠簡潔。旋轉向量本質上還是軸角表示,但是隻是用了一個向量來代替。
還以上一個例子展開說明,若一個旋轉情況的軸角表示為(x,y,z,θ),那麼其旋轉向量為

(θx,θy,θz)

其中,(x,y,z)

相關推薦

座標系轉換旋轉矩陣方向餘弦矩陣旋轉向量表示

座標轉換有很多種方法,不同的領域有不同的使用習慣。 上兩篇文章我們講了旋轉矩陣和尤拉角,可知尤拉角是可以由旋轉矩陣轉化而來。 那麼怎麼從尤拉角轉化為旋轉矩陣呢? 尤拉角(Euler angles)與旋轉矩陣(Rotation Matrix) 假設座標

旋轉的數學表達矩陣

  本文釋出於遊戲程式設計師劉宇的個人部落格,長期更新,轉載請註明源地址https://www.cnblogs.com/xiaohutu/p/10979936.html   數學,是人類對客觀世界中數量關係和空間形式本質特徵進行研究的科學。對同樣的某一特徵或者關係,可以根據需求用不同的數學符號、定義和過程來

Halcon學習有關圖像通道的函

spa com detail too pan targe 個數 word pop 黑白攝像機會返回每個像素所對應的能量采用結果,這些結果組成了一幅單通道灰度值圖像,而對於RGB彩色攝像機,它將返回每個像素所對應的三個采樣結果,也就是一幅三通道圖像。下面這些是與圖像通道有關的

第3講 旋轉向量

旋轉向量 從上一篇中已經知道,旋轉可以用旋轉矩陣來表示,變換可以用變換矩陣來表示,那麼為什麼還需要旋轉向量呢? 仔細想一下,矩陣表示方式至少有以下幾個缺點: 的旋轉矩陣有9個量,但是一次旋轉只有3個自由度,因此這種表達方式是冗餘的。同理,變換矩陣用16個量來表示6自由度

Eigen實現旋轉矩陣之間的變換

include相應的標頭檔案 #include <Eigen/Geometry> 旋轉矩陣和旋轉向量的表示和宣告及旋轉 // 3D 旋轉矩陣直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eige

3D圖形:矩陣與方位的故事

概述 又研究了將近兩個星期的3D圖形到了我最想研究的地方了,因為尤拉角與四元數的原因導致OpenGL ES的研究進度變緩,研究完這一塊,我將教大家如何使用OpenGL ES做一個自轉加公轉的正立方體.效果如下. 方向、方位與角位移的區別 在說矩陣、尤拉角與四元數

OSG 導航(俯仰,偏航,橫滾)轉 互轉

osg:: Quat的心得:      先介紹四元數:Q = [w,(x,y,z)]被定義為一個四元數,w為一個實數,(x,y,z)是一個三維向量,四元數的基底為(1,i,j,k),則 Q = w + xi + yj + zk;四元數是複數在四維空間的推廣,於是可以認為i,j,k是四元數的虛單位。      

對比三維空間旋轉的幾種方法——旋轉矩陣

三維空間的旋轉可以用尤拉角,旋轉矩陣,軸-角,四元數,雙四元數來表示,本文主要總結這些表示方法的優缺點。像矩陣、四元數等的實現的下載地址,可以參考這裡,也可以參考Ogre渲染引擎的核心,都有很高效的實現方法。 一.  尤拉角(Euler-Angles) 1.1    介紹 尤拉角包括3個旋轉,根據這

旋轉矩陣

尤拉角 -> 四元數: Eigen::AngleAxisd rollAngle(roll, Eigen::Vector3d::UnitX()); Eigen::AngleAxisd pitchAngle(pitch, Eigen::Vector3d::UnitY())

three.js

這篇郭先生就來說說尤拉角和四元數,尤拉角和四元數的優缺點是老生常談的話題了,使用條件我就不多說了,我只說一下使用方法。 1. 尤拉角(Euler) 尤拉角描述一個旋轉變換,通過指定軸順序和其各個軸向上的指定旋轉角度來旋轉一個物體。下面我們開看看它的方法 1. set( x: number, y: number

【3D計算機圖形學】變換矩陣

遭遇 unit 額外 star 應該 detail 導致 print uic 【3D計算機圖形學】變換矩陣、歐拉角、四元數 旋轉矩陣、歐拉角、四元數主要用於:向量的旋轉、坐標系之間的轉換、角位移計算、方位的平滑插值計算。 一、變換矩陣: 首先要區分旋轉矩陣和變換矩陣:

矩陣-隨筆

圖片 sys 值範圍 最終 加法 http 一次 gpo 圖1 一、矩陣 在 3D 遊戲中,可以使用矩陣來表示一個物體的旋轉。 1) 優點: 個人認為,理解起來最為直觀。 像現成的DXSDK庫中也提供了十分完善的相關接口 一個矩陣即可表示多種變換的組合

三維空間旋轉(歐旋轉矩陣

轉換 當我 隨著 www href bsp out 組合 相同   姿態角(歐拉角)     姿態角即RPY(roll, pitch,yaw)又叫歐拉角,是由三個角組成的。   俯仰角(pitch)      翻滾角(roll)      偏航角(yaw)      其中最

相機座標系轉換

今天,專案中利用aruco來識別二維碼來確定相機姿態,我就詳細研究了一下相機座標系。 (一)相機座標系 (二)如何在ROS中進行四元數和尤拉角轉化 將geometry_msgs::Quaternion轉化為tf::Quaternion型別 tf

javacpp-FFmpeg系列2通用流解碼器,支持視頻流解碼並轉換為YUVBGR24或RGB24等圖像像素數據

tope sca 封裝 ams 定義 throw tco 如何使用 都是 javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:視頻拉流解碼成YUVJ420P,並保存為jpg圖片 javacpp-FFmpeg系列之2:通用拉流解碼器,支持視頻拉流解碼並

物體旋轉Quaternion/eulerAngles u3d學習總結筆記本

目錄 1.獲取兩個物體的向量/角度 2.指定旋轉到角度 3.指向某個位置 4.自軸旋轉 5.繞軸旋轉 6.無旋轉  (這個物體完全對齊於世界或父軸) //========================================= 1.獲

之間的轉換

今天準備學習和研究下unity3d的四元數 Quaternion 四元數在電腦圖形學中用於表示物體的旋轉,在unity中由x,y,z,w 表示四個值。 四元數是最簡單的超複數。 複數是由實數加上元素 i 組成,其中i^2 = -1 ,。 相似地,四元數都是由實數加上三個元素 i、j、

[SLAM](3-4)

結合 高翔老師的著作《視覺SLAM十四講:從理論到實踐》,加上小白的工程經驗共同完成。建議購買紙製書籍搭配使用。     1.尤拉角的定義        無論是旋轉向量還是旋轉矩陣,雖然它們能描述旋轉,但對我

(RPY)的相互轉換

RPY角與Z-Y-X尤拉角   描述座標系{B}相對於參考座標系{A}的姿態有兩種方式。第一種是繞固定(參考)座標軸旋轉:假設開始兩個座標系重合,先將{B}繞{A}的X軸旋轉γγ,然後繞{A}的Y軸旋轉ββ,最後繞{A}的Z軸旋轉αα,就能旋轉到當前姿態。可以稱其為X-Y-Z fixed angles或

轉換

將尤拉角轉換為四元數: public Quaternion EularToQuaternion(float xx,float yy,float zz) {         float X = xx / 180 * Math