golden sphere cpp
std::vector<Vec3> fibonacci_spiral_sphere(const int num_points) {
std::vector<Vec3> vectors;
vectors.reserve(num_points);
const double gr=(sqrt(5.0) + 1.0) / 2.0; // golden ratio = 1.6180339887498948482
const double ga=(2.0 - gr) * (2.0*M_PI); // golden angle = 2.39996322972865332
for (size_t i=1; i <= num_points; ++i) {
const double lat = asin(-1.0 + 2.0 * double(i) / (num_points+1));
const double lon = ga * i;
const double x = cos(lon)*cos(lat);
const double y = sin(lon)*cos(lat);
const double z = sin(lat);
vectors.emplace_back(x, y, z);
}
return vectors;
}