2017-03-13 177 views
-4
var a = new THREE.Euler(0, 1, 1.57, 'YXZ'); 
var b = new THREE.Vector3(1, 0, 1); 
var c=b.applyEuler(a); 

我們可以通過b.applyEuler(a)得到c,但我想applyEuler逆操作。applyEuler逆運算

cb是已知的。我想要計算a

+0

「** **我」 是不是用小寫L. –

+0

拼寫我就知道了,謝謝。 –

回答

1

這裏有一個方法,你可以添加到您的項目來計算Euler旋轉的倒數:

THREE.Euler.prototype.inverse = function() { 

    var q = new THREE.Quaternion(); 

    return function inverse() { 

     return this.setFromQuaternion(q.setFromEuler(this).inverse()); 

    }; 

}(); 

此方法轉換歐拉表示爲等效的四元數表示,反轉四元數,然後再轉換回。

請注意,歐拉表示不是唯一的,因此反演也不是唯一的。


如果你有兩個單位向量ab,你想知道映射ab旋轉,那麼你可以使用

var q = new THREE.Quaternion().setFromUnitVectors(a, b); 

ab的長度必須1,和你可以通過使用Vector3.normalize()方法使它們變得如此。

three.js所r.84