function moreEffectiveSphericalPhyllotaxis(n) {
var epsilon = 214;
if (n >= 600000){
epsilon = 214;
}else if(n>= 400000){
epsilon = 75;
}else if(n>= 11000){
epsilon = 27;
}else if(n>= 890){
epsilon = 10;
}else if(n>= 177){
epsilon = 3.33;
}else if(n>= 24){
epsilon = 1.33;
}else{
epsilon = 0.33;
}
const g = 1.61803398875;
const degrees = 180 / Math.PI;
return Array.from({ length: n }, (_, i) => {
var theta = 2 *Math.PI * i / g
var phi = Math.acos(1 - 2*(i+epsilon)/(n-1+2*epsilon))
var x = Math.cos(theta) * Math.sin(phi);
var y = Math.sin(theta) * Math.sin(phi)
var z = Math.cos(phi);
return [Math.atan2(y, x) * degrees, Math.asin(z) * degrees];
});
}