• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Unity3D中的最短旋轉(zhuǎn)研究

      2019-12-25 01:14:48李俊龍郭仁春姜檬王志淳
      無線互聯(lián)科技 2019年20期
      關(guān)鍵詞:軸角歐拉角剛體

      李俊龍 郭仁春 姜檬 王志淳

      摘? ?要:首先,文章介紹了剛體最短旋轉(zhuǎn)的概念,剛體從一個(gè)方位旋轉(zhuǎn)到另一個(gè)方位的過程中,可以有無限種方式,在這些方式中存在一種方式,繞某一軸旋轉(zhuǎn)一次就能到達(dá)指定方位,并且該角在﹣180°~180°之間,稱這樣的旋轉(zhuǎn)方式為最短旋轉(zhuǎn)。其次,給出最短旋轉(zhuǎn)的數(shù)學(xué)表達(dá)式,即兩個(gè)方位角的四元數(shù)之比。在Unity 3D中,表示剛體方位的參數(shù)分別是歐拉角和四元數(shù)。文章采用具體實(shí)例驗(yàn)證最短旋轉(zhuǎn)與四元數(shù)的關(guān)系,給出了尋找最短旋轉(zhuǎn)的解決方案。

      關(guān)鍵詞:Unity 3D;最短旋轉(zhuǎn);四元數(shù)

      在Unity 3D中,實(shí)現(xiàn)物體旋轉(zhuǎn)有多種方式,如旋轉(zhuǎn)矩陣、歐拉角和四元數(shù)等[1]。旋轉(zhuǎn)需要兩個(gè)基本參量軸和角,物體從一個(gè)方位旋轉(zhuǎn)到另一個(gè)方位可以采用多次改變軸和角的方式,依次旋轉(zhuǎn)。其中,有一種旋轉(zhuǎn)方式是只繞一個(gè)軸旋轉(zhuǎn)一次就能達(dá)到指定方位,且旋轉(zhuǎn)角度在﹣180°~180°之間,稱這樣的旋轉(zhuǎn)方式為最短旋轉(zhuǎn)。這個(gè)定義由于沒有其他文獻(xiàn)支持,因此本文為便于理解,采用最短旋轉(zhuǎn)的說法。

      任意指定兩個(gè)方位,要找出其中的最短旋轉(zhuǎn)并不是一件容易的事。本文將給出最短旋轉(zhuǎn)的數(shù)學(xué)描述以及在Unity 3D中實(shí)現(xiàn)最短旋轉(zhuǎn)的方法。

      1? ? 最短旋轉(zhuǎn)的數(shù)學(xué)描述

      剛體的運(yùn)動包括平動和轉(zhuǎn)動。描述剛體的空間位置,用三維空間坐標(biāo)點(diǎn)(x,y,z)表示,在Unity 3D中有3個(gè)基本坐標(biāo)系,分別是世界坐標(biāo)系、慣性坐標(biāo)系與本地坐標(biāo)系。相應(yīng)的,描述剛體的旋轉(zhuǎn)狀態(tài),即方位,是本地坐標(biāo)系與慣性坐標(biāo)系所形成的角度變化,采用歐拉角(α,β,γ)來描述。由于本文不涉及平移,因此為方便討論,將慣性坐標(biāo)系和世界坐標(biāo)系重合。

      眾所周知,“兩點(diǎn)之間線段最短”,同樣兩個(gè)方位之間也存在類似的關(guān)系,即最短旋轉(zhuǎn),兩點(diǎn)之間的距離用兩點(diǎn)位置之差來描述。相應(yīng)的,兩個(gè)方位之間的最短旋轉(zhuǎn)用兩個(gè)方位的四元數(shù)之比來描述。

      如果方位a的四元數(shù)為q1,方位b的四元數(shù)為q2,剛體從方位a旋轉(zhuǎn)到方位b的最短旋轉(zhuǎn)的四元數(shù)為q,則q=q2÷q1,一般寫成q= q2×q1-1

      設(shè)四元數(shù)q的4個(gè)分量分別是(x,y,z,w),該四元數(shù)隱含了旋轉(zhuǎn)軸向量n和旋轉(zhuǎn)角θ,設(shè)軸向量n的3個(gè)分量為(nx,ny,nz)。一般將軸n和角θ寫成“軸角對”的形式,即(n, θ)=( nx, ny, nz, θ)。四元數(shù)q=(x, y, z, w) 與軸角對(n, θ)=( nx, ny, nz, θ)之間的關(guān)系為:

      在Unity 3D中,改變歐拉角和改變四元數(shù)是兩種基本的旋轉(zhuǎn)方式,Unity 3D提供了Lerp和Slerp兩種插值函數(shù),在兩個(gè)方位之間進(jìn)行采樣插值。對歐拉角的Lerp插值,很難實(shí)現(xiàn)最短旋轉(zhuǎn),而四元數(shù)Slerp函數(shù)插值則非常容易實(shí)現(xiàn)最短旋轉(zhuǎn),下面通過例子來進(jìn)行驗(yàn)證。

      2? ? 在Unity3D中改變歐拉角實(shí)現(xiàn)旋轉(zhuǎn)

      在Unity 3D中,制作一個(gè)空物體,命名為a,該物體位于世界坐標(biāo)系的原點(diǎn)位置,在其下面放置一個(gè)立方體Cube和一個(gè)小球Sphere,調(diào)整立方體和小球的大小和位置,如圖1所示,讓小球位于立方體的一個(gè)角點(diǎn)。

      將該段代碼拖拽到物體x上,將場景中的物體a和b拖放到代碼的公共變量卡槽a和b上,代碼中的Vector3.Lerp是系統(tǒng)提供的插值函數(shù),包括3個(gè)參數(shù):起始向量a的歐拉角、結(jié)束向量b的歐拉角、插值t在0~1的取值,運(yùn)行結(jié)果如圖4所示。

      從圖4可以看到,物體x上的小球畫出了一條奇怪的軌跡,說明用歐拉角插值不能實(shí)現(xiàn)最短旋轉(zhuǎn)。

      3? ? 在Unity3D中改變四元數(shù)實(shí)現(xiàn)最短旋轉(zhuǎn)

      代碼中q1和q2分別是a, b的四元數(shù),Slerp是在兩個(gè)四元數(shù)之間進(jìn)行插值,再次運(yùn)行,結(jié)果如圖5所示。通過觀察可以看出,物體x繞某一固定軸一次旋轉(zhuǎn)到了指定位置,實(shí)現(xiàn)了最短旋轉(zhuǎn)。

      在圖5中可以清楚地看出剛體繞軸n旋轉(zhuǎn)了θ角。這個(gè)旋轉(zhuǎn)過程用語言可以描述為:一個(gè)剛體從初始方位為a,其歐拉角為(-20,-30,9),旋轉(zhuǎn)到末方位b,歐拉角為(15,80,60),找到軸角對(n, θ)實(shí)現(xiàn)最短旋轉(zhuǎn)。方位a和b的四元數(shù)q1,q2可以通過各自的歐拉角求出,計(jì)算公式可參考蘇超凡等[2]的研究,手工計(jì)算結(jié)果如下:

      4? ? 結(jié)語

      仿照最短距離,本文給出了最短旋轉(zhuǎn)的概念并給出了最短旋轉(zhuǎn)的數(shù)學(xué)描述,即兩個(gè)方位的四元數(shù)的比值。在Unity 3D中,通過修改四元數(shù)很容易實(shí)現(xiàn)最短旋轉(zhuǎn),并能夠直觀地給出旋轉(zhuǎn)軸和角,對理解四元數(shù)在Unity 3D中的應(yīng)用具有重要作用。

      [參考文獻(xiàn)]

      [1]戈洪瑤,郭仁春.基于Unity 3D的歐拉角實(shí)現(xiàn)對物體旋轉(zhuǎn)的應(yīng)用[J].湖北農(nóng)機(jī)化,2019(13):119-121.

      [2]蘇超凡,郭仁春.Unity 3D中歐拉角與四元數(shù)關(guān)系的研究[J].計(jì)算機(jī)科學(xué)與應(yīng)用,2019(5):890-895.

      猜你喜歡
      軸角歐拉角剛體
      差值法巧求剛體轉(zhuǎn)動慣量
      基于FPGA的同步機(jī)軸角編碼器
      車載冷發(fā)射系統(tǒng)多剛體動力學(xué)快速仿真研究
      從CATIA位置矩陣求解歐拉角的計(jì)算方法分析
      科技視界(2017年6期)2017-07-01 08:33:34
      一種基于EGI和標(biāo)準(zhǔn)人臉模板的三維人臉點(diǎn)云拼合算法
      非直視紫外光非共面通信系統(tǒng)性能分析
      剛體定點(diǎn)轉(zhuǎn)動的瞬軸、極面動態(tài)演示教具
      電磁耦合式位移傳感器的直接數(shù)字解調(diào)電路設(shè)計(jì)
      大姿態(tài)角入水時(shí)的魚雷半實(shí)物仿真方法研究
      閉環(huán)軸角解算誤差分析及精度補(bǔ)償方法
      雷山县| 嫩江县| 河源市| 南开区| 农安县| 肥城市| 汾西县| 尤溪县| 浦县| 长阳| 新丰县| 大厂| 轮台县| 乐亭县| 涿州市| 卓资县| 哈尔滨市| 德化县| 米脂县| 册亨县| 来凤县| 织金县| 勐海县| 江陵县| 灵石县| 吉木萨尔县| 视频| 广河县| 泰宁县| 百色市| 宜兰市| 筠连县| 铜山县| 达尔| 翁源县| 合作市| 晋中市| 长丰县| 庄浪县| 星子县| 建水县|