00001 #ifndef SYNAPS_SHAPE_SURFACE_H 00002 #define SYNAPS_SHAPE_SURFACE_H 00003 00004 #include <synaps/init.h> 00005 00006 __BEGIN_NAMESPACE_SYNAPS 00007 00008 namespace shape 00009 { 00010 00011 namespace SURFACE 00012 { 00013 template<class Point3, class C> 00014 void project( Point3 & r, const C & c , const Point3 & q ) 00015 { 00016 std::cerr << "shape::SURFACE::project<Point3,SURFACE> not implemented\n"; 00017 }; 00018 } 00019 00020 template <class R> struct Surface { R m_rep; const R & rep() const { return m_rep; }; R & rep() { return m_rep; }; }; 00021 00022 00023 template<class R, class Point3> 00024 void project( Point3& r, const Surface<R>& c, const Point3& q ) 00025 { 00026 using namespace SURFACE; 00027 project(r,c.rep(),q); 00028 }; 00029 }; 00030 00031 __END_NAMESPACE_SYNAPS 00032 00033 #endif