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) {