hp2FEM
0.1
|
#include <NURBSSurface.h>
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} () |
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.
Matrix NURBSSurface::CoordsX [protected] |
X-coordinates of control points. @ ## begin NURBSSurface::CoordsX%39DA09DF0115.attr preserve=no protected: Matrix {UA} ()
## Attribute: CoordsX%39DA09DF0115
Matrix NURBSSurface::CoordsY [protected] |
X-coordinates of control points. @ ## begin NURBSSurface::CoordsY%39DA09EE0384.attr preserve=no protected: Matrix {UA} ()
## Attribute: CoordsY%39DA09EE0384
Matrix NURBSSurface::CoordsZ [protected] |
Z-coordinates of control points. @ ## begin NURBSSurface::CoordsZ%39DA09F50044.attr preserve=no protected: Matrix {UA} ()
## Attribute: CoordsZ%39DA09F50044
BuiltInArray<double> NURBSSurface::KnotVectU [protected] |
Knot vector in the parametric direction u. @ ## begin NURBSSurface::KnotVectU%39DA095F032E.attr preserve=no protected: BuiltInArray<double> {UA} ()
## Attribute: KnotVectU%39DA095F032E
BuiltInArray<double> NURBSSurface::KnotVectV [protected] |
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)
Matrix NURBSSurface::Weights [protected] |
Weights of control points. @ ## begin NURBSSurface::Weights%39DA09C20308.attr preserve=no protected: Matrix {UA} ()
## Attribute: Weights%39DA09C20308