绕轨道旋转物体

Nar*_*ren 2 three.js

这是我迄今为止所做的工作。我正在使用 Three.js 动画,我想在其中创建一个太阳系。我想让行星绕着太阳转。我已经完成了创建绕太阳轨道的工作。但我不知道如何让行星在特定的轨道上旋转。我创造了一个这样的轨道和行星。

var material = new THREE.LineBasicMaterial({color: 'aqua'});
var geometry = new THREE.CircleGeometry(3.2, 1000);
geometry.vertices.shift();
var line = new THREE.Line(geometry, material);
line.position.set(0.5, 5, 6);
line.rotation.x = 2;`

geometry = new THREE.SphereGeometry(0.5, 32, 32);
material = new THREE.MeshBasicMaterial({color: 'yellow'});
p1 = new THREE.Mesh(geometry, material);
p1.position.set(3, 3.8, -1);'
Run Code Online (Sandbox Code Playgroud)

所以,我想让地球绕特定的圆旋转。

pri*_*849 8

你知道太阳到行星的距离(半径),然后你就可以使用Math.sin()Math.cos()函数来实现你想要的。

var orbitRadius = 10; // for example
var date;
Run Code Online (Sandbox Code Playgroud)

在动画循环中你可以这样做:

date = Date.now() * 0.0001;
p1.position.set(
  Math.cos(date) * orbitRadius,
  0,
  Math.sin(date) * orbitRadius
);
Run Code Online (Sandbox Code Playgroud)

jsfiddle示例