parametric_surface< C, V > Class Template Reference

#include <parametric_surface.hpp>

Inheritance diagram for parametric_surface< C, V >:
surface< V > rational_surface< C, N, V >

List of all members.

Public Types

Public Member Functions


Detailed Description

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

Definition at line 29 of file parametric_surface.hpp.


Member Typedef Documentation

typedef use<point_def,C,V>::Point Point

Reimplemented in bspline_surface, and rational_surface< C, N, V >.

Definition at line 35 of file parametric_surface.hpp.

Reimplemented in rational_surface< C, N, V >.

Definition at line 36 of file parametric_surface.hpp.

typedef C Scalar

Reimplemented in rational_surface< C, N, V >.

Definition at line 33 of file parametric_surface.hpp.


Constructor & Destructor Documentation

parametric_surface ( void   )  [inline]

Definition at line 39 of file parametric_surface.hpp.

00039 {} ;


Member Function Documentation

void eval ( Scalar lp,
const Scalar u,
int  n 
) const [inline, virtual]

Definition at line 73 of file parametric_surface.hpp.

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

00073                                                   {
00074     Point p;
00075     for (int i=0; i<n;i++) {
00076         this->eval(p.x(),p.y(),p.z(),u[0],u[1]);
00077         *r=p.x();r++;
00078         *r=p.y();r++;
00079         *r=p.z();r++;
00080         u+=2;
00081     }
00082 }

virtual void eval ( Scalar ,
Scalar ,
Scalar ,
Scalar  u,
Scalar  v 
) const [pure virtual]
void sample ( Scalar lp,
unsigned  m,
unsigned  n,
Scalar u,
Scalar v 
) const [inline, virtual]

Definition at line 103 of file parametric_surface.hpp.

References assert, parametric_surface< C, V >::eval(), parametric_surface< C, V >::umax(), parametric_surface< C, V >::umin(), parametric_surface< C, V >::vmax(), and parametric_surface< C, V >::vmin().

00103                                                                             {
00104     assert(m>1 && n>1);
00105     Scalar
00106             hu=(this->umax() - this->umin())/(m-1),
00107             hv=(this->vmax() - this->vmin())/(n-1);
00108 
00109     Scalar * u0 =u, su=umin(), * v0=v, sv=vmin();
00110     for (unsigned i=0; i<m;i++){ *u=su; su+=hu; u++; }
00111     for (unsigned j=0; j<n;j++){ *v=sv; sv+=hv; v++; }
00112 
00113     u=u0;
00114     for (unsigned i=0; i<m;i++,u++) {
00115         v=v0;
00116         for (unsigned j=0; j<n;j++,v++) {
00117             this->eval(r[0],r[1],r[2],*u,*v);
00118 //            *r=x;std::cout<<*r<<" ";
00119             r+=3;
00120 //            *r=y;std::cout<<*r<<" ";
00121 //            r++;
00122 //            *r=z;std::cout<<*r<<" ";
00123 //            r++;
00124 //            std::cout<<std::endl;
00125         }
00126     }
00127 }

void sample ( PointIterator  lp,
unsigned  m,
unsigned  n 
) const [inline, virtual]

Definition at line 86 of file parametric_surface.hpp.

References assert, parametric_surface< C, V >::eval(), parametric_surface< C, V >::umax(), parametric_surface< C, V >::umin(), parametric_surface< C, V >::vmax(), and parametric_surface< C, V >::vmin().

00086                                                             {
00087     assert(m>1 && n>1);
00088     Scalar
00089             hu=(this->umax() - this->umin())/(m-1), u=this->umin(),
00090             hv=(this->vmax() - this->vmin())/(n-1), v;
00091     Point pp;
00092     for (unsigned i=0; i<m;i++) {
00093         v=vmin();
00094         for (unsigned j=0; j<n;j++,p++) {
00095             this->eval(p->x(),p->y(),p->z(),u,v);
00096             v+=hv;
00097         }
00098         u+=hu;
00099     }
00100 }

void sample ( PointIterator  lp,
const Scalar u,
unsigned  m,
const Scalar v,
unsigned  n 
) const [inline, virtual]

Definition at line 130 of file parametric_surface.hpp.

References assert, and parametric_surface< C, V >::eval().

Referenced by use< ssi_def, C >::sample().

00130                                                                                                {
00131     assert(m>1 && n>1);
00132     const Scalar * v0=v;
00133 
00134     for (unsigned i=0; i<m;i++,u++) {
00135         v=v0;
00136         for (unsigned j=0; j<n;j++,p++,v++) {
00137             this->eval(p->x(),p->y(),p->z(),*u,*v);
00138         }
00139     }
00140 }

virtual double umax ( void   )  const [pure virtual]
virtual double umin ( void   )  const [pure virtual]
virtual double vmax ( void   )  const [pure virtual]
virtual double vmin ( void   )  const [pure virtual]

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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1