rational_curve< C, V > Class Template Reference

#include <rational_curve.hpp>

Inheritance diagram for rational_curve< C, V >:
parametric_curve< C, V > curve< V > SHAPE_OFV

List of all members.

Public Types

Public Member Functions


Detailed Description

template<class C, class V = default_env>
class mmx::shape::rational_curve< C, V >

Rational curve.

Definition at line 45 of file rational_curve.hpp.


Member Typedef Documentation

typedef bounding_box<C,V> BoundingBox

Reimplemented from parametric_curve< C, V >.

Definition at line 47 of file rational_curve.hpp.

typedef curve< REF_OF(V) > Curve [inherited]

Definition at line 48 of file parametric_curve.hpp.

Definition at line 48 of file rational_curve.hpp.

Reimplemented from parametric_curve< C, V >.

Definition at line 50 of file rational_curve.hpp.

typedef point_set<C,3, REF_OF(V) >::PointIterator PointIterator [inherited]

Definition at line 50 of file parametric_curve.hpp.

Definition at line 51 of file rational_curve.hpp.

Reimplemented from parametric_curve< C, V >.

Definition at line 49 of file rational_curve.hpp.


Constructor & Destructor Documentation

rational_curve ( void   )  [inline]

Definition at line 53 of file rational_curve.hpp.

00053 :ParametricCurve(), m_tmin(0), m_tmax(1) {}

rational_curve ( const BoundingBox box  )  [inline]

Definition at line 55 of file rational_curve.hpp.

00055                                          : 
00056     ParametricCurve(box), m_tmin(0), m_tmax(1) {}

rational_curve ( const Polynomial X,
const Polynomial Y,
const Polynomial Z,
const Polynomial W = 1 
) [inline]

Definition at line 58 of file rational_curve.hpp.

00059     : ParametricCurve(), m_tmin(0), m_tmax(1), m_w(W) 
00060   {
00061     m_p<<X; m_p<<Y; m_p<<Z;
00062   }

rational_curve ( double  m,
double  M,
const Polynomial X,
const Polynomial Y,
const Polynomial Z,
const Polynomial W = 1 
) [inline]

Definition at line 64 of file rational_curve.hpp.

00065     : ParametricCurve(), m_tmin(m), m_tmax(M), m_w(W) 
00066   {
00067     m_p<<X; m_p<<Y; m_p<<Z;
00068   }

rational_curve ( const rational_curve< C, V > &  c  )  [inline]

Definition at line 70 of file rational_curve.hpp.

00071     : ParametricCurve(), m_tmin(c.tmin()), m_tmax(c.tmax()),  m_w(c.m_w) 
00072   {
00073     m_p=c.m_p; 
00074   }

~rational_curve ( void   )  [inline]

Definition at line 78 of file rational_curve.hpp.

00078 {};


Member Function Documentation

