隨意記錄一下。
四元素的旋**
四元素相乘進行旋轉時,元素前後次序不同,結果會不同。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軸...