日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异

發(fā)布時(shí)間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

? ? ? ?在3D圖形學(xué)中,幾何變換大致分為三種:平移變換(Translation)、縮放變換(Scaling)、旋轉(zhuǎn)變換(Rotation),而其中又以旋轉(zhuǎn)變換(Rotation)最為復(fù)雜,通常旋轉(zhuǎn)變換(Rotation)是有三種常用方式:矩陣旋轉(zhuǎn)(Rotate Matrix)、歐拉角(Euler Angles)、四元數(shù)(Quaternion),下面我們會(huì)對(duì)三種旋轉(zhuǎn)方法及其特點(diǎn)優(yōu)缺點(diǎn)進(jìn)行介紹。

矩陣旋轉(zhuǎn)

? ? ? ?矩陣是3D圖形學(xué)中的重點(diǎn),通常的數(shù)學(xué)表達(dá)方式如下圖所示:

?

? ? ? ?按上圖所示,矩陣可以看作是向量的數(shù)組,而向量又是標(biāo)量的數(shù)組,簡單來說矩陣就是對(duì)向量進(jìn)行坐標(biāo)變換。

? ? ? 矩陣可以有任意多行、任意多列,一行的矩陣即行向量,一列的矩陣即列向量,一個(gè)列數(shù)和行數(shù)相等的矩陣我們稱之為方陣,3D數(shù)學(xué)中矩陣幾乎以方陣形式出現(xiàn)。

歐拉角

? ? ? 什么是歐拉角,作為三維空間中的旋轉(zhuǎn)描述方式的一種,歐拉角采用旋轉(zhuǎn)坐標(biāo)系的方法讓物體的旋轉(zhuǎn)可以始終按照自身當(dāng)前的坐標(biāo)系來作為基準(zhǔn)將連貫的旋轉(zhuǎn)運(yùn)動(dòng)有序的分割開來,使其更加有助于人們更直觀的理解。

? ? ? 在維基百科中對(duì)歐拉角的解釋中有個(gè)動(dòng)圖非常清晰的展示了歐拉角完成旋轉(zhuǎn)過程:

? ? ? 具體來說可理解為下圖所示:

? ? ? ?在圖片上可以看到分別有兩組坐標(biāo):xyz代表的全局坐標(biāo),XYZ代表的局部坐標(biāo),當(dāng)物體運(yùn)動(dòng)時(shí),全局坐標(biāo)始終保持不變,而局部坐標(biāo)隨著物體一起運(yùn)動(dòng)。

? ? ? ?我們把旋轉(zhuǎn)分解一下就會(huì)得到以下步驟:

    • 物體繞全局的z軸旋轉(zhuǎn)α角

    • 繞局部X軸(圖中的N軸)旋轉(zhuǎn)β角

    • 最后繞自己的Z軸旋轉(zhuǎn)γ角

歐拉角可分為兩種情況:

  • 靜態(tài):即繞世界坐標(biāo)系三個(gè)軸的旋轉(zhuǎn),由于物體旋轉(zhuǎn)過程中坐標(biāo)軸保持靜止,所以稱為靜態(tài)。

  • 動(dòng)態(tài):即繞物體坐標(biāo)系三個(gè)軸的旋轉(zhuǎn),由于物體旋轉(zhuǎn)過程中坐標(biāo)軸隨著物體做相同的轉(zhuǎn)動(dòng),所以稱為動(dòng)態(tài)。

四元數(shù)

????? ?四元數(shù)作為圖形學(xué)來解決旋轉(zhuǎn)問題其實(shí)是不如歐拉角表示方式來的直接,歐拉角只用3個(gè)數(shù)字(偏航/yaw,俯仰/pitch,橫滾/roll)即可表達(dá),而四元數(shù)是需要四個(gè)數(shù)的,但是用歐拉角來處理旋轉(zhuǎn)是有致命或不可回避的問題:萬向鎖。于是我們就可以通過將歐拉角轉(zhuǎn)換成四元數(shù)來解決規(guī)避這個(gè)問題。