Seq< typename rational_curve< C, V >::Point * > critical_points ( void   )  [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 136 of file rational_curve.hpp.

00136                           {
00137   Seq<Point *> l ;
00138   // ...
00139   return l ;
00140 }

const Polynomial& denominator (  )  const [inline]

Definition at line 91 of file rational_curve.hpp.

00091 { return m_w; }

int dimension ( void   )  const [inline]

Definition at line 76 of file rational_curve.hpp.

References Seq< C, R >::size().

00076 { return m_p.size();}

void eval ( Point v,
Scalar  p 
) const [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 118 of file rational_curve.hpp.

00118                                    {
00119   Scalar w=m_w(p);
00120   v.setx(m_p[0](p)/w);
00121   v.sety(m_p[1](p)/w);
00122   v.setz(m_p[2](p)/w);
00123 }

void eval ( double  t,
double *  x,
double *  y,
double *  z 
) const
rational_curve< C, V >::Point * eval ( const double &  t  )  const [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 110 of file rational_curve.hpp.

Referenced by rational_curve< C, V >::operator()().

00110                                 {
00111   Scalar v=as<Scalar>(t);
00112   double w = as<double>(m_w(v));
00113   Point* p = new Point(m_p[0](v)/w, m_p[1](v)/w, m_p[2](v)/w);
00114   return p ;
00115 }

Seq< typename rational_curve< C, V >::Point * > extremal_points ( void   )  [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 143 of file rational_curve.hpp.

00143                           {
00144    Seq<Point *> l ;
00145    // ...
00146    return l ;
00147 }

const Polynomial& numerator ( int  i  )  const [inline]

Definition at line 92 of file rational_curve.hpp.

00092 { return m_p[i]; }

virtual Point* operator() ( double  t  )  const [inline, virtual, inherited]

Definition at line 61 of file parametric_curve.hpp.

00061 { return this->eval(t); }

rational_curve< C, V >::Point * operator() ( double  t  )  [inline]

Definition at line 126 of file rational_curve.hpp.

References rational_curve< C, V >::eval().

00126 { return eval(t); }

void sample ( Point res,
const Scalar t,
int  n 
) const [inline, virtual, inherited]

Definition at line 86 of file parametric_curve.hpp.

References parametric_curve< C, V >::eval().

00086                                                      {
00087   for ( Point * o = res; o != res + n; o++, t++  )
00088     this->eval(*o,*t);
00089 }

void sample ( PointIterator  p,
int  n 
) const [inline, virtual, inherited]

Definition at line 76 of file parametric_curve.hpp.

References assert, parametric_curve< C, V >::eval(), parametric_curve< C, V >::tmax(), and parametric_curve< C, V >::tmin().

00076                                          {
00077   assert(n>1);
00078   Scalar h=(this->tmax() - this->tmin())/(n-1), t=tmin();
00079   for (int i=0; i<n; i++, p++) {
00080     this->eval(*p, t);   // SEGFAULT ?
00081     t+=h;
00082   }
00083 }

void set_denominator ( const Polynomial d  )  [inline]

Definition at line 94 of file rational_curve.hpp.

00094 { m_w=d; }

void set_numerator ( const Polynomial p,
int  i 
) [inline]

Definition at line 95 of file rational_curve.hpp.

References Seq< C, R >::push_back(), and Seq< C, R >::size().

00095 { if (m_p.size() > i) m_p[i]=p; else m_p.push_back(p); }

void set_range ( double  tmin,
double  tmax 
) [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 130 of file rational_curve.hpp.

00130                                         {
00131   m_tmin=tmin;                                           
00132   m_tmax=tmax;                                           
00133 }

Seq< typename rational_curve< C, V >::Point * > singular_points ( void   )  [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 150 of file rational_curve.hpp.

00151 {
00152    Seq<Point *> l ;
00153    // ...
00154    return l ;
00155 }

virtual void subdivide ( parametric_curve< C, V > *&  a,
parametric_curve< C, V > *&  b,
double  t 
) const [pure virtual, inherited]
void subdivide ( ParametricCurve *&  a,
ParametricCurve *&  b,
double  t 
) const [inline]

Definition at line 157 of file rational_curve.hpp.

References SELF, rational_curve< C, V >::tmax(), and rational_curve< C, V >::tmin().

00157                                                                          {
00158   SELF
00159     * ar = new SELF(*this),
00160     * br = new SELF(*this);
00161   ar->set_range(tmin(),t);
00162   br->set_range(t,tmax());
00163 
00164   a = dynamic_cast<ParametricCurve*>(ar);
00165   b = dynamic_cast<ParametricCurve*>(br);
00166 
00167 }

double tmax ( void   )  const [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 81 of file rational_curve.hpp.

Referenced by rational_curve< C, V >::subdivide().

00081 { return this->m_tmax; }

double tmin ( void   )  const [inline, virtual]

Implements parametric_curve< C, V >.

Definition at line 80 of file rational_curve.hpp.

Referenced by rational_curve< C, V >::subdivide().

00080 { return this->m_tmin; }


The documentation for this class was generated from the following file:

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1