Defines 3D Bezier curve. More...
#include <cadex/ModelData_BezierCurve.hxx>
Public Types | |
typedef cadex::internal::ModelData_BezierCurveImpl | ImplType |
Public Member Functions | |
ModelData_BezierCurve () | |
Constructor. | |
ModelData_BezierCurve (const ModelData_Point thePoles[], int theNumberOfPoles) | |
Constructor. | |
ModelData_BezierCurve (const ModelData_Point thePoles[], const double thePoleWeights[], int theNumberOfPoles) | |
Constructor. | |
ModelData_BezierCurve (const Handle_C &) | |
Constructor. | |
int | Degree () const |
Returns degree. | |
int | NumberOfPoles () const |
Returns number of poles. | |
ModelData_Point | Pole (const int theIndex) const |
Returns a pole value. | |
int | Poles (ModelData_Point thePoles[]) const |
Populates a vector of poles. | |
double | Weight (const 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 Bezier curve.
Bezier curve is defined by control points (poles) and their weights. The following image depicts an example of a Bezier curve:
For introduction to and mathematical definition of Bezier curve please refer to external resources, for instance:
A rational Bezier curve contains an explicit vector of weights, whereas polynomial does not.
The curve degree equals number of poles minus one. Degree up to 25 is supported.
The Bezier curve is always considered non-periodic.
|
inline |
Constructor.
Empty constructor.
cadex::ModelData_BezierCurve::ModelData_BezierCurve | ( | const ModelData_Point | thePoles[], |
int | theNumberOfPoles | ||
) |
Constructor.
Creates a polynomial Bezier curve.
theNumberOfPoles defines the length of thePoles and must belong to [2, 26]. Created curve has a degree equal to theNumberOfPoles - 1.
cadex::ModelData_BezierCurve::ModelData_BezierCurve | ( | const ModelData_Point | thePoles[], |
const double | thePoleWeights[], | ||
int | theNumberOfPoles | ||
) |
Constructor.
Creates a rational Bezier curve.
theNumberOfPoles defines the length of thePoles and thePoleWeights and must belong to [2, 26]. Created curve has a degree equal to theNumberOfPoles - 1.
Poles are to be provided after division by their weights.
int cadex::ModelData_BezierCurve::Degree | ( | ) | const |
Returns degree.
Returns the value equal to NumberOfPoles() - 1.
int cadex::ModelData_BezierCurve::NumberOfPoles | ( | ) | const |
Returns number of poles.
Returns the value specified in the constructor.
ModelData_Point cadex::ModelData_BezierCurve::Pole | ( | const int | theIndex | ) | const |
int cadex::ModelData_BezierCurve::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_BezierCurve::Weight | ( | const int | theIndex | ) | const |
Returns a weight value.
theIndex must be in the range [1, NumberOfPoles()].
For polynomial Bezier behavior is undefined.
int cadex::ModelData_BezierCurve::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 Bezier does nothing and returns 0.