Javascript 绕地轴旋转的地球
我试着让地球绕着倾斜的轴旋转三周。我找到了,我试图在我的代码中使用它,但它没有任何作用 当我执行这个代码时,行星就在那里,根本不旋转。我对四元数是什么或它是如何工作的并没有一个确切的把握,所以我不确定哪里出了问题Javascript 绕地轴旋转的地球,javascript,three.js,Javascript,Three.js,我试着让地球绕着倾斜的轴旋转三周。我找到了,我试图在我的代码中使用它,但它没有任何作用 当我执行这个代码时,行星就在那里,根本不旋转。我对四元数是什么或它是如何工作的并没有一个确切的把握,所以我不确定哪里出了问题 function rotateAroundAxis(object, axis, radians) { var vector = axis.normalize(); var quaternion = new THREE.Quaternion().setFromAxisAn
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
three.js r.69只是一些健全性检查-您正在requestAnimationFrame循环中调用render,对吗?rotateAroundAxis函数的来源是什么?是的,我用rotateAroundAxis函数更新了原始帖子。我可以发布整个代码,但它相当长。首先:
earthAxis.normalize()代码>然后在循环中:地球旋转轴(地球轴,0.02)代码>@WestLangley非常感谢!!这很好,很简单,所以这很有效,它绕着向量旋转,但是从垂直的位置。我需要的是将地球倾斜23.4度,然后围绕着这个似乎不可能做到的方向旋转。请以后避免在问题得到回答和接受后改变它。最好换一个新职位。