javascript - 地球绕其轴旋转

标签 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);
}

最佳答案

首先,您需要通过应用变换将球体的几何形状倾斜 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

三.js r.69

关于javascript - 地球绕其轴旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410475/

相关文章:

javascript - Strophe、backbonejs 和 jquery-mobile

javascript - 如何确保工具提示在悬停时不会消失

javascript - Firebase 管理 SDK 无法在 Cloud Scheduler (PubSub) 上运行

javascript - 使用javascript在本地保存的Keydown事件

javascript - ng-repeat 与关联数组

three.js - 如何在 Three.js 中高效创建管道

three.js - 如何在three.js中使用GLTF Loader?纹理和 Material 显示为黑色

javascript - 三、几何不是构造函数

javascript - 带摄像头的旋转光源 + OrbitControls.js

javascript - THREE.js:模拟 MeshBasicMaterial,同时允许彩色灯光