Base class for 3D curves. More...
#include <cadex/Geom/Curve.hxx>
Public Member Functions | |
Curve () | |
Constructor. | |
CurveType | Type () const |
Geom::Continuity | Continuity () const |
Returns a continuity type of the curve. | |
Point | Value (double theParameter) const |
Evaluates a point on the curve. | |
Direction | Normal (double theParameter) const |
Returns the normal direction theNormal of parameter theParam. | |
double | Curvature (double theParameter) const |
Returns the curvature value of parameter theParam. | |
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. | |
bool | IsTrimmed () const |
Returns whether curve is trimmed or not. | |
void | SetTrim (double theFirst, double theLast) |
Trims curve with [theFirst, theLast] section. | |
void | Transform (const Transformation &theTransformation) |
Applies transformation matrix to this object. | |
Curve | Transformed (const Transformation &theTransformation) const |
Returns a copy this object after applying transformation. | |
void | D0 (double theParameter, Point &theValue) const |
Returns the point theValue of parameter theParam. | |
void | D1 (double theParameter, Point &theValue, Vector &theD1) const |
Returns the point theValue of parameter theParam and the first derivative theD1. | |
void | D2 (double theParameter, Point &theValue, Vector &theD1, Vector &theD2) const |
Returns the point theValue of parameter theParam, the first theD1 and second theD2 derivatives. | |
bool | DN (double theParameter, size_t theDerivativeOrder, Geom::Point &theValue, std::vector< Geom::Vector > &theD) const |
void | Mirror (const Point &thePoint) |
void | Mirror (const Axis1d &theAxis) |
void | Mirror (const Axis3d &theAxis) |
Curve | Mirrored (const Point &theRef) const |
Curve | Mirrored (const Axis1d &theAxis) const |
Curve | Mirrored (const Axis3d &theAxis) const |
void | Rotate (const Axis1d &theAxis, double theAngle) |
Curve | Rotated (const Axis1d &theAxis, double theAngle) const |
void | Translate (const Vector &theVector) |
Curve | Translated (const Vector &theVector) const |
void | Scale (const Point &thePoint, double theScale) |
Curve | Scaled (const Point &thePoint, double theScale) const |
![]() | |
size_t | Id () const |
Return unique identifier of public object. | |
internal::BaseObjectImpl * | Impl () const |
bool | IsNull () const |
operator bool () const | |
template<typename T > | |
bool | IsOfType () const |
template<typename T > | |
T * | Impl () const |
Reserved for internal use. | |
Static Public Member Functions | |
static bool | CompareType (const BaseObject &theObject) |
![]() | |
static bool | CompareType (const BaseObject &theObject) |
Protected Member Functions | |
Curve (const ImplType &theImpl) | |
![]() | |
Geometry (const ImplType &theImpl) | |
![]() | |
BaseObject (const ImplType &theImpl) | |
Additional Inherited Members | |
![]() | |
typedef std::shared_ptr< internal::BaseObjectImpl > | ImplType |
Base class for 3D curves.
3D curves are used to represent curves in 3D space. Each non-degenerated edge must refer to a 3D curve.
Refer to Curve Types for the list of supported curve types. Type() returns a curve type as enumeration value which can be used to downcast to a respective subclass type, for instance:
Curve is defined using parametric definition as \(\mathbf{C}(t)\) where \(\mathbf{C}\) is a 3D radius-vector \((x,y,z)^\top\) and \(t\) is a parameter from a definition range \([a, b]\).
UMin() and UMax(), and Domain() return parametric definition range. Parametric range can be bounded (e.g. \([0, 2\pi]\) for a circle) or unbounded (e.g. \((-\infty, +\infty)\) for a line).
At any parameter \(t\) within a definition range, the curve can be evaluated as follows:
The following example demonstrates computation of a point on a line at parameter t=2:
If the curve is periodic (IsPeriodic() returns true) then the curve can be evaluated at any parameter t, otherwise behavior is undefined (e.g. an exception can be thrown or a weird value can be returned).
Continuity() returns continuity ( \(C^0\), \(C^1\), \(C^2\), \(C^N\)) of the curve, where \(C^0\) that only the curve itself is continuous, \(C^1\) - that the curve is continuous together with its first derivative, and so on.
The curve can be modified using the following operations:
void cadex::Geom::Curve::D0 | ( | double | theParameter, |
Point & | theValue ) const |
Returns the point theValue of parameter theParam.
Throws exception only for the OffsetCurve if it is not possible to compute the current point. For example when the first derivative on the basis curve and the offset direction are parallel.
Returns the point theValue of parameter theParam and the first derivative theD1.
Throws exception if the continuity of the curve is not \(C^1\).
void cadex::Geom::Curve::D2 | ( | double | theParameter, |
Point & | theValue, | ||
Vector & | theD1, | ||
Vector & | theD2 ) const |
Returns the point theValue of parameter theParam, the first theD1 and second theD2 derivatives.
Throws exception if the continuity of the curve is not \(C^2\).
bool cadex::Geom::Curve::DN | ( | double | theParameter, |
size_t | theDerivativeOrder, | ||
Geom::Point & | theValue, | ||
std::vector< Geom::Vector > & | theD ) const |
Returns true if calculation completed successfully. In this case theD contains values of the derivatives from 0 up to theDerivativeOrder. Otherwise returns false. May throw exception if the continuity of the curve is less than theDerivativeOrder.
Parameters:
void cadex::Geom::Curve::Domain | ( | double & | theUMin, |
double & | theUMax ) const |
void cadex::Geom::Curve::Transform | ( | const Transformation & | theTransformation | ) |
Applies transformation matrix to this object.
Results depends on the actual curve type.
Curve cadex::Geom::Curve::Transformed | ( | const Transformation & | theTransformation | ) | const |
Returns a copy this object after applying transformation.
The contents of this object is not modified.
CurveType cadex::Geom::Curve::Type | ( | ) | const |
Returns a curve type.
double cadex::Geom::Curve::UMax | ( | ) | const |
double cadex::Geom::Curve::UMin | ( | ) | const |