In fact, I have yet to find a way that all points are distributed uniformly. All the methods I have found can only approach a uniform distribution, so I recommend a simpler method in my opinion:
const spherical = new THREE.Spherical();
spherical.radius = 5;
for (let i = 0; i < points; i++) {
let phi = Math.acos(1.0 - (2.0 * i + 0.5) / points);
let theta = Math.PI * (1 + Math.sqrt(5)) * i;
spherical.phi = phi;
spherical.theta = theta;
const x = spherical.radius * Math.sin(spherical.phi) *
Math.cos(spherical.theta);
const y = spherical.radius * Math.sin(spherical.phi) *
Math.sin(spherical.theta);
const z = spherical.radius * Math.cos(spherical.phi);
......
}
I also don't understand this theoretical principle, because my math is bad, if you are intersting in this principle you can search for relevant information on Stack Overflow.
Top comments (0)