All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Related Functions | List of all members
MBSim::NurbsSurface Class Reference

A class to represent a NURBS surface. More...

Public Member Functions

 NurbsSurface ()
 Default constructor. More...
 
 NurbsSurface (const NurbsSurface &nS)
 the copy constructor More...
 
const VecknotU () const
 < A reference to the U knot vector
 
const VecknotV () const
 < A reference to the V knot vector
 
double knotU (int i) const
 < Returns the i-th knot from U
 
double knotV (int i) const
 < Returns the i-th knot from V
 
const GeneralMatrix< Vec4 > & ctrlPnts () const
 < A reference to the control points
 
const fmatvec::Vec4 ctrlPnts (int i, int j) const
 < A reference to the control point at (i,j)
 
int degreeU () const
 < A reference to the degree in U of the surface
 
int degreeV () const
 < A reference to the degree in V of the surface
 
virtual NurbsSurfaceoperator= (const NurbsSurface &)
 NurbsSurface assignment. More...
 
void resize (int Pu, int Pv, int DegU, int DegV)
 Resize the surface. More...
 
fmatvec::HPoint< 3 > operator() (double u, double v) const
 Returns the point on the surface at u,v. More...
 
fmatvec::Point< 3 > pointAt (double u, double v) const
 Projects the point in the normal space. More...
 
void deriveAt (double u, double v, int d, GeneralMatrix< Vec3 > &skl) const
 Find the non-zero basis functions in the U and V direction. More...
 
void deriveAtH (double u, double v, int d, GeneralMatrix< Vec4 > &skl) const
 computes the point and the derivatives of degree d and below at (u,v) More...
 
Vec3 normal (double u, double v) const
 Computes the normal of the surface at (u,v) More...
 
void globalInterp (const GeneralMatrix< fmatvec::Vec3 > &Q, int DegU, int DegV)
 Generates a surface using global interpolation. More...
 
void globalInterp (const GeneralMatrix< fmatvec::Vec3 > &Q, const Vec &uk, const Vec &vk, int DegU, int DegV)
 Generates a surface using global interpolation. More...
 
void globalInterpClosedU (const GeneralMatrix< fmatvec::Vec3 > &Q, int DegU, int DegV)
 Generates a closed surface using global interpolation. More...
 
void globalInterpClosedU (const GeneralMatrix< fmatvec::Vec3 > &Q, const Vec &uk, const Vec &vk, int DegU, int DegV)
 Generates a closed surface using global interpolation. More...
 

Protected Member Functions

void findSpan (double u, double v, int spanU, int spanV) const
 Finds the multiplicity of a knot in the U knot. More...
 
int findSpanU (double u) const
 finds the span in the U direction More...
 
int findSpanV (double v) const
 finds the span in the V direction More...
 
int findMultU (int r) const
 
int findMultV (int r) const
 

Protected Attributes

fmatvec::Vec U
 the U knot vector
 
fmatvec::Vec V
 the V knot vector
 
GeneralMatrix< fmatvec::Vec4 > P
 The matrix of control points.
 
int degU
 the degree of the surface in U
 
int degV
 the degree of the surface in V
 
Mat InverseU
 The matrix for the computation of the control points in U-direction.
 
Mat InverseV
 The matrix for the computation of the control points in V-direction.
 

Related Functions

(Note that these are not member functions.)

int surfMeshParams (const GeneralMatrix< fmatvec::Vec3 > &Q, Vec &uk, Vec &vl)
 Computes the parameters for global surface interpolation. More...
 

Detailed Description

A class to represent a NURBS surface.

The NURBS surface is composed of points in homogenous space. It can have any degree in both the u and the v direction.

Constructor & Destructor Documentation

MBSim::NurbsSurface::NurbsSurface ( )

Default constructor.

Warning
The surface is initialized to invalid values. Use a reset or a read function to set them to correct values.
MBSim::NurbsSurface::NurbsSurface ( const NurbsSurface nS)

the copy constructor

Parameters
sthe NurbsSurface to copy