? ? ? 通俗的說,一個(gè)四元數(shù)(Quaternion)描述了一個(gè)喜歡轉(zhuǎn)軸和一個(gè)旋轉(zhuǎn)角度,當(dāng)用一個(gè)四元數(shù)乘以一個(gè)向量時(shí),實(shí)際上就是讓該向量圍繞著這個(gè)四元數(shù)所描述的旋轉(zhuǎn)軸,轉(zhuǎn)動(dòng)這個(gè)四元數(shù)所描述的角度而得到的向量,如圖:

? ? ? ?四元數(shù)只需要一個(gè)規(guī)格化的4維向量表示,所以其在插值計(jì)算尤其是線性插值算法中處理平滑插值時(shí)非常簡單易處理的,下圖展示了簡單的Bezier曲線例子:? ??

差異

? ? ? ?三種方法都有自己的優(yōu)缺點(diǎn),下面我們舉個(gè)例子來說明一下,當(dāng)前做相同繞Y軸做角度30度的旋轉(zhuǎn)時(shí),三種表示方式如下:

? ? ? ? 矩陣:

? ? ? ? 歐拉角:

? ? ? ? ? ? ? ?Heading?= 30

? ? ? ? ? ? ? ?Pitch = 0

? ? ? ? ? ? ? ?Bank?=?0

? ? ? ? ?四元數(shù):

? ? ? ? ? ? ? [0.9659?(0, 0.2588?0)]

? ? ? 可以看出如果使用矩陣來表達(dá)就需要9個(gè)數(shù)做存儲(chǔ),而且對(duì)應(yīng)的計(jì)算相對(duì)復(fù)雜。歐拉角中heading代表Y軸旋轉(zhuǎn)30度,Pitch、Bank不旋轉(zhuǎn)為0,這種表示方式最簡單直接,容易理解,只用3個(gè)數(shù)就能表達(dá)出來。而四元數(shù),使用了4個(gè)數(shù)來表達(dá),比矩陣簡單,相對(duì)歐拉角只是復(fù)雜了一些。

? ? ? ?三種方法各有各的優(yōu)缺點(diǎn),下面的表格為我們展示了各自的問題

功能/性質(zhì)

矩陣

歐拉角

四元數(shù)

在坐標(biāo)系間轉(zhuǎn)換

不能

不能

連續(xù)或增量旋轉(zhuǎn)

能,但是轉(zhuǎn)換速度慢

不能

能,轉(zhuǎn)換速度快

插值

基本不能

能,但可能遇到萬向鎖問題

能,且能平滑插值

易用程度

存儲(chǔ)

9個(gè)數(shù)

3個(gè)數(shù)

4個(gè)數(shù)

對(duì)給定方位表達(dá)方式是否唯一

不是,對(duì)同一方位有無數(shù)種表達(dá)

不是,對(duì)同一方位有兩種表達(dá)

可能導(dǎo)致非法

矩陣蠕變

任意三個(gè)數(shù)都能構(gòu)成合法的歐拉角

可能會(huì)出現(xiàn)誤差積累,從而產(chǎn)生非法的四元數(shù)

? ? ? ?基于以上的介紹我們可以看出,3D圖形學(xué)中的旋轉(zhuǎn)是一個(gè)最復(fù)雜的難題,每個(gè)方法都有自己的優(yōu)點(diǎn)和缺點(diǎn),沒有一種方法是可以保證處理所有問題的,要根據(jù)實(shí)際情況來選擇不同的旋轉(zhuǎn)方法,同時(shí)又要根據(jù)不同的情況在三種轉(zhuǎn)換方法間做換算,不能只單一使用一種旋轉(zhuǎn)方式來處理。

總結(jié)

以上是生活随笔為你收集整理的三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。