题目描述
在学习 three.js 的过程中,看到了使用three.js绘制一个球体的过程,其中关键的部分,给出一定数量的点,平均的分布在一个球体上,他的代码如下,但不明白细节
// sphere
var vector = new THREE.Vector3();
var spherical = new THREE.Spherical();
for ( var i = 0, l = objects.length; i < l; i ++ ) {
var phi = Math.acos( -1 + ( 2 * i ) / l );
var theta = Math.sqrt( l * Math.PI ) * phi;
var object = new THREE.Object3D();
spherical.set( 800, phi, theta );
object.position.setFromSpherical( spherical );
vector.copy( object.position ).multiplyScalar( 2 );
object.lookAt( vector );
targets.sphere.push( object );
}
这里在求 phi
和 theta
, 不明白它的计算方式, 它是怎么计算出来的?