四元數做旋轉過程的具體證明
文章目錄
背景
一般情況下我們都會使用矩陣做旋轉變換,繞某個軸或者繞任意向量,這都有在 做過介紹,雖然直接用矩陣旋轉這種方法很直觀,但是使用矩陣會遇到兩個問題:
- 永珍節鎖
- 矩陣旋轉過程的差值不平滑
永珍節鎖
旋轉過程中,會有一個自由度消失
現有旋轉矩陣 E(h,p,r)=⎣⎡e00e10e20e01e11e21e02e12e22⎦⎤=Rz(r)Rx(p)Ry(h) 先繞z軸旋轉角度r,再繞x軸旋轉角度p,再繞y軸旋轉角度h。 E=⎣⎡cosrcosh−sinrsinpsinhsinrcosh+cosrsinpsinh−cospsinh−sinrcospcosrcospsinpcosrsinh+sinrsinpcoshsinrsinh−cosrsinpcoshcospcosh⎦⎤ 此時,我們家是 cosp=0,i.e.,p=±π/2+2πk,其中 k 是一個整數。這個時候我們就失去了一個自由度,現在矩陣只依賴於一個角,r+h 或者 r−h(不會同時是兩個)。 此時旋轉矩陣變為 E=⎣⎡cos(r+h)sin(r+h)0001sin(r+h)−cos(r+h)0⎦⎤ 所以在這種情況下,對 r 和 h 無論怎麼旋轉,得到的效果都是一樣的。
數學基礎
- Definition. q^=(qv,qw)=iqx+jqy+kqz+qw=qv+qw,qv=iqx+jqy+kqz=(qx,qy,qz),i2=j2=k2=−1,jk=−kj=i,ki=−ik=j,ij=−ji=k. 其中 qw 被稱為四元數的實部。
- Multiplication:
- Addition: q^+r^=(qv,qw)+(rv,rw)=(qv+rv,qw+rw)
- Conjugate: q^∗=(qv,qw)∗=(−qv,qw)
- Norm: n(q)=q^∗q^=qv⋅qv+qw2=qx2+qy2+qz2+qw2
- Identity: i^=(0,1) 其中要有 q^−1q^=q^q^−1
相關推薦
四元數做旋轉過程的具體證明
文章目錄背景永珍節鎖數學基礎證明過程組合旋轉矩陣表示參考文件 背景 一般情況下我們都會使用矩陣做旋轉變換,繞某個軸或者繞任意向量,這都有在 做過介紹,雖然直接用矩陣旋轉這種方法很直觀,但是使用矩陣會
unity--------------------四元數的旋轉與原理
變換 平移 旋轉角度 eve 歐拉角 repl 學習筆記 detail 關卡 【Unity技巧】四元數(Quaternion)和旋轉 原文:http://blog.csdn.net/candycat1992/article/details/41254799
三維空間旋轉(歐拉角、四元數、旋轉矩陣)
轉換 當我 隨著 www href bsp out 組合 相同 姿態角(歐拉角) 姿態角即RPY(roll, pitch,yaw)又叫歐拉角,是由三個角組成的。 俯仰角(pitch) 翻滾角(roll) 偏航角(yaw) 其中最
四元數與旋轉矩陣——SLAM
1. 用四元數表示旋轉時,都是單位四元數。 2. 用四元數表示旋轉時,三維空間的點p(x,y,z)需要表示成虛四元數,即。 3. 四元數導數與角速度之間的關係 :表示local座標系到global座標系的旋轉; &n
Eigen實現尤拉角、四元數和旋轉矩陣之間的變換
include相應的標頭檔案 #include <Eigen/Geometry> 旋轉矩陣和旋轉向量的表示和宣告及旋轉 // 3D 旋轉矩陣直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eige
座標系轉換之三:尤拉角、四元數、旋轉矩陣、方向餘弦矩陣、旋轉向量、軸角表示
座標轉換有很多種方法,不同的領域有不同的使用習慣。 上兩篇文章我們講了旋轉矩陣和尤拉角,可知尤拉角是可以由旋轉矩陣轉化而來。 那麼怎麼從尤拉角轉化為旋轉矩陣呢? 尤拉角(Euler angles)與旋轉矩陣(Rotation Matrix) 假設座標
尤拉角、四元數、旋轉矩陣
尤拉角 -> 四元數: Eigen::AngleAxisd rollAngle(roll, Eigen::Vector3d::UnitX()); Eigen::AngleAxisd pitchAngle(pitch, Eigen::Vector3d::UnitY())
旋轉矩陣 軸角 尤拉角 四元數
引言 我們日常生活的空間是三維的,因此我們生來就習慣於空間的運動。三維空間由三個軸組成,所以一個空間點的位置可以由3個座標指定。不過,我們現在要考慮剛體,它不光有位置,還有自身的姿態。以下,就是對剛體姿態的相關學習的筆記。 旋轉矩陣 表示座標系`O-x'y'z'`中
四元數表示向量V1到V2的旋轉的兩種演算法
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 博主:shenshikexmu 聯絡方式:[email protected] 本文的演算法來源於stackoverflow 的回答finding quaternion representing the rotatio
旋轉矩陣 尤拉角 四元數比較
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
物體旋轉:Quaternion/eulerAngles四元數與尤拉角 u3d學習總結筆記本
目錄 1.獲取兩個物體的向量/角度 2.指定旋轉到角度 3.指向某個位置 4.自軸旋轉 5.繞軸旋轉 6.無旋轉 (這個物體完全對齊於世界或父軸) //========================================= 1.獲
第3講 旋轉向量、尤拉角、四元數
旋轉向量 從上一篇中已經知道,旋轉可以用旋轉矩陣來表示,變換可以用變換矩陣來表示,那麼為什麼還需要旋轉向量呢? 仔細想一下,矩陣表示方式至少有以下幾個缺點: 的旋轉矩陣有9個量,但是一次旋轉只有3個自由度,因此這種表達方式是冗餘的。同理,變換矩陣用16個量來表示6自由度
Eigen庫使用教程之旋轉矩陣,旋轉向量和四元數的初始化和相互轉換的實現
本系列文章為原創,轉載請註明出處。 作者:Dongdong Bai 郵箱: [email protected] 若您覺得本博文對您有幫助,請您為我點贊並關注我,以鼓勵我寫出更優秀的博文。謝謝! Eigen: C++開源矩陣計算工具——Eige
Unity學習筆記10——旋轉(四元數和尤拉角)
在Unity中,所有物體即使是空物體,也至少繫結Transform這個元件,這個元件有三個屬性:position、rotation、scale,它們分別用於控制物體的平移、旋轉和縮放三
四元數 旋轉 旋轉矩陣 尤拉角互相轉換
四元數的作用 表達旋轉。 旋轉的表達方式有很多種,有尤拉角,旋轉矩陣,軸角,四元數(unit quaternion),unit quaternion是一種表達旋轉的方式。 不同的旋轉表達方式概覽 (1)尤拉角: 尤拉角使用最簡單的x,y,z值來分別表示在x,y,z軸上的旋
四元數旋轉
using UnityEngine; using System.Collections; public class SetFromToDirection_ts : MonoBehaviour { public Transform A, B; float angle; Ve
旋轉矩陣與四元數的理解
旋轉矩陣: 1.旋轉矩陣是正交矩陣,矩陣的每一行每一列的模,都為1;並且任意兩個列向量或者任意兩個行向量都是正交的。 2. 矩陣的行列式為1。矩陣的逆和轉置是相等的。 什麼是旋轉矩陣?如圖1所示,我們假設最開始空間的座標系
【Unity技巧】四元數(Quaternion)和旋轉
四元數介紹旋轉,應該是三種座標變換——縮放、旋轉和平移,中最複雜的一種了。大家應該都聽過,有一種旋轉的表示方法叫四元數。按照我們的習慣,我們更加熟悉的是另外兩種旋轉的表示方法——矩陣旋轉和尤拉旋轉。矩陣
對比三維空間旋轉的幾種方法——尤拉角、繞軸的旋轉、矩陣、四元數、雙四元數
三維空間的旋轉可以用尤拉角,旋轉矩陣,軸-角,四元數,雙四元數來表示,本文主要總結這些表示方法的優缺點。像矩陣、四元數等的實現的下載地址,可以參考這裡,也可以參考Ogre渲染引擎的核心,都有很高效的實現方法。 一. 尤拉角(Euler-Angles) 1.1 介紹 尤拉角包括3個旋轉,根據這
Unity邏輯程式碼開發介紹_攝像機平滑旋轉並限定角度四元數方式
開發FPS的遊戲時,涉及的相機的平滑旋轉,下面是我採用四元數的方式,並且限定旋轉上下限: public float XSensitivity = 2f; public int MinimumX = -30; public int MaximumX = 30;