• 包含KTR-2-HA-萬向節-開天的詞條

    KTR版本2.jpg

    本文目錄一覽:

    100分急求GB/T 4969-1985 萬向節和傳動軸名詞及術語

    電子板的不能給,這是職業道德問題。想要術語可以,不會影響道德規范。

    萬向節就是十字軸與之配合件總稱,傳動軸就是原動機到執行構件傳遞動力的軸(其中也包括萬向節)。

    Unity-萬向節死鎖(Gimbal Lock)問題總結

    Unity API中對 Transform .eulerAngles的定義是,本身是Vector3,即三維矢量,含有x、y、z三個參數。

    1.以歐拉角為單位的旋轉;

    2.x、y、z角度分別表示先圍繞z軸旋轉z度,再圍繞x軸旋轉x度,最后圍繞y軸旋轉y度;

    3.僅使用此變量讀取角度并將其設置為固定值。不要增加它們,因為當角度超過360度時會失敗。應使用Transform.Rotate來執行旋轉操作。

    ◆此處“角度超過360度時會失敗”的理解是,Unity內部使用四元數去執行旋轉,不會存儲歐拉角的累計值,歐拉角只代表了等值的旋轉變化結果,當旋轉角度X超過360度時,存儲的角度為X-360,例如,361度等同于1度,722度等同于2度。

    同時,Unity API提醒我們不要單獨設置一個歐拉角的參數(例如,Eulerangles.x=10;),這將導致錯誤的旋轉,應當同時對x、y、z三個參數進行設置。

    歐拉旋轉中,總是沿著初始的固定軸向在進行按z、x、y順序的旋轉。例如,指定歐拉旋轉(90,90,90),它會先繞Z軸旋轉90度,再繞X軸旋轉90度,再繞Y軸旋轉90度,但是繞Z旋轉后,再繞X軸旋轉時,依然是繞著初始的X軸旋轉,繞Y軸旋轉時同理。

    正是由于歐拉旋轉沿Z、X、Y順規執行和旋轉軸軸向的定義,導致了“萬向節死鎖”的發生。

    萬向節,也叫平衡環架(Gimbal),具有樞紐的裝置,使得一物體能以單一軸旋轉。由彼此垂直的樞紐軸所組成的一組三只平衡環架,則可使架在最內的環架的物體維持旋轉軸不變。常常應用于船上的陀螺儀、羅盤、飲料杯架等。

    在飛行器的航行中,進行XYZ三個方向旋轉的旋轉有專業的術語,見下圖:

    沿著機身右方軸(Unity中的+X)進行旋轉,稱為 pitch ,中文叫 俯仰 。?

    沿著機頭上方軸(Unity中的+Y)進行旋轉,稱為 Yaw ,中文叫 偏航 。?

    沿著機頭前方軸(Unity中的+Z)進行旋轉,稱為 Roll ,中文叫 桶滾 。

    當飛行器或者船體發生桶滾、俯仰和偏航時,陀螺儀中的轉子和旋轉軸具有較大的慣性,會保持原來的姿態,而其余的環則會發生旋轉,最終保證軒子和旋轉軸的平衡,如圖所示:

    當飛行器和船體仰起90度時,陀螺儀狀態如下:

    此時沿藍色軸轉動,則轉子和旋轉軸將無法保持平衡。

    現在,

    紅色連接頭:提供一個相對俯仰的自由度。

    綠色連接頭:提供一個相對偏航的自由度。

    藍色連接頭:提供一個相對偏航的自由度。

    3個連接頭只提供了兩個自由度,桶滾的自由度丟失了,這種現象被稱為“萬向節死鎖”。

    更加進一步地分析原因,歐拉角的X軸轉動造成最后的變化結果,受到到了預先執行的Z軸轉動的影響,它仍然會造成某個相對自身的軸向的變化,但是結果不唯一;同樣,歐拉角的Y軸轉動,則受到了Z軸和X軸的影響,結果更加不唯一。

    由于沿XYZ軸的轉動遵循Unity中歐拉旋轉的順規和軸向定義,有些情況下會造成某個軸向自由度的丟失。

    再追究其本質,從歐拉角到旋轉是一個多對一的映射(即不同的歐拉角可以表示同一個旋轉方向),而且并不是每一個旋轉變化都可以用歐拉角來表示。

    利用四元數(Quaternion)來進行旋轉。

    四元數本質上是一種高階復數,它的虛部包含了三個虛數單位,i、j、k,即一個四元數可以表示為x = a + bi + cj + dk。Unity中,Transform.rotation存儲四元數信息,我們可以使用一個四元數來執行一個旋轉。

    舉例說,把點P(1, 0, 1)繞旋轉軸u = (0, 1, 0)旋轉90°,求旋轉后的頂點坐標。首先將P擴充到四元數,即p = (P, 0)。而q = (u*sin45°, cos45°)。求p′=qpq?1的值。最后的結果p'= ((1, 0, -1), 0),即旋轉后的頂點位置是(1, 0, -1)。

    Unity內部使用四元數表示所有旋轉。Unity API中并未對四元數進行詳細的定義,僅是提供了常見的若干四元數函數,比如Quaternion.LookRotation, Quaternion.Angle,Quaternion.Eule,Quaternion.Slerp, Quaternion.FromToRotation和Quaternion.identity等。

    在Unity中,使用四元數進行旋轉,比歐拉旋轉更強大,能夠進行增量旋轉,能夠避免萬向鎖,還能進行球面差值。

    使用四元數來實現一定角度的平滑旋轉的簡單示例如下:

    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;

    public class rotate : MonoBehaviour

    {

    ? ? [SerializeField]

    ? ? float rotateSpeed = 2f;

    ? ? bool isClick = false;

    ? ? Quaternion targetAngles;

    ? ? private void Start()

    ? ? {

    ? ? ? ? // Quaternion.Slerp()第二個參數需要的是四元數,所以這里需要將目標的角度轉成四元數去計算

    ? ? ? ? targetAngles = Quaternion.Euler(0, 90f, 0);

    ? ? }

    ? ? // Update is called once per frame

    ? ? void Update()

    ? ? {

    ? ? ? ? // 用 slerp 進行插值平滑的旋轉

    ? ? ? ? transform.rotation = Quaternion.Slerp(transform.rotation, targetAngles, rotateSpeed * Time.deltaTime);

    ? ? ? ? // 當初始角度跟目標角度小于1,將目標角度賦值給初始角度,讓旋轉角度是我們需要的角度

    ? ? ? ? if (Quaternion.Angle(targetAngles, transform.rotation) 1)

    ? ? ? ? {

    ? ? ? ? ? ? transform.rotation = targetAngles;

    ? ? ? ? }?

    ? ? }

    }

    參考文章:

    傳動軸萬向節太緊了很難轉動要換嗎70-80碼轟隆轟隆的

    必須的更換,一但萬向節脫落就有安全事故【汽車有問題,問汽車大師。4S店專業技師,10分鐘解決。】

    KTR聯軸器生產高品質傳動部件和制動器

    服務熱線

    13166059228

    13166059228

    微信客服

    微信客服

  • 妈妈的朋友电影