applyEuler逆操作

时间:2017-03-13 15:45:50

标签: javascript three.js

var a = new THREE.Euler( 0, 1, 1.57, 'YXZ' );
var b = new THREE.Vector3( 1, 0, 1 );
var c=b.applyEuler(a);

我们可以c获得b.applyEuler(a),但我希望使用applyEuler进行反向操作。

cb已知。

我想计算a

1 个答案:

答案 0 :(得分:1)

以下是您可以添加到项目中以计算Euler轮换的倒数的方法:

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

    var q = new THREE.Quaternion();

    return function inverse() {

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

    };

}();

此方法将Euler表示转换为等效的四元数表示,反转四元数,然后转换回来。

请注意,欧拉表示不是唯一的,因此反向表示也不是唯一的。

如果您有两个单位向量ab,并且想知道将a映射到b的轮换,那么您可以使用

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

ab的长度必须为1,您可以使用Vector3.normalize()方法将其设为。

three.js r.84