我嘗試將vrDisplays旋轉(以四元數形式)轉換爲經度和緯度,因爲我使用的API需要當前旋轉的頭部安裝顯示的經度和緯度值。THREE.js - Quaternion to lat,lon
lordofducts回答unity3D論壇(https://forum.unity3d.com/threads/quaternions-and-euler-angles-to-longitude-latitude.154392/)
給了我好希望,這實際上是可能的,但我也有點卡住,因爲THREE.Quaternion似乎並不具有ToAxisAngle()方法和我三維幾何體不太好。
所以沒有人有一個想法,我怎麼能做到這一點,所以我可以這樣做?
var quat = THREE.Quaternion();
quat.fromArray(vrDisplay.getPose().orientation);
var lat = //do sth with quat
var lon = //do seth with quat
api.rotateCamera({
lat: lat,
lon: lon
});
//我注意到,在我的代碼中,我已經有一個從歐拉角到緯度的轉換。所以我可能只是將四元數轉換成歐拉角,然後將其轉換爲經緯度值。仍然必須有更復雜的方法...
(1)僅供參考,有'Vector4.setAxisAngleFromQuaternion(四元)'。 (2)但是,嘗試'v = new THREE.Vector3(); //重用它! v.set(0,0,1).applyQuaternion(quaternion);'這應該給你方向。 – WestLangley