#include <pointsurface.h>



void pointsurfaceSphere::operator()
(
  bool & accept,
  double & x,
  double & y,
  double & z,
  doublec u,
  doublec v,
  doublec w 
)
{
  double u2(u*2.0-1.0);
  double v2(v*2.0-1.0);
  double w2(w*2.0-1.0);

  // Poor zero test but its a quick function.
  double dotprod = u2*u2+v2*v2+w2*w2;
  if ( (dotprod>1.0) || (dotprod==0.0) )
  {
    accept=false;
    return;
  }
   
  // Assume non-zero u,v,w.
  double t = (double)1.0 / sqrt(dotprod);

  x=u2*t;
  y=v2*t;
  z=w2*t;

  accept=true;
}  


