+ if(d)
+ {
+ vector<Geometry::SurfacePoint<float, 3> > points = s->get_intersections(reverse_trans.transform(ray));
+ if(points.empty())
+ return false;
+ *d = points.front().distance;
+ return true;
+ }
+ else
+ return s->check_intersection(reverse_trans.transform(ray));