在其轴上旋转地球

时间:2014-12-10 20:44:51

标签: javascript three.js

我试图围绕它旋转地球旋转三个js的轴。我找到了 this solution ,我试图在我的代码中使用它,但它没有做任何事情。

当我执行此代码时,行星只是坐在那里而根本不旋转。我不太确切地掌握四元数是什么或它是如何工作的,所以我不确定出了什么问题。

function rotateAroundAxis(object, axis, radians) {
    var vector = axis.normalize();
    var quaternion = new THREE.Quaternion().setFromAxisAngle(vector, radians);
    object.rotation = new THREE.Euler().setFromQuaternion( quaternion );
}

earthAxis = new THREE.Vector3(Math.cos(23.4*Math.PI/180), Math.sin(23.4*Math.PI/180), 0);

function render() {
    stats.update();
    step += 0.02;
    rotateAroundAxis(earth, earthAxis, step);
}

1 个答案:

答案 0 :(得分:2)

首先,您需要通过对其应用变换将球体的几何体倾斜23.4度。

var radians = 23.4 * Math.PI / 180; // tilt in radians
mesh.geometry.applyMatrix( new THREE.Matrix4().makeRotationZ( - radians ) );

然后,要在物体空间的轴上旋转地球,首先要标准化您正在旋转的轴。

earthAxis = new THREE.Vector3( Math.sin( radians ), Math.cos( radians ), 0 ).normalize();

然后在你的渲染功能中,执行以下操作:

earth.rotateOnAxis( earthAxis, 0.01 ); // axis must be normalized

three.js r.69