<td id="rfthz"><mark id="rfthz"></mark></td>
      <div id="rfthz"></div>
        1. <menu id="rfthz"></menu>

          <div id="rfthz"></div>

        2. 歡迎光臨ELBE網(wǎng)站!
          您的位置: ELBE > 行業(yè)資訊 > 三維旋轉與萬(wàn)向節死鎖
          網(wǎng)站頭像

          文章分類(lèi)

          Article classification
          聯(lián)系我們

          ELBE

          電話(huà):021-58780503 微信:18017854633 郵箱:sales_fullyear@126.com 地址:上海市浦東新區城南路168弄3號峰匯商務(wù)廣場(chǎng)B座911室
          三維旋轉與萬(wàn)向節死鎖
          時(shí)間:2022-12-15 查看:54 作者:小葉

          本文重點(diǎn)討論萬(wàn)向節死鎖是什么,為什么會(huì )產(chǎn)生,因此,將逐步從旋轉的定義出發(fā)。

          旋轉的定義

          在一個(gè)給定的三維坐標系中,圍繞一個(gè)不動(dòng)點(diǎn)的旋轉可以定義為任何點(diǎn)在旋轉前后,到不動(dòng)點(diǎn)的距離都是不變的。公式是:

          因為三點(diǎn)可以確定一個(gè)平面,所以x, f(x), p(即旋轉前的點(diǎn)、旋轉后的點(diǎn)、不動(dòng)點(diǎn))構成一個(gè)平面,稱(chēng)為旋轉平面。根據旋轉定義,我們可以知道,x, f(x)這兩點(diǎn)到不動(dòng)點(diǎn)的距離是相等的,所以x, f(x)事實(shí)上,以不動(dòng)點(diǎn)為中心的圓上有兩點(diǎn)。如下圖所示,旋轉程度的概念可以用圓中的角度來(lái)定義,稱(chēng)為旋轉角。

          從上面可以發(fā)現,三維旋轉可以用旋轉平面、不動(dòng)點(diǎn)、旋轉方向和旋轉角來(lái)定義。如果旋轉前的點(diǎn)是原始點(diǎn),旋轉可以定義為:在旋轉平面上,以不動(dòng)點(diǎn)為中心,以不動(dòng)點(diǎn)到原始點(diǎn)的距離為半徑做一個(gè)圓,以原始點(diǎn)為起點(diǎn)在圓上畫(huà)一個(gè)弧?;〉闹悬c(diǎn)為旋轉點(diǎn)。

          旋轉代數表示

          我們已經(jīng)知道,旋轉可以用旋轉平面、不動(dòng)點(diǎn)、旋轉方向和旋轉角來(lái)定義,但如果計算機想要表示旋轉,它需要更多的代數表示,最好是向量和矩陣的排列。讓我們一個(gè)接一個(gè)地看看:

          旋轉平面只是一個(gè)普通的平面,任何平面都可以用平面上的一點(diǎn)和垂直于平面的法向量來(lái)定義。我們知道原始點(diǎn)和不動(dòng)點(diǎn)必須在旋轉平面上,所以用一個(gè)向量來(lái)表示旋轉平面就足夠了。不動(dòng)點(diǎn)只是由相應的坐標值組成的向量。旋轉方向,我們可以定義旋轉方向平面的法向量,以滿(mǎn)足右手螺旋法則的方向。右手螺旋法則意味著(zhù)舉起右手,豎起拇指,讓拇指向法向量方向,最后把剩下的四個(gè)手指放進(jìn)手掌,然后四個(gè)手指的方向是旋轉的方向。旋轉角只是一個(gè)實(shí)數來(lái)表示大小。

          綜上所述,如果一個(gè)旋轉需要代數來(lái)表示,則需要四件事:一個(gè)表示旋轉平面法線(xiàn)方向的向量,一個(gè)表示不動(dòng)點(diǎn)的向量,一個(gè)表示旋轉角度的實(shí)數。

          如果我們規定不動(dòng)點(diǎn)是原點(diǎn),并使用右手螺旋法來(lái)尋求旋轉方向,并稱(chēng)旋轉平面法向量為旋轉軸,那么旋轉只有兩件事:旋轉軸、旋轉角-一個(gè)向量和一個(gè)實(shí)數。當我們說(shuō)旋轉時(shí),我們指的是這樣一個(gè)旋轉只由旋轉軸和旋轉角表示。

          旋轉的運算

          上面最后指出,旋轉只能通過(guò)旋轉軸和旋轉角來(lái)表示,因此它確實(shí)很容易被計算機存儲,但我們的最終目標是快速計算旋轉點(diǎn)的坐標。因此,我們不僅需要存儲,還需要一套方便的操作方法。

          注:一般來(lái)說(shuō),旋轉操作有兩種方法,矩陣操作和四元數操作。這里只提到矩陣操作的想法,因為四元數,必須解釋數學(xué),更麻煩,適當使用,四元數不會(huì )帶來(lái)通用鎖的問(wèn)題。

          通過(guò)疊加實(shí)現計算機中的計算旋轉。首先,很容易理解,如果你先做一個(gè)旋轉,然后做另一個(gè)旋轉,那么這兩個(gè)旋轉疊加的效果實(shí)際上相當于一個(gè)等效的旋轉,即兩個(gè)旋轉疊加或一個(gè)旋轉。這是因為根據旋轉的定義,兩點(diǎn)到不動(dòng)點(diǎn)的距離不會(huì )改變兩次旋轉。具體來(lái)說(shuō),如果原點(diǎn)是x,第一次旋轉變成了x一、二次旋轉后x2,那么x, x1, x2到不動(dòng)點(diǎn)的距離是相等的,所以我們可以把x到x整個(gè)過(guò)程被視為單獨旋轉。

          其次,我們應該能夠更容易地接受一個(gè)結論:任何旋轉軸的旋轉都可以由三個(gè)單獨繞組x,y,z軸的旋轉疊加。也就是說(shuō),如果C是任意旋轉,總會(huì )有繞x軸的旋轉X,繞y軸旋轉Y,旋轉z軸Z,使得C(p)=Z(Y(X(p)))。這里不展開(kāi)這個(gè)結論。通過(guò)應用這個(gè)結論,計算機可以用三個(gè)旋轉疊加來(lái)表示任意旋轉。而繞x, y, z軸旋轉后的點(diǎn)比較容易得到。

          以z軸為旋轉角θ例如,如果旋轉前點(diǎn)的坐標是

          ,旋轉后的坐標是

          ,則有

          ,如果以矩陣和向量的形式寫(xiě),那就是

          。關(guān)于x, y軸的旋轉也可以用矩陣操作來(lái)表示。

          矩陣之間可以通過(guò)乘法計算得到一個(gè)新的矩陣,所以如果繞組z,y,x軸的旋轉矩陣分別為Z,Y,X,所以它們的乘積ZYX也是旋轉矩陣。

          萬(wàn)向節死鎖

          從上面可以看出,我們總是可以用三個(gè)分別來(lái)表示繞組x,y,z軸旋轉矩陣的乘積表示任何旋轉操作。這似乎沒(méi)有問(wèn)題。事實(shí)上,在大多數情況下,沒(méi)有問(wèn)題。

          這里要稍微偏離一下話(huà)題,考慮一下自己的手臂。通過(guò)觀(guān)察手臂的結構,我們可以發(fā)現它大致是肩膀-肩關(guān)節-上臂-肘關(guān)節-小臂-腕關(guān)節-手。也就是說(shuō),我們用三個(gè)關(guān)節連接四個(gè)部分,這為我們的手臂提供了靈活性,因為我們的骨頭可以在關(guān)節處旋轉。如果沒(méi)有關(guān)節,手臂會(huì )筆直,不能彎曲。讓我們做一個(gè)不切實(shí)際的假設。假設肩關(guān)節只能沿z軸旋轉(上下抬起上臂),肘關(guān)節只能繞y軸旋轉(將手臂縮回胸部),腕關(guān)節只能繞x軸旋轉(讓拳頭像撥浪鼓一樣旋轉),然后攤開(kāi)手,考慮手掌和手指的方向。假如我們的關(guān)節能360度旋轉,那就和上面提到的三個(gè)坐標軸一樣。在轉動(dòng)肩關(guān)節時(shí),顯然我們的手掌也會(huì )轉動(dòng),改變方向,這表明肘關(guān)節的轉動(dòng)作用于手的轉動(dòng)。顯然,肘關(guān)節和腕關(guān)節的旋轉也會(huì )影響到手,也就是說(shuō),三個(gè)關(guān)節的旋轉疊加在手上。另一方面,我們的手掌和手指可以朝任何方向,因為上面提到的任何旋轉都可以由三個(gè)坐標軸的旋轉疊加而成。好像沒(méi)問(wèn)題。

          但此時(shí)考慮一種情況,如圖所示(模型使用) ** gic poser web),抬起上臂,把小臂抬到胸前。然后嘗試腕關(guān)節和肩關(guān)節的旋轉,我們會(huì )發(fā)現這兩個(gè)不同關(guān)節的旋轉會(huì )使手掌的方向相同——它們都沿著(zhù)z軸旋轉,即肩關(guān)節周?chē)妮S,而手指的方向是固定的。換句話(huà)說(shuō),我們應該分別沿著(zhù)x軸,z軸這兩個(gè)方向的旋轉現在變成了同一個(gè)方向的旋轉。

          為什么會(huì )這樣?注意三個(gè)關(guān)節不是獨立的:肩關(guān)節的旋轉會(huì )帶動(dòng)肘關(guān)節和腕關(guān)節的運動(dòng),肘關(guān)節的旋轉也會(huì )帶動(dòng)腕關(guān)節的運動(dòng)。就像這三個(gè)關(guān)節都會(huì )在手臂末端工作一樣,上面的關(guān)節也會(huì )影響下面的關(guān)節。同時(shí)旋轉肩關(guān)節會(huì )驅動(dòng)肘關(guān)節和腕關(guān)節,因此對肘關(guān)節和腕關(guān)節旋轉的影響是相同的。但肘關(guān)節只能帶動(dòng)腕關(guān)節,不能帶動(dòng)肩關(guān)節。在上述情況下,將手臂抬到胸部的行為會(huì )轉動(dòng)肘關(guān)節,從而影響腕關(guān)節,但不影響肩關(guān)節,導致腕關(guān)節旋轉的效果與肩關(guān)節旋轉相同。

          回到原來(lái)的問(wèn)題,在計算機中使用三個(gè)矩陣來(lái)表示任意旋轉也會(huì )有同樣的問(wèn)題嗎?之所以會(huì )出現上述問(wèn)題,是因為中間的關(guān)節會(huì )影響底部的關(guān)節,而不會(huì )影響頂部的關(guān)節??纯淳仃嚤硎镜男D。我們用它ZYX這個(gè)矩陣乘積表示任意旋轉,即p'=ZYXp,我們將Z,Y,X,ZYX這四個(gè)矩陣都寫(xiě)出來(lái)看看:

          若我們取

          ,則乘積變?yōu)?/p>

          ,注意到,無(wú)論我們如何修改它,我們都注意到它θ、φ,都不會(huì )改變z’的值,z’始終等于-x。也就是說(shuō),當我們沿y軸旋轉90時(shí)°時(shí),此時(shí)X,Z兩個(gè)旋轉矩陣都在旋轉z軸。這和以前手臂的情況是一樣的。因為矩陣的相乘作用也是有序的,我們先左乘X,再左乘Y,所以在乘Y的時(shí)候,其實(shí)已經(jīng)乘進(jìn)去了。X。乘Z時(shí),會(huì )對X和Y同樣的影響。所以這里的p相當于我們手掌和手指的方向,X相當于腕關(guān)節,Y相當于肘關(guān)節,Z相當于肩關(guān)節。Y會(huì )影響X,但不會(huì )影響XZ,使X成為與Z同軸旋轉的矩陣。

          結語(yǔ)

          本文介紹了計算機中旋轉的定義和操作方法,然后重點(diǎn)介紹了隨后的萬(wàn)向節鎖問(wèn)題。順便說(shuō)一句,我想提一下萬(wàn)向節。原萬(wàn)向節之所以會(huì )出現萬(wàn)向節死鎖問(wèn)題,也是因為三個(gè)環(huán)不完全獨立,中間環(huán)會(huì )驅動(dòng)最內環(huán),但不會(huì )影響最外環(huán)。萬(wàn)向節死鎖問(wèn)題是一個(gè)不可避免的問(wèn)題,只要使用不相互獨立的三次旋轉來(lái)表示任意旋轉,就會(huì )帶來(lái)這個(gè)問(wèn)題。然而,萬(wàn)向節鎖并不可怕。它只會(huì )出現在極端值的中間旋轉中。如果我們只是想表示旋轉,萬(wàn)向節鎖不會(huì )帶來(lái)任何問(wèn)題。畢竟,我們總能找到三個(gè)沿坐標軸旋轉的旋轉來(lái)表示任意旋轉。萬(wàn)向節死鎖只會(huì )導致飛機控制、旋轉插值等問(wèn)題,需要連續旋轉疊加。因此,本文未提及的四元數在這方面的應用中被廣泛引用。

          什么是萬(wàn)向節死鎖,為什么會(huì )出現這個(gè)問(wèn)題,真的困擾了我很久。僅此而已 ** 如有不正之處,請指出記錄。

          繼續閱讀與本文標簽相同的文章
          cache
          Processed in 0.006535 Second.
          东北少妇不戴套对白第一次,亚洲欧洲AV无码电影在线观看,亚洲AV无码之日韩精品,欧美日韩精品一区二区三区不卡