shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/include/shape/bspline_curve.hpp
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * M a t h e m a g i x
00003  *****************************************************************************
00004  * BsplineCurve
00005  * 2008-03-28
00006  * Julien Wintz & Bernard Mourrain
00007  *****************************************************************************
00008  *               Copyright (C) 2006 INRIA Sophia-Antipolis
00009  *****************************************************************************
00010  * Comments :
00011  ****************************************************************************/
00012 
00013 # ifndef shape_bspline_curve_hpp
00014 # define shape_bspline_curve_hpp
00015 
00016 # include <realroot/Seq.hpp>
00017 # include <shape/point.hpp>
00018 # include <shape/parametric_curve.hpp>
00019 # include <shape/sisl.h>
00020 
00021 # define TMPL template<class K>
00022 # define BsplineCurve bspline_curve<K>
00023 //====================================================================
00024 namespace mmx {
00025 namespace shape {
00026 
00027 TMPL 
00028 class bspline_curve : public parametric_curve<K>, public SISLCurve
00029 {
00030 public:
00031   typedef bounding_box<K>     BoundingBox;
00032   typedef point<K>            Point;
00033   typedef parametric_curve<K> ParametricCurve;
00034   bspline_curve(void) ;
00035   bspline_curve(const BoundingBox &) ;
00036  ~bspline_curve(void) ;
00037 
00038   Point* eval(double t) ;
00039   Point* operator() (double t) ;
00040   void   eval(double t, double * x, double * y) ;
00041   void   eval(double t, double * x, double * y, double * z) ;
00042   
00043   inline double tmin(void) { return knots()[order()] ; }
00044   inline double tmax(void) { return knots()[number()-order()] ; }
00045   
00046   inline int order(void)         { return ik ;    }
00047   inline int number(void)        { return in ;    }
00048   inline int dimension(void)     { return idim ;  }
00049   inline double * knots(void)    { return et ;    }
00050   inline double * vertices(void) { return ecoef ; }
00051 
00052   Seq<Point *> criticalpoints(void) ;
00053   Seq<Point *> extremalpoints(void) ;
00054   Seq<Point *> singularpoints(void) ;
00055 
00056 } ;
00057 
00058 TMPL BsplineCurve::bspline_curve(void) : ParametricCurve()
00059 {
00060 
00061 }
00062 
00063 TMPL BsplineCurve::bspline_curve(const BoundingBox & box) : ParametricCurve(box)
00064 {
00065 
00066 }
00067 
00068 TMPL BsplineCurve::~bspline_curve(void)
00069 {
00070   //freeCurve(this) ;
00071 }
00072 
00073 TMPL Point* 
00074 BsplineCurve::eval(double t)  {
00075     Point* p=0 ;
00076     // ...
00077     return p ;
00078 }
00079 
00080 TMPL void 
00081 BsplineCurve::eval(double t, double * x, double * y) {
00082 }
00083 
00084 TMPL void 
00085 BsplineCurve::eval(double t, double * x, double * y, double * z) {
00086 }
00087 
00088 // Seq<Point *> BsplineCurve::criticalPoints(void) 
00089 // {
00090 //     Seq<Point *> l ;
00091 //     // ...
00092 //     return l ;
00093 // }
00094 
00095 // Seq<Point *> BsplineCurve::extremalPoints(void) 
00096 // {
00097 //     Seq<Point *> l ;
00098 //     // ...
00099 //     return l ;
00100 // }
00101 
00102 // Seq<Point *> BsplineCurve::singularPoints(void) 
00103 // {
00104 //     Seq<Point *> l ;
00105 //     // ...
00106 //     return l ;
00107 // }
00108 
00109 TMPL Point* BsplineCurve::operator() (double t) {
00110   Point* p=0 ;
00111   // ...
00112   return p ;
00113 }
00114 
00115 } ; // namespace shape
00116 } ; // namespace mmx
00117 //====================================================================
00118 # undef TMPL
00119 # undef BsplineCurve
00120 # endif // shape_bspline_curve_hpp