Defines 3D B-Spline curve. More...
#include <cadex/ModelData_BSplineCurve.hxx>
Public Types | |
typedef cadex::internal::ModelData_BSplineCurveImpl | ImplType |
Public Member Functions | |
ModelData_BSplineCurve () | |
Constructor. | |
ModelData_BSplineCurve (const ModelData_Point thePoles[], int theNumberOfPoles, const double theKnots[], int theNumberOfKnots, const int theMultiplicities[], int theDegree, bool theIsPeriodic=false) | |
Constructor. | |
ModelData_BSplineCurve (const ModelData_Point thePoles[], const double thePoleWeights[], int theNumberOfPoles, const double theKnots[], int theNumberOfKnots, const int theMultiplicities[], int theDegree, bool theIsPeriodic=false) | |
Constructor. | |
ModelData_BSplineCurve (const Handle_C &) | |
Constructor. | |
int | Degree () const |
Returns degree. | |
int | NumberOfKnots () const |
Returns number of unique knots. | |
int | NumberOfPoles () const |
Returns number of poles. | |
double | Knot (int theIndex) const |
Returns a knot value. | |
int | Knots (double theKnots[]) const |
Populates a vector of knots. | |
int | Multiplicity (int theIndex) const |
Returns a knot multiplicity. | |
int | Multiplicities (int theMultiplicities[]) const |
Populates a vector of knot multiplicities. | |
ModelData_Point | Pole (int theIndex) const |
Returns a pole value. | |
int | Poles (ModelData_Point thePoles[]) const |
Populates a vector of poles. | |
bool | IsRational () const |
Returns true if the B-Spline curve is rational (i.e. has weights). | |
double | Weight (int theIndex) const |
Returns a weight value. | |
int | Weights (double theWeights[]) const |
Populates a vector of weights. | |
![]() | |
ModelData_Curve () | |
Constructor. | |
ModelData_Curve (const ModelData_Curve &theOther) | |
Constructor. | |
ModelData_Curve (ModelData_Curve &&theOther) | |
Constructor. | |
~ModelData_Curve () | |
Destructor. | |
ModelData_Curve & | operator= (const ModelData_Curve &theOther) |
Assignment operator. | |
ModelData_Curve & | operator= (ModelData_Curve &&theOther) |
Move assignment operator. | |
ModelData_CurveType | Type () const |
Returns a curve type. | |
bool | IsNull () const |
Returns true if the object has not been initialized yet. | |
void | Nullify () |
Resets the object. | |
operator bool () const | |
Returns if the object has been initialized. | |
bool | IsPeriodic () const |
Returns true if the curve is periodic. | |
double | UMin () const |
Returns a minimum parameter of a definition domain. | |
double | UMax () const |
Returns a maximum parameter of a definition domain. | |
void | Domain (double &theUMin, double &theUMax) const |
Returns a definition domain. | |
ModelData_Point | Value (double theParameter) const |
Evaluates a point on the curve. | |
ModelData_Curve | Reversed () const |
Returns a curve with reversed orientation. | |
void | Transform (const ModelData_Transformation &theTransformation) |
Applies transformation matrix to this object. | |
ModelData_Curve | Transformed (const ModelData_Transformation &theTransformation) const |
Returns a copy this object after applying transformation. | |
ModelData_Continuity | Continuity () const |
Returns a continuity type of the curve. | |
void | D0 (double theParameter, ModelData_Point &theValue) const |
Returns the point theValue of parameter theParam. | |
void | D1 (double theParameter, ModelData_Point &theValue, ModelData_Vector &theD1) const |
Returns the point theValue of parameter theParam and the first derivative theD1. | |
void | D2 (double theParameter, ModelData_Point &theValue, ModelData_Vector &theD1, ModelData_Vector &theD2) const |
Returns the point theValue of parameter theParam, the first theD1 and second theD2 derivatives. | |
bool | DN (double theParameter, size_t theDerivativeOrder, ModelData_Point &theValue, ModelData_Vector theD[]) const |
double | Curvature (double theParameter) const |
Returns the curvature value of parameter theParam. | |
void | Normal (double theParameter, ModelData_Direction &theNormal) const |
Returns the normal direction theNormal of parameter theParam. | |
void | Mirror (const ModelData_Point &thePoint) |
Mirrors the curve relative to the point. | |
void | Mirror (const ModelData_Axis1Placement &theAxis) |
Mirrors the curve relative to the axis placement. | |
void | Mirror (const ModelData_Axis2Placement &theAxis) |
Mirrors the curve relative to the axis placement. | |
ModelData_Curve | Mirrored (const ModelData_Point &theRef) const |
Returns a copy this curve mirrored along the object. | |
ModelData_Curve | Mirrored (const ModelData_Axis1Placement &theAxis) const |
Returns a copy this curve mirrored along the object. | |
ModelData_Curve | Mirrored (const ModelData_Axis2Placement &theAxis) const |
Returns a copy this curve mirrored along the object. | |
void | Rotate (const ModelData_Axis1Placement &theAxis, double theAngle) |
Rotates the curve around the axis. | |
ModelData_Curve | Rotated (const ModelData_Axis1Placement &theAxis, double theAngle) const |
Returns a copy this curve rotated along the axis. | |
void | Translate (const ModelData_Vector &theVector) |
Translates the curve along the vector. | |
ModelData_Curve | Translated (const ModelData_Vector &theVector) const |
Returns a copy this curve translated along the vector. | |
void | Scale (const ModelData_Point &thePoint, double theScale) |
Scales the curve with respect to the point. | |
ModelData_Curve | Scaled (const ModelData_Point &thePoint, double theScale) const |
Returns a copy this curve scaled with respect to the point. | |
Public Attributes | |
operator Handle_C const | |
![]() | |
operator Handle_C const | |
Defines 3D B-Spline curve.
B-Spline curve is defined by degree, control points (poles), their weights, unique knots and their multiplicities. The following image depicts an example of a B-Spline curve:
For introduction to and mathematical definition of NURBS please refer to external resources, for instance:
A rational B-Spline contains an explicit vector of weights, whereas polynomial does not.
The number of poles must equal the number of weights. The number of poles is defined via the following formulas:
B-Splines of degree up to 25 are supported.
|
inline |
Constructor.
Empty constructor.
cadex::ModelData_BSplineCurve::ModelData_BSplineCurve | ( | const ModelData_Point | thePoles[], |
int | theNumberOfPoles, | ||
const double | theKnots[], | ||
int | theNumberOfKnots, | ||
const int | theMultiplicities[], | ||
int | theDegree, | ||
bool | theIsPeriodic = false |
||
) |
Constructor.
Creates a polynomial B-Spline curve.
Parameters:
theNumberOfPoles must meet the requirements described above.
cadex::ModelData_BSplineCurve::ModelData_BSplineCurve | ( | const ModelData_Point | thePoles[], |
const double | thePoleWeights[], | ||
int | theNumberOfPoles, | ||
const double | theKnots[], | ||
int | theNumberOfKnots, | ||
const int | theMultiplicities[], | ||
int | theDegree, | ||
bool | theIsPeriodic = false |
||
) |
Constructor.
Creates a rational B-Spline curve.
Parameters:
theNumberOfPoles must meet the requirements described above.
Poles are to be provided after division by their weights.
int cadex::ModelData_BSplineCurve::Degree | ( | ) | const |
Returns degree.
Returns the value specified in the constructor.
bool cadex::ModelData_BSplineCurve::IsRational | ( | ) | const |
Returns true if the B-Spline curve is rational (i.e. has weights).
double cadex::ModelData_BSplineCurve::Knot | ( | int | theIndex | ) | const |
int cadex::ModelData_BSplineCurve::Knots | ( | double | theKnots[] | ) | const |
Populates a vector of knots.
theKnots must point to a buffer in memory with at least NumberOfKnots() preallocated values.
Returns NumberOfKnots().
int cadex::ModelData_BSplineCurve::Multiplicities | ( | int | theMultiplicities[] | ) | const |
Populates a vector of knot multiplicities.
theMultiplicities must point to a buffer in memory with at least NumberOfKnots() preallocated values.
Returns NumberOfKnots().
int cadex::ModelData_BSplineCurve::Multiplicity | ( | int | theIndex | ) | const |
int cadex::ModelData_BSplineCurve::NumberOfKnots | ( | ) | const |
Returns number of unique knots.
Returns the value specified in the constructor.
int cadex::ModelData_BSplineCurve::NumberOfPoles | ( | ) | const |
Returns number of poles.
Returns the value specified in the constructor.
ModelData_Point cadex::ModelData_BSplineCurve::Pole | ( | int | theIndex | ) | const |
int cadex::ModelData_BSplineCurve::Poles | ( | ModelData_Point | thePoles[] | ) | const |
Populates a vector of poles.
thePoles must point to a buffer in memory with at least NumberOfPoles() preallocated values.
Returns NumberOfPoles().
double cadex::ModelData_BSplineCurve::Weight | ( | int | theIndex | ) | const |
Returns a weight value.
theIndex must be in the range [1, NumberOfPoles()].
For polynomial B-Spline behavior is undefined.
int cadex::ModelData_BSplineCurve::Weights | ( | double | theWeights[] | ) | const |
Populates a vector of weights.
theWeights must point to a buffer in memory with at least NumberOfPoles() preallocated values.
Returns NumberOfPoles().
For polynomial B-Spline does nothing and returns 0.