PLib::NurbsCurve< T, N > Class Template Reference

A NURBS curve class. More...

#include <nurbs.h>

Inheritance diagram for PLib::NurbsCurve< T, N >:

PLib::ParaCurve< T, N > PLib::NurbsCurveSP< T, N > PLib::NurbsCurveSP< float, 3 > PLib::SimpleNurbsCurveGL PLib::NurbsCurveGL List of all members.

Public Member Functions

 NurbsCurve (const NurbsCurve< T, N > &nurb)
 NurbsCurve (const Vector< HPoint_nD< T, N > > &P1, const Vector< T > &U1, int deg=3)
 NurbsCurve (const Vector< Point_nD< T, N > > &P1, const Vector< T > &W, const Vector< T > &U1, int deg=3)
int degree () const
const Vector< HPoint_nD< T,
N > > & 
ctrlPnts () const
const HPoint_nD< T, N > ctrlPnts (int i) const
const Vector< T > & knot () const
knot (int i) const
void resize (int n, int Deg)
virtual void reset (const Vector< HPoint_nD< T, N > > &P1, const Vector< T > &U1, int deg)
virtual NurbsCurveoperator= (const NurbsCurve< T, N > &)
virtual HPoint_nD< T, N > operator() (T u) const
HPoint_nD< T, N > hpointAt (T u) const
HPoint_nD< T, N > hpointAt (T u, int span) const
void deriveAtH (T u, int, Vector< HPoint_nD< T, N > > &) const
void deriveAt (T u, int, Vector< Point_nD< T, N > > &) const
void deriveAtH (T u, int, int, Vector< HPoint_nD< T, N > > &) const
void deriveAt (T u, int, int, Vector< Point_nD< T, N > > &) const
Point_nD< T, N > derive3D (T u, int d) const
HPoint_nD< T, N > derive (T u, int d) const
Point_nD< T, N > normal (T u, const Point_nD< T, N > &v) const
HPoint_nD< T, N > firstD (T u) const
HPoint_nD< T, N > firstD (T u, int span) const
Point_nD< T, N > firstDn (T u) const
Point_nD< T, N > firstDn (T u, int span) const
basisFun (T u, int i, int p=-1) const
void basisFuns (T u, int span, Vector< T > &N) const
void dersBasisFuns (int n, T u, int span, Matrix< T > &N) const
minKnot () const
maxKnot () const
int findSpan (T u) const
void findMultSpan (T u, int &r, int &s) const
int findMult (int r) const
int findKnot (T u) const
getRemovalBnd (int r, int s) const
void removeKnot (int r, int s, int num)
void removeKnotsBound (const Vector< T > &ub, Vector< T > &ek, T E)
int knotInsertion (T u, int r, NurbsCurve< T, N > &nc)
void refineKnotVector (const Vector< T > &X)
void refineKnotVectorClosed (const Vector< T > &X)
void mergeKnotVector (const Vector< T > &Um)
void clamp ()
void unclamp ()
int leastSquares (const Vector< Point_nD< T, N > > &Q, int degC, int n)
int leastSquares (const Vector< Point_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub)
int leastSquaresH (const Vector< HPoint_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub)
int leastSquares (const Vector< Point_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub, const Vector< T > &knot)
int leastSquaresH (const Vector< HPoint_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub, const Vector< T > &knot)
int leastSquaresClosed (const Vector< Point_nD< T, N > > &Q, int degC, int n)
int leastSquaresClosed (const Vector< Point_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub)
int leastSquaresClosedH (const Vector< HPoint_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub)
int leastSquaresClosed (const Vector< Point_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub, const Vector< T > &knot)
int leastSquaresClosedH (const Vector< HPoint_nD< T, N > > &Q, int degC, int n, const Vector< T > &ub, const Vector< T > &knot)
void globalApproxErrBnd (Vector< Point_nD< T, N > > &Q, int deg, T E)
void globalApproxErrBnd (Vector< Point_nD< T, N > > &Q, Vector< T > &ub, int deg, T E)
void globalApproxErrBnd2 (Vector< Point_nD< T, N > > &Q, int degC, T E)
void globalApproxErrBnd3 (Vector< Point_nD< T, N > > &Q, int degC, T E)
void globalApproxErrBnd3 (Vector< Point_nD< T, N > > &Q, const Vector< T > &ub, int degC, T E)
void globalInterp (const Vector< Point_nD< T, N > > &Q, int d)
void globalInterp (const Vector< Point_nD< T, N > > &Q, const Vector< T > &ub, int d)
void globalInterpH (const Vector< HPoint_nD< T, N > > &Q, int d)
void globalInterpH (const Vector< HPoint_nD< T, N > > &Q, const Vector< T > &U, int d)
void globalInterpH (const Vector< HPoint_nD< T, N > > &Q, const Vector< T > &ub, const Vector< T > &U, int d)
void globalInterpClosed (const Vector< Point_nD< T, N > > &Qw, int d)
void globalInterpClosed (const Vector< Point_nD< T, N > > &Qw, const Vector< T > &ub, int d)
void globalInterpClosedH (const Vector< HPoint_nD< T, N > > &Qw, int d)
void globalInterpClosedH (const Vector< HPoint_nD< T, N > > &Qw, const Vector< T > &U, int d)
void globalInterpClosedH (const Vector< HPoint_nD< T, N > > &Qw, const Vector< T > &ub, const Vector< T > &U, int d)
void globalInterpClosed (const Vector< Point_nD< T, N > > &Qw, const Vector< T > &ub, const Vector< T > &Uc, int d)
void globalInterpD (const Vector< Point_nD< T, N > > &Q, const Vector< Point_nD< T, N > > &D, int d, int unitD, T a=1.0)
void projectTo (const Point_nD< T, N > &p, T guess, T &u, Point_nD< T, N > &r, T e1=0.001, T e2=0.001, int maxTry=100) const
length (T eps=0.001, int n=100) const
lengthIn (T us, T ue, T eps=0.001, int n=100) const
lengthF (T) const
lengthF (T, int) const
void makeCircle (const Point_nD< T, N > &O, const Point_nD< T, N > &X, const Point_nD< T, N > &Y, T r, double as, double ae)
void makeCircle (const Point_nD< T, N > &O, T r, double as, double ae)
void makeCircle (const Point_nD< T, N > &O, T r)
void makeLine (const Point_nD< T, N > &P0, const Point_nD< T, N > &P1, int d)
virtual void degreeElevate (int t)
void decompose (NurbsCurveArray< T, N > &c) const
void decomposeClosed (NurbsCurveArray< T, N > &c) const
int splitAt (T u, NurbsCurve< T, N > &cl, NurbsCurve< T, N > &cu) const
int mergeOf (const NurbsCurve< T, N > &cl, const NurbsCurve< T, N > &cu)
void transform (const MatrixRT< T > &A)
void modCP (int i, const HPoint_nD< T, N > &a)
void modCPby (int i, const HPoint_nD< T, N > &a)
virtual void modKnot (const Vector< T > &knotU)
int movePoint (T u, const Point_nD< T, N > &delta)
int movePoint (T u, const BasicArray< Point_nD< T, N > > &delta)
int movePoint (const BasicArray< T > &ur, const BasicArray< Point_nD< T, N > > &D)
int movePoint (const BasicArray< T > &ur, const BasicArray< Point_nD< T, N > > &D, const BasicArray_INT &Dr, const BasicArray_INT &Dk)
int movePoint (const BasicArray< T > &ur, const BasicArray< Point_nD< T, N > > &D, const BasicArray_INT &Dr, const BasicArray_INT &Dk, const BasicArray_INT &fixCP)
void setTangent (T u, const Point_nD< T, N > &T0)
void setTangentAtEnd (const Point_nD< T, N > &T0, const Point_nD< T, N > &T1)
int read (const char *)
int write (const char *) const
virtual int read (ifstream &fin)
int write (ofstream &fout) const
int writePS (const char *, int cp=0, T magFact=T(-1), T dash=T(5), bool bOpen=true) const
int writePSp (const char *, const Vector< Point_nD< T, N > > &, const Vector< Point_nD< T, N > > &, int cp=0, T magFact=0.0, T dash=5.0, bool bOpen=true) const
int writeVRML (ostream &fout, T radius, int K, const Color &color, int Nu, int Nv, T u_s, T u_e) const
int writeVRML (const char *filename, T radius, int K, const Color &color, int Nu, int Nv, T u_s, T u_e) const
int writeVRML (const char *filename, T radius=1, int K=5, const Color &color=whiteColor, int Nu=20, int Nv=20) const
int writeVRML (ostream &fout, T radius=1, int K=5, const Color &color=whiteColor, int Nu=20, int Nv=20) const
int writeVRML97 (const char *filename, T radius, int K, const Color &color, int Nu, int Nv, T u_s, T u_e) const
int writeVRML97 (ostream &fout, T radius, int K, const Color &color, int Nu, int Nv, T u_s, T u_e) const
int writeVRML97 (const char *filename, T radius=1, int K=5, const Color &color=whiteColor, int Nu=20, int Nv=20) const
int writeVRML97 (ostream &fout, T radius=1, int K=5, const Color &color=whiteColor, int Nu=20, int Nv=20) const
int writeDisplayLINE (const char *filename, int iNu, const Color &color=blueColor, T fA=1) const
int writeDisplayLINE (const char *filename, const Color &color, int iNu, T u_s, T u_e) const
void drawImg (Image_UBYTE &Img, unsigned char color=255, T step=0.01)
void drawImg (Image_Color &Img, const Color &color, T step=0.01)
void drawAaImg (Image_Color &Img, const Color &color, int precision=3, int alpha=1)
void drawAaImg (Image_Color &Img, const Color &color, const NurbsCurve< T, 3 > &profile, int precision=3, int alpha=1)
NurbsSurface< T, 3 > drawAaImg (Image_Color &Img, const Color &color, const NurbsCurve< T, 3 > &profile, const NurbsCurve< T, 3 > &scaling, int precision=3, int alpha=1)
BasicList< Point_nD< T, N > > tesselate (T tolerance, BasicList< T > *uk) const
template<>
Point_nD< double, 2 > normal (double u, const Point_nD< double, 2 > &v) const
template<>
void makeCircle (const Point_nD< double, 2 > &O, double r, double as, double ae)
template<>
int writeVRML (const char *filename, double radius, int K, const Color &color, int Nu, int Nv, double u_s, double u_e) const
template<>
int writeVRML97 (const char *filename, double radius, int K, const Color &color, int Nu, int Nv, double u_s, double u_e) const
template<>
int writeVRML (ostream &fout, double radius, int K, const Color &color, int Nu, int Nv, double u_s, double u_e) const
template<>
int writeVRML97 (ostream &fout, double radius, int K, const Color &color, int Nu, int Nv, double u_s, double u_e) const
template<>
void drawAaImg (Image_Color &Img, const Color &color, int precision, int alpha)
template<>
Point_nD< float, 2 > normal (float u, const Point_nD< float, 2 > &v) const
template<>
void makeCircle (const Point_nD< float, 2 > &O, float r, double as, double ae)
template<>
int writeVRML (const char *filename, float radius, int K, const Color &color, int Nu, int Nv, float u_s, float u_e) const
template<>
int writeVRML97 (const char *filename, float radius, int K, const Color &color, int Nu, int Nv, float u_s, float u_e) const
template<>
int writeVRML (ostream &fout, float radius, int K, const Color &color, int Nu, int Nv, float u_s, float u_e) const
template<>
int writeVRML97 (ostream &fout, float radius, int K, const Color &color, int Nu, int Nv, float u_s, float u_e) const
template<>
void drawAaImg (Image_Color &Img, const Color &color, int precision, int alpha)

Protected Attributes

Vector< HPoint_nD< T, N > > P
Vector< T > U
int deg_

Friends

HPoint_nD< T, N > C (T u, const NurbsCurve< T, N > &nurb)
Point_nD< T, N > Cp (T u, const NurbsCurve< T, N > &nurb)
void generateCompatibleCurves (NurbsCurveArray< T, N > &ca)

Detailed Description

template<class T, int N>
class PLib::NurbsCurve< T, N >

A NURBS curve class.

This class is used to represent and manipulate NURBS curve. The curves are composed of points in 4D. They can have any degree and have any number of control points.

Author:
Philippe Lavoie
Date:
4 Oct. 1996


Member Function Documentation

template<class T, int N>
const HPoint_nD<T,N> PLib::NurbsCurve< T, N >::ctrlPnts int  i  )  const [inline]
 

< a reference to one of the control points

template<class T, int N>
const Vector< HPoint_nD<T,N> >& PLib::NurbsCurve< T, N >::ctrlPnts  )  const [inline]
 

< a reference to the vector of control points

template<class T, int N>
int PLib::NurbsCurve< T, N >::degree  )  const [inline]
 

< a reference to the degree of the curve

template<class T, int N>
void PLib::NurbsCurve< T, N >::deriveAt u,
int  ,
Vector< Point_nD< T, N > > & 
const [virtual]
 

abstract function

Implements PLib::ParaCurve< T, N >.

template<class T, int N>
void PLib::NurbsCurve< T, N >::deriveAtH u,
int  ,
Vector< HPoint_nD< T, N > > & 
const [virtual]
 

abstract function

Implements PLib::ParaCurve< T, N >.

template<class T, int N>
HPoint_nD<T,N> PLib::NurbsCurve< T, N >::hpointAt u,
int  span
const [virtual]
 

abstract function

Implements PLib::ParaCurve< T, N >.

template<class T, int N>
HPoint_nD<T,N> PLib::NurbsCurve< T, N >::hpointAt u  )  const [inline]
 

< calls operator()

Reimplemented from PLib::ParaCurve< T, N >.

template<class T, int N>
T PLib::NurbsCurve< T, N >::knot int  i  )  const [inline]
 

< the i-th knot

template<class T, int N>
const Vector<T>& PLib::NurbsCurve< T, N >::knot  )  const [inline]
 

< a reference to the vector of knots

template<class T, int N>
T PLib::NurbsCurve< T, N >::maxKnot  )  const [inline, virtual]
 

< the maximal value for the knot vector

Implements PLib::ParaCurve< T, N >.

template<class T, int N>
T PLib::NurbsCurve< T, N >::minKnot  )  const [inline, virtual]
 

the minimal value for the knot vector

Implements PLib::ParaCurve< T, N >.

template<class T, int N>
virtual HPoint_nD<T,N> PLib::NurbsCurve< T, N >::operator() u  )  const [virtual]
 

abstract function

Implements PLib::ParaCurve< T, N >.


Friends And Related Function Documentation

template<class T, int N>
HPoint_nD<T,N> C u,
const NurbsCurve< T, N > &  nurb
[friend]
 

a function interface to operator()

template<class T, int N>
Point_nD<T,N> Cp u,
const NurbsCurve< T, N > &  nurb
[friend]
 

returns the curvePoint in 3D


The documentation for this class was generated from the following file:
Generated on Sat May 27 11:47:41 2006 for NURBS++ by  doxygen 1.4.6