Member Function Documentation

void MBSim::NurbsSurface::deriveAt ( double  u,
double  v,
int  d,
GeneralMatrix< Vec3 > &  skl 
) const

Find the non-zero basis functions in the U and V direction.

Parameters
uthe u parametric value
vthe v parametric value
spanUthe span of u
spanVthe span of v
Nuthe vector containing the U non-zero basis functions
Nvthe vector containing the V non-zero basis functions
Author
Philippe Lavoie
Date
24 January, 1997

Finds the non-zero basis function in the U direction

Parameters
uthe u parametric value
spanthe span of u
Nthe vector containing the basis functions
Author
Philippe Lavoie
Date
24 January, 1997

Finds the non-zero basis function in the V direction

Parameters
vthe v parametric value
spanthe span of v
Nthe vector containing the basis functions
Author
Philippe Lavoie
Date
24 January, 1997

Computes the point and the derivatives of degree d and below at (u,v)

Computes the matrix of derivatives at u,v . The value of skl(k,l) represents the derivative of the surface S(u,v) with respect to u, k times and to v, l times.

Parameters
uthe u parametric value
vthe v parametric value
dthe derivative is computed up to and including to this value
sklthe matrix containing the derivatives
Author
Philippe Lavoie
Date
24 January, 1997
void MBSim::NurbsSurface::deriveAtH ( double  u,
double  v,
int  d,
GeneralMatrix< Vec4 > &  skl 
) const

computes the point and the derivatives of degree d and below at (u,v)

Computes the matrix of derivatives at u,v . The value of skl(k,l) represents the derivative of the surface S(u,v) with respect to u k times and to $v$ $l$ times.

Parameters
uthe u parametric value
vthe v parametric value
dthe derivative is computed up to and including to this value
sklthe matrix containing the derivatives
Author
Philippe Lavoie
Date
24 January, 1997
void MBSim::NurbsSurface::findSpan ( double  u,
double  v,
int  spanU,
int  spanV 
) const
protected

Finds the multiplicity of a knot in the U knot.

Parameters
rthe knot to observe
Returns
the multiplicity of the knot
Warning
r must be a valid U knot index
Author
Philippe Lavoie
Date
24 January, 1997

finds the multiplicity of a knot in the V knot

Parameters
rthe knot to observe
Returns
the multiplicity of the V knot
Warning
r must be a valid knot index
Author
Philippe Lavoie
Date
24 January, 1997

finds the span in the U and V direction

Finds the span in the U and V direction. The spanU is the index k for which the parameter u is valid in the [u_k,u_{k+1}] range. The spanV is the index k for which the parameter v is valid in the [v_k,v_{k+1}] range.

Parameters
ufind the U span for this parametric value
vfind the V span for this parametric value
spanUthe U span
spanVthe V span
Author
Philippe Lavoie
Date
24 January, 1997
int MBSim::NurbsSurface::findSpanU ( double  u) const
protected

finds the span in the U direction

Finds the span in the U direction. The span is the index k for which the parameter u is valid in the [u_k,u_{k+1}] range.

Parameters
u–> find the span for this parametric value
Returns
the span for u
Author
Philippe Lavoie
Date
24 January, 1997

20 January, 1999 (Alejandro Frangi)

int MBSim::NurbsSurface::findSpanV ( double  v) const
protected

finds the span in the V direction

Finds the span in the V direction. The span is the index k for which the parameter v is valid in the [v_k,v_{k+1}] range.

Parameters
vfind the span for this parametric value
Returns
the span for v
Author
Philippe Lavoie
Date
24 January, 1997 20 January, 1999 (Alejandro Frangi)
void MBSim::NurbsSurface::globalInterp ( const GeneralMatrix< fmatvec::Vec3 > &  Q,
int  DegU,
int  DegV 
)

Generates a surface using global interpolation.

Parameters
Qa matrix of 3D points
DegUthe degree of interpolation in the U direction
DegVthe degree of interpolation in the V direction
Author
Philippe Lavoie
Date
24 January, 1997
void MBSim::NurbsSurface::globalInterp ( const GeneralMatrix< fmatvec::Vec3 > &  Q,
const Vec uk,
const Vec vk,
int  DegU,
int  DegV 
)

Generates a surface using global interpolation.

Parameters
Qa matrix of 3D points
ukthe vector of lagrange parameters of the interpolated point in U direction
vkthe vector of lagrange parameters of the interpolated point in V direction
DegUthe degree of interpolation in the U direction
DegVthe degree of interpolation in the V direction
void MBSim::NurbsSurface::globalInterpClosedU ( const GeneralMatrix< fmatvec::Vec3 > &  Q,
int  DegU,
int  DegV 
)

Generates a closed surface using global interpolation.

Generates a NURBS surface using global interpolation. In the u direction the curve will be closed and with C(pU-1) continuity. Each column in Q indicates the points for a closed curve in the u direction. First and last point have to be equal.

Parameters
Qa matrix of 3D points (without repeated points)
pUthe degree of interpolation in the U direction
pVthe degree of interpolation in the V direction
Author
Alejandro Frangi
Date
30 June, 1998
void MBSim::NurbsSurface::globalInterpClosedU ( const GeneralMatrix< fmatvec::Vec3 > &  Q,
const Vec uk,
const Vec vk,
int  DegU,
int  DegV 
)

Generates a closed surface using global interpolation.

Generates a NURBS surface using global interpolation. In the u direction the curve will be closed and with C(pU-1) continuity. Each column in Q indicates the points for a closed curve in the u direction. First and last point have to be equal.

Parameters
Qa matrix of 3D points (without repeated points)
ukthe vector of lagrange parameters of the interpolated point in U direction
vkthe vector of lagrange parameters of the interpolated point in V direction
pUthe degree of interpolation in the U direction
pVthe degree of interpolation in the V direction
Vec3 MBSim::NurbsSurface::normal ( double  u,
double  v 
) const

Computes the normal of the surface at (u,v)

Parameters
uthe u parametric value
vthe v parametric value
Returns
the normal at (u,v) .
Author
Philippe Lavoie
Date
24 January, 1997
fmatvec::HPoint< 3 > MBSim::NurbsSurface::operator() ( double  u,
double  v 
) const

Returns the point on the surface at u,v.

Returns the point on the surface at u,v

Parameters
uthe u parametric value
vthe v parametric value
Returns
The homogenous point at u,v
Author
Philippe Lavoie
Date
24 January, 1997
NurbsSurface & MBSim::NurbsSurface::operator= ( const NurbsSurface nS)
virtual

NurbsSurface assignment.

Parameters
nSthe NURBS surface to copy
Author
Philippe Lavoie
Date
24 January, 1997
fmatvec::Point< 3 > MBSim::NurbsSurface::pointAt ( double  u,
double  v 
) const

Projects the point in the normal space.

< Projects the point in the normal space

void MBSim::NurbsSurface::resize ( int  Pu,
int  Pv,
int  DegU,
int  DegV 
)

Resize the surface.

Resize the surface. Proper values must be assigned once this function has been called since the resize operator is destructive.

Parameters
Puthe number of control points in the U direction
Pvthe number of control points in the V direction
DegUthe degree of the surface in the U direction
DegVthe degree of the surface in the V direction
Author
Philippe Lavoie
Date
24 January, 1997

Friends And Related Function Documentation

int surfMeshParams ( const GeneralMatrix< fmatvec::Vec3 > &  Q,
Vec uk,
Vec vl 
)
related

Computes the parameters for global surface interpolation.

Computes the parameters for global surface interpolation. For more information, see A9.3 on p377 on the NURBS book.

Parameters
Qthe matrix of 3D points
ukthe knot coefficients in the U direction
vlthe knot coefficients in the V direction
Returns
0 if an error occurs, 1 otherwise
Warning
Author
Philippe Lavoie
Date
24 January, 1997

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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML