[VR]歐拉角

定義

用來確定定點轉動剛體位置的3個一組獨立角參量。也就是一個三維向量R(ψ,θ,φ)。除了上述靜態的定義,還可以類比歐式空間的坐標P(x,y,z)進行動態的理解。坐標P(x,y,z)可以理解成從原點向X軸走x遠,再向Y軸走y遠,最后向Z軸走z遠的位置。歐拉角也可以表示成相繼的三個旋轉過程的合成,分別是繞X軸旋轉,繞Y軸旋轉,繞Z軸旋轉之后的位置。

目的

對于一個點,我們用位置來描述就夠了,只需要三個自由度,也就可以用通俗的三維坐標來表示。然而對一個剛體,三個自由度是不夠的,因為有了體積的存在,還需要有三個角參量來描述姿態,一共是6個自由度,這時候坐標已經不能夠滿足了,所以歐拉角就是為了描述這件事情產生的。

理解

相比于坐標,歐拉角相對難理解一點。因為對于一個歐拉角R(ψ,θ,φ),如果沒有定義旋轉順序的話是有歧義的。而在定義了旋轉順序下,還要注意對角度對參考系的理解。

  • 旋轉順序
    我們先回顧坐標,對于一個點(x,y,z),我們是無所謂順序的,從原點無論先按照哪個方向走x,y,z最后都會到達相同的地方。而旋轉不是,“先對X軸旋轉90度再對Y軸旋轉45度”和“先對Y軸旋轉45度再對X軸旋轉90度”是會有不同的結果。怎么理解這種不同呢?如果把這些變化對應成矩陣,位置的變化是對坐標進行加法運算,而旋轉的變化是對坐標進行矩陣的乘法運算。矩陣加法滿足交換律,而矩陣乘法是不滿足交換律的。

  • 參考坐標系
    在剛才提到的旋轉復合的過程中,參考系非常重要。通常來說參考系可以分為兩種,一種是全局參考系E,可以視為靜止的。另外一種是局部參考系E’,是固定在剛體上的一個參考系,會隨著剛體的運動相應地參考系會進行變化。那么我們在實際運用中的時候角度是相對哪一個參考系來進行定義的顯得尤為重要。

那么說了這兩件事情后,一個歐拉角到底是怎么描述的呢?
首先,對于旋轉順序其實是并沒有約定俗成的規矩的。我們以X->Y->Z的順序為例。在這個順序下,歐拉角R(a,b,c)在全局與局部坐標系下有這么兩種描述:

  • R(a,b,c)在全局坐標系下描述,這里三個過程中的E都是相同的
    在E下繞坐標軸Z旋轉c,在E下繞坐標軸Y旋轉b,在E下繞坐標軸旋轉a。R(a,b,c)就是上述三個過程的合成
  • R(a,b,c)在局部坐標系下的描述,這里三個過程中的E都是不同的,因為旋轉后剛體自身的坐標系發生了變化
    在初始的E’下繞坐標軸X旋轉a,在前一個過程中得到的新坐標系E''中繞Y軸旋轉b,在前一個過程中得到的新坐標系E'''中繞Z軸旋轉c。R(a,b,c)就是上述三個過程的合成。

這兩種過程其實是等價的,現在我們來證明一下,不妨設初始的時候兩個坐標系E’和E重合。

  • 前提
    全局坐標系下的三個過程代表的矩陣按順序設為Rz, Ry, Rx。那么R(a,b,c)代表的過程=RzRyRx。
    局部坐標系下的三個過程代表的矩陣按順序設為Qx, Qy, Qz。那么R(a,b,c)代表的過程=QxQyQz。
    如果我們需要證明兩種描述等價,我們只要證明RzRyRx=QxQyQz。
  • 過程
    • step1 可知Qx=Rx,因為局部描述的第一步中E'和E是一樣的,“在E’下繞坐標軸X旋轉a”也就是“在E下繞坐標軸X旋轉a”
    • step2 可知Qy=Qx-1RyQx,“在坐標系E''中繞Y軸旋轉b”相當于這么幾個過程的疊加“把坐標系E''的描述變成坐標系E'(也就是E)的描述->在E下繞Y軸旋轉b->把坐標系E變成坐標系E''”,對應的就是Qx-1RyQx-1,這樣子轉化的目的是為了得到Qy與Ry的關系。
  • step3 同理可知Qz = (QxQy)-1Rz(QxQy)
  • step4 就有了QxQyQz=RxQx-1RyQx(QxQy)-1Rz(QxQy)
    利用Rx=Qx,Ry=QxQyQx-1,Rz=(QxQy)Qz(QxQy)-1反復替換帶進去,消掉以后就變成了QxQyQz=RzRyRx證明完畢

所以,說到這里,歐拉角的描述應該是清晰了:歐拉角應該定義旋轉順序,有全局/局部兩種描述方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1 前言 OpenGL渲染3D模型離不開空間幾何的數學理論知識,而本篇文章的目的就是對空間幾何進行簡單的介紹,并對...
    RichardJieChen閱讀 7,182評論 1 11
  • 歐拉角的定義 在寫這篇博客之前,我搜索了網上很多關于歐拉角的定義,發現大部分引用自維基百科的定義,我這里也引述一下...
    AndrewFan閱讀 2,911評論 3 12
  • 概述 又研究了將近兩個星期的3D圖形到了我最想研究的地方了,因為歐拉角與四元數的原因導致OpenGL ES的研究進...
    神經騷棟閱讀 7,797評論 12 40
  • 線程基礎 我是一個線程,作者叫老劉,前 IBM 架構師,這篇文章像小說一樣生動得介紹了線程的工作原理。 andro...
    張知卓見閱讀 198評論 0 2
  • 今天學了幾個成語故事,分別是九牛一毛、影影綽綽、孺子可教。這三個成語,都挺有意思的,九牛一毛是形容東西很多,這只占...
    盛聿洺閱讀 339評論 0 1