hp2FEM  0.1
Public Member Functions | Protected Member Functions | Protected Attributes
NURBSSurface Class Reference

Class NURBSSurface. More...

#include <NURBSSurface.h>

Collaboration diagram for NURBSSurface:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 NURBSSurface ()
 Default constructor.
 ~NURBSSurface ()
 Destructor.
void Save (FILE *File)
 Writes class information to a binary file. The current object state can be completely recovered when applying the Restore() operation.
void Restore (FILE *File)
 Restores class data (written using Save()) from a binary file.
void Read (FILE *File)
 Reads class data from an ASCII file in FEAWEB format.
void Print (FILE *File=stdout)
 Prints class information in an ASCII file.
void Free ()
 Releases the memory allocated for the class attributes.
void SetNumber (long number)
 Sets the external number of this surface.
long GetNumber ()
 Returns the external number of this surface.
void SetOrders (long orderu, long orderv)
 Sets the order of the NURBS basis functions in both parametric directions.
void GetOrder (long &orderu, long &orderv)
 Returns the order of the NURBS basis functions in both parametric directions.
void SetNumberOfCPs (long NCPu, long NCPv)
 Sets the number of control points and adjust the size of the correspondent data structures.
void GetNumberOfCPs (unsigned long &NCPu, unsigned long &NCPv)
 Returns the number of control points in each parametric direction.
void SetKnotVectors (BuiltInArray< double > &KnotU, BuiltInArray< double > &KnotV)
 Sets the knot vectors in both parametric directions using external values.
void SetOpenUniformKnotVectors ()
 Initializes the knot vectors as open knot vectors in two parametric directions.
double * GetCPCoords (long CpU, long CpV)
 Returns a pointer to the coordinates of the control point (CpU, CpV).
double GetWeight (long CpU, long CpV)
 Returns the weight of the control point (CpU, CpV).
void SetCPData (Matrix &X, Matrix &Y, Matrix &Z, Matrix &W)
 Sets the data of all control points.
void GetCPData (Matrix &X, Matrix &Y, Matrix &Z, Matrix &W)
 Returns the data of all control points.
void SetCPData (long CpU, long CpV, Variable_Defs_E VarType, double Value)
 Sets the data of the control point (Cpu, Cpv).
double EvalRBSplineBasisFunction (long CpU, long CpV, double u, double v)
 Returns the value of the rational basis function (CpU, CpV) at the parametric coordinate (u, v).
void SetParametricCoordinates (double *ParametricCoordinates, long *const BoundaryNodes, long NumNodes, Nodes &NN)
 Finds the parametric coordinates of the nodes on this surface.
void SetParametricCoordinates (double &u, double &v, double *pCoordsi)
 Finds the parametric coordinates (uu,vv) of a point with coordinates *pCoordsi placed on this surface.

Protected Member Functions

void EvalRBSplineBasisFunctions (double u, double v)
 Evaluate rational basis functions and their derivatives relative to u and v at (u, v) and stores those values in class' attributes.

Protected Attributes

long OrderU
 Order of this surface in the parametric direction u. @.
long OrderV
 Order of this surface in the parametric direction v. @.
BuiltInArray< double > KnotVectU
 Knot vector in the parametric direction u. @ ## begin NURBSSurface::KnotVectU%39DA095F032E.attr preserve=no protected: BuiltInArray<double> {UA} ()
BuiltInArray< double > KnotVectV
 Knot vector in the parametric direction v. @ ## begin NURBSSurface::KnotVectV%39DA097A002A.attr preserve=no protected: BuiltInArray<double> {UA} ()
Matrix Weights
 Weights of control points. @ ## begin NURBSSurface::Weights%39DA09C20308.attr preserve=no protected: Matrix {UA} ()
Matrix CoordsX
 X-coordinates of control points. @ ## begin NURBSSurface::CoordsX%39DA09DF0115.attr preserve=no protected: Matrix {UA} ()
Matrix CoordsY
 X-coordinates of control points. @ ## begin NURBSSurface::CoordsY%39DA09EE0384.attr preserve=no protected: Matrix {UA} ()
Matrix CoordsZ
 Z-coordinates of control points. @ ## begin NURBSSurface::CoordsZ%39DA09F50044.attr preserve=no protected: Matrix {UA} ()

Detailed Description

Class NURBSSurface.


Member Function Documentation

void NURBSSurface::Read ( FILE *  File)

Reads class data from an ASCII file in FEAWEB format.

See the document "FEAWEB ASCII File Format" for details. Observe that the control points must be specified in the same fashion used for curves. Gid lists the control points in the transposed order.

void NURBSSurface::SetKnotVectors ( BuiltInArray< double > &  KnotU,
BuiltInArray< double > &  KnotV 
)

Sets the knot vectors in both parametric directions using external values.

The purpose of this operation is to allow the specification of non-uniform knot vectors. Observe that the values of the knot vectors must be normalized by their maximum value.

void NURBSSurface::SetParametricCoordinates ( double *  ParametricCoordinates,
long *const  BoundaryNodes,
long  NumNodes,
Nodes NN 
)

Finds the parametric coordinates of the nodes on this surface.

Newton-Raphson iterations are used for this task.


Member Data Documentation

X-coordinates of control points. @ ## begin NURBSSurface::CoordsX%39DA09DF0115.attr preserve=no protected: Matrix {UA} ()

## Attribute: CoordsX%39DA09DF0115

X-coordinates of control points. @ ## begin NURBSSurface::CoordsY%39DA09EE0384.attr preserve=no protected: Matrix {UA} ()

## Attribute: CoordsY%39DA09EE0384

Z-coordinates of control points. @ ## begin NURBSSurface::CoordsZ%39DA09F50044.attr preserve=no protected: Matrix {UA} ()

## Attribute: CoordsZ%39DA09F50044

Knot vector in the parametric direction u. @ ## begin NURBSSurface::KnotVectU%39DA095F032E.attr preserve=no protected: BuiltInArray<double> {UA} ()

## Attribute: KnotVectU%39DA095F032E

Knot vector in the parametric direction v. @ ## begin NURBSSurface::KnotVectV%39DA097A002A.attr preserve=no protected: BuiltInArray<double> {UA} ()

## Attribute: KnotVectV%39DA097A002A

long NURBSSurface::OrderU [protected]

Order of this surface in the parametric direction u. @.

## Attribute: OrderU%3728AC5601F0

the In the notation of DF_Rogers1990, order=degree+1. @ ## begin NURBSSurface::OrderU%3728AC5601F0.attr preserve=no protected: long {VA} (0)

long NURBSSurface::OrderV [protected]

Order of this surface in the parametric direction v. @.

## Attribute: OrderV%3728AC5601F1

the In the notation of DF_Rogers1990, order=degree+1. @ ## begin NURBSSurface::OrderV%3728AC5601F1.attr preserve=no protected: long {VA} (0)

Weights of control points. @ ## begin NURBSSurface::Weights%39DA09C20308.attr preserve=no protected: Matrix {UA} ()

## Attribute: Weights%39DA09C20308


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables Typedefs Friends Defines