#include <nurbs.h>
Inheritance diagram for PLib::NurbsCurve< T, N >:
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 |
T | 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 NurbsCurve & | operator= (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 |
T | 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 |
T | minKnot () const |
T | 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 |
T | 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 |
T | length (T eps=0.001, int n=100) const |
T | lengthIn (T us, T ue, T eps=0.001, int n=100) const |
T | lengthF (T) const |
T | 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) |
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.
int PLib::NurbsCurve< T, N >::degree | ( | ) | const [inline] |
< a reference to the degree of the curve
const Vector< HPoint_nD<T,N> >& PLib::NurbsCurve< T, N >::ctrlPnts | ( | ) | const [inline] |
< a reference to the vector of control points
const HPoint_nD<T,N> PLib::NurbsCurve< T, N >::ctrlPnts | ( | int | i | ) | const [inline] |
< a reference to one of the control points
const Vector<T>& PLib::NurbsCurve< T, N >::knot | ( | ) | const [inline] |
< a reference to the vector of knots
T PLib::NurbsCurve< T, N >::knot | ( | int | i | ) | const [inline] |
< the i-th knot
virtual HPoint_nD<T,N> PLib::NurbsCurve< T, N >::operator() | ( | T | u | ) | const [virtual] |
abstract function
Implements PLib::ParaCurve< T, N >.
HPoint_nD<T,N> PLib::NurbsCurve< T, N >::hpointAt | ( | T | u | ) | const [inline] |
HPoint_nD<T,N> PLib::NurbsCurve< T, N >::hpointAt | ( | T | u, | |
int | span | |||
) | const [virtual] |
void PLib::NurbsCurve< T, N >::deriveAtH | ( | T | u, | |
int | , | |||
Vector< HPoint_nD< T, N > > & | ||||
) | const [virtual] |
void PLib::NurbsCurve< T, N >::deriveAt | ( | T | u, | |
int | , | |||
Vector< Point_nD< T, N > > & | ||||
) | const [virtual] |
T PLib::NurbsCurve< T, N >::minKnot | ( | ) | const [inline, virtual] |
T PLib::NurbsCurve< T, N >::maxKnot | ( | ) | const [inline, virtual] |
HPoint_nD<T,N> C | ( | T | u, | |
const NurbsCurve< T, N > & | nurb | |||
) | [friend] |
a function interface to operator()
Point_nD<T,N> Cp | ( | T | u, | |
const NurbsCurve< T, N > & | nurb | |||
) | [friend] |
returns the curvePoint in 3D