關於Unity的旋轉,陀螺儀相關的一些記錄

2021-07-25 08:14:57 字數 1520 閱讀 1724

隨意記錄一下。

四元素的旋**

四元素相乘進行旋轉時,元素前後次序不同,結果會不同。q1*q2 != q2*q1

旋轉參照的是第乙個元素的座標系,等同於對q1 進行q2的旋轉操作。

應用1:將物體沿著自身x軸旋轉30°

transform.rotation *= quaternion.euler(30,0,0);

應用2:將物體沿著世界的x軸旋轉30°

transform.rotation = quaternion.euler(30,0,0) * transform.rotation;

應用3:四元素的相對旋轉

物體第一次轉到q1,第二次再轉到q2

q2相對於q1的旋轉為

quaternion.inverse(q1)*q2

從q2狀態旋轉回q1狀態

quaternion.inverse((quaternion.inverse(q1)*q2))

unity中旋轉物體時,世界座標依照zxy依次旋轉,旋轉次序不一樣的話會得到不同的結果。

旋轉方式:

transform.eulerangles  += new vector3(30,0,0);

transform.rotation *= quaternion.euler(30,0,0);

transform.rotation = quaternion.euler(30,0,0) * transform.rotation;

三種方式的結果可能是不同的:

第一種,把最終的旋轉結果直接賦值給物體,等同於在編輯器中直接改寫數值,並不是沿著x軸旋轉30°。

第二種,把物體沿著自身的x軸旋轉30°。

第三種,把物體沿著世界x軸旋轉30°。(localrotation則為根據父物體軸旋轉)

向量旋**

四元素*向量,是對向量vector3進行旋轉。

幾何意義:在球面上的乙個點的運動。

向量dot:a·

b=|a||

b|·cosθ

幾何意義:向量a在向量b方向上的投影與向量b的模的乘積

應用:計算向量在另乙個向量上的投影長度和夾角。(夾角從0-180,無法區分正負)

向量cross:a×

b=c,其中|

c|=|a||

b|·sinθ,

c的方向遵守右手定則

幾何意義:c

的模是垂直a、b所在平面,且以|

b|·sinθ為高、|

a|為底的平行四邊形的面積

應用:計算向量之間夾角時,用cross的值正負來判斷夾角是否大於180°

四元素*向量,是對向量vector3進行旋轉,不能直接用於transform尤拉角的旋轉。

transform.rotation *= quaternion.euler(30,0,0);

transform.rotation *= quaternion.euler(30,0,0);

transform.rotation = quaternion.euler(30,0,0) * transform.rotation;

unity陀螺儀引數詳解

參考文章 android 陀螺儀的使用 手機平放,x軸為右手邊,y軸為正前方,z軸為正上方。陀螺儀的各個軸引數表示圍繞這三個軸旋轉的數值。本次測試為小公尺3,規定初始方向為平放,手機頭向前方,即遠離身體。input.gyro.attitude x 平放為0,手機按鍵傾斜旋轉180度數值變化為 0 1...

陀螺儀的學習

從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...

html5的陀螺儀

獲取移動裝置的陀螺儀,需要知道陀螺儀包含什麼。我們可以讓document監聽deviceorientation 來獲取相關的資料,裡面包括3個值 alpha beta和gamma。這三個值分別代表 1 alpha 移動裝置水平放置時,繞z軸旋轉的角度,數值為0度到360度。移動裝置水平放置時,繞x軸...