[英]How to convert between sensor quaternion and 3d camera quaternion?
我使用getQuaternionFromVector()從Android的Sensor.TYPE_ROTATION_VECTOR融合傳感器獲得四元數。 我想用那個四元數控制我的Rajawali應用程序的相機。
我從傳感器獲得的值(w,x,y,z)是(手機在橫向,直視前方):
我需要將這些值轉換為這些正確的值:
通過一些試驗和錯誤,我已經找到了解決方案,但我還有一些方法。 如果我首先相對於Y軸旋轉90度,並且相對於X軸旋轉-90度:
Quaternion a = new Quaternion(Vector3.Y, 90);
a.multiply(q);
Quaternion b = new Quaternion(Vector3.X, -90);
b.multiply(a);
我得到的價值是:
結果是北方是正確的,向東是向上的,向西是向下的,向南是向上的。 我注意到軸承與螺距混合(我改變了設備的間距,相機的軸承也發生了變化,並且切換器)。
有關如何修改傳感器四元數以匹配預期的四元數值的任何建議? 如何更改它以使傳感器軸承改變攝像機軸承而不改變俯仰?
提前致謝!
管理以解決它。
public static Quaternion transform(Quaternion q) {
Quaternion a = new Quaternion(Vector3.Y, 90).multiply(q);
Quaternion b = new Quaternion(a.w, a.y, -a.x, -a.z);
return b.multiply(new Quaternion(Vector3.Y, 90));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.