134 double thetaMin = theta.first;
135 double thetaMax = theta.second;
137 if (thetaMin < 0.0) { thetaMin = 0.0; }
138 if (thetaMin > PI) { thetaMin = PI; }
139 if (thetaMax < 0.0) { thetaMax = 0.0; }
140 if (thetaMax > PI) { thetaMax = PI; }
142 if (thetaMax > thetaMin) {
146 const double rad = thetaMax - thetaMin;
147 const double bin = rad / floor(rad/(1.4*grid) + 0.5);
148 const double unit = 2.0 * sqrt(1.0 - cos(grid));
150 for (
double theta = thetaMin; theta < thetaMax + 0.5*bin; theta += bin) {
154 if (theta > 0.5*bin && PI - theta > 0.5*bin)
155 step = PI / floor(PI*sin(theta)/unit + 0.5);
159 for (
double phi = 0.0; phi < 2.0*PI - 0.5*step; phi += step) {