C3D Toolkit  Kernel - 117982, Vision - 2.9.2.2

Curve in three-dimensional space. More...

#include <curve3d.h>

+ Inheritance diagram for MbCurve3D:
+ Collaboration diagram for MbCurve3D:

Public Member Functions

virtual ~MbCurve3D ()
 Destructor.
 
virtual void Accept (Visitor &visitor)
 Implementation of a function initializing a visit of an object.
 
virtual MbResultType Extend (const MbCurveExtensionParameters3D &parameters, c3d::SpaceCurveSPtr &resCurve) const
 Extend the curve. More...
 
size_t size () const
 Size of curve interpreted as vector of curves.
 
const MbCurve3Doperator[] (size_t) const
 An access operator.
 
Common functions of a geometric object.
MbeSpaceType Type () const override
 Get the group object type.
 
MbeSpaceType Family () const override
 Get family of objects.
 
virtual MbCurve3DInverseDuplicate () const
 Create a copy with changed direction.
 
double DistanceToPoint (const MbCartPoint3D &) const override
 Determine the distance to the point. More...
 
void AddYourGabaritTo (MbCube &) const override
 Expand sent bounding box (a.k.a. gabarit), so that it included the object. More...
 
void Refresh () override
 Translate all the time (mutable) data objects in an inconsistent (initial) state.
 
virtual void PrepareIntegralData (const bool forced) const
 Calculate temporary (mutable) data of an object. More...
 
virtual bool IsSpaceSame (const MbSpaceItem &item, double eps=METRIC_REGION) const
 Are the objects identical in space?
 
Functions for curve domain description
virtual double GetTMax () const =0
 Get the maximum value of parameter.
 
virtual double GetTMin () const =0
 Get the minimum value of parameter.
 
virtual bool IsClosed () const =0
 Define whether the curve is periodic. More...
 
virtual double GetPeriod () const
 Return period. If a curve is not periodic then 0.
 
virtual bool IsPeriodic () const
 Define whether the curve is periodic. More...
 
bool IsTouch (double eps=Math::metricPrecision) const
 Determine whether a curve is closed regardless of the smoothness of the closure. More...
 
Functions for working in the curve's domain.\n

functions PointOn, FirstDer, SecondDer, ThirdDer,... correct parameter when it is out of domain bounds. The exception is MbLine3D (line).

virtual void PointOn (double &t, MbCartPoint3D &p) const =0
 Calculate a point on the curve. More...
 
virtual void FirstDer (double &t, MbVector3D &) const =0
 Calculate first derivative.
 
virtual void SecondDer (double &t, MbVector3D &) const =0
 Calculate second derivative.
 
virtual void ThirdDer (double &t, MbVector3D &) const =0
 Calculate third derivative.
 
virtual void Tangent (double &t, MbVector3D &) const
 Calculate tangent vector (normalized).
 
virtual void Normal (double &t, MbVector3D &) const
 Calculate main normal vector.
 
virtual void BNormal (double &t, MbVector3D &) const
 Calculate binormal vector.
 
Functions for working inside and outside the curve's domain\n

functions _PointOn, _FirstDer, _SecondDer, _ThirdDer,... do not correct parameter when it is out of domain bounds.

virtual void _PointOn (double t, MbCartPoint3D &p) const
 Calculate point at curve and its extension. More...
 
virtual void _FirstDer (double t, MbVector3D &) const
 Calculate first derivative at curve and its extension.
 
virtual void _SecondDer (double t, MbVector3D &) const
 Calculate second derivative at curve and its extension.
 
virtual void _ThirdDer (double t, MbVector3D &) const
 Calculate third derivative at curve and its extension.
 
virtual void _Tangent (double t, MbVector3D &) const
 Calculate tangent vector (normalized) at curve and its extension.
 
virtual void _Normal (double t, MbVector3D &) const
 Calculate main normal vector (normalized) at curve and its extension.
 
virtual void _BNormal (double t, MbVector3D &) const
 Calculate binormal vector (normalized) at curve and its extension.
 
virtual void Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const
 Calculate point and derivatives of object for given parameter. More...
 
virtual void FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const
 Calculate point and derivatives on the curve. More...
 
Function of moving by curve
virtual double Step (double t, double sag) const
 Calculate parameter step. More...
 
virtual double DeviationStep (double t, double ang) const
 Calculate parameter step. More...
 
virtual double MetricStep (double t, double length) const
 Calculate parameter step. More...
 
double CurveStep (const double &t, const MbStepData &stepData) const
 Calculate parameter step. More...
 
Common function of curve.
virtual void ResetTCalc () const
 Reset the current value of parameter.
 
virtual void Inverse (MbRegTransform *iReg=nullptr)=0
 Change direction of a curve.
 
virtual const MbCurve3DGetBasisCurve () const
 Returns the base curve if exists or itself.
 
virtual MbCurve3DSetBasisCurve ()
 Returns the base curve if exists or itself.
 
virtual double Curvature (double t) const
 Calculate curvature of curve.
 
virtual void ThirdMetricDer (double t, MbVector3D &vect) const
 Calculate second derivative of tangent.
 
MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo *nInfo=nullptr) const
 Construct a NURBS copy of a curve. More...
 
virtual MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo &nInfo) const
 Construct a NURBS copy of a curve. More...
 
virtual MbCurve3DNurbsCurve (const MbNurbsParameters &tParameters) const
 Construct a NURBS copy of a curve. More...
 
virtual size_t NurbsCurveMinPoints (const MbNurbsParameters &tParameters, double epsilon=c3d::METRIC_DELTA) const
 Define the number of knots of a NURBS curve which is required to approximate the curve with the given tolerance. More...
 
virtual MbCurve3DTrimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const
 Construct a trimmed curve. More...
 
virtual MbCurve3DTrimmed (double t1, double t2, int sense, const MbDimAccuracy &xyzEps, bool saveParamLenAndLaw) const
 Construct a trimmed curve with the given two-dimensional accuracy. More...
 
double GetParamLength () const
 Return the parametric length of a curve.
 
virtual double GetMetricLength () const
 Calculate the metric length of a curve.
 
virtual double CalculateMetricLength () const
 Calculate the metric length of a curve.
 
virtual double CalculateLength (double t1, double t2) const
 Calculate the metric length of a curve. More...
 
virtual bool DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const
 Translate parameter along the curve. More...
 
virtual double GetLengthEvaluation () const
 Calculate the metric length of a curve. More...
 
virtual void CalculateGabarit (MbCube &cube) const
 Calculate bounding box of a curve.
 
void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const override
 To compute bounding box in a local coordinate system. More...
 
virtual bool IsDegenerate (double eps=METRIC_PRECISION) const
 Check whether the curve is degenerated.calculate.
 
virtual bool IsStraight (bool ignoreParams=false) const
 Whether the line is straight?
 
virtual bool IsPlanar (double accuracy=METRIC_EPSILON) const
 Is a curve planar?
 
virtual bool IsSmoothConnected (double angleEps) const
 Are joints of contour/curve smooth?
 
virtual void ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init)
 Change the carrier. For surface curves.
 
virtual bool ChangeCarrierBorne (const MbSpaceItem &item, MbSpaceItem &init, const MbMatrix &matr)
 Change the carrier. More...
 
MbPropertyCreateProperty (MbePrompt name) const override
 Create your own property with the name.
 
void CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const override
 Build polygonal copy mesh. More...
 
virtual void CalculatePolygon (const MbStepData &stepData, MbPolygon3D &polygon) const
 Calculate an array of points for drawing. More...
 
virtual void GetCentre (MbCartPoint3D &) const
 Give the curve center.
 
virtual void GetWeightCentre (MbCartPoint3D &) const
 Give the gravity center of a curve.
 
virtual MbeNewtonResult PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &t, bool ext) const
 Find the point projection to the curve. More...
 
virtual bool NearPointProjection (const MbCartPoint3D &pnt, double &t, bool ext, MbRect1D *tRange=nullptr) const
 Find the point projection to the curve. More...
 
virtual MbeNewtonResult IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &t) const
 Find isoclines of a curve. More...
 
virtual void GetIsoclinal (const MbVector3D &nor, SArray< double > &tIso) const
 Find all isoclines of a curve. More...
 
virtual double DistanceToCurve (const MbCurve3D &curve2, double &t1, double &t2) const
 Calculate the nearest distance to a curve.
 
virtual double DistanceToPlace (const MbPlacement3D &place, double &t0, double &angle) const
 The nearest point of a curve by the placement.
 
virtual double GetRadius (double accuracy=METRIC_REGION) const
 Get the physical radius of the curve or zero if it impossible. More...
 
virtual bool GetCircleAxis (MbAxis3D &axis) const
 Get an axis of a circle which is geometrically coincident to the given curve. More...
 
virtual MbCurveGetMap (const MbMatrix3D &into, MbRect1D *pRegion=nullptr, VERSION version=Math::DefaultMathVersion(), bool *coincParams=nullptr) const
 Construct a planar projection of a piece of a space curve. More...
 
virtual MbCurveGetMapPsp (const MbMatrix3D &into, double zNear, MbRect1D *pRegion=nullptr) const
 Construct a planar projection of a piece of a space curve. More...
 
virtual MbCurveGetProjection (const MbPlacement3D &place, VERSION version) const
 Construct a planar projection of a space curve to a plane. More...
 
virtual size_t GetCount () const
 Define the number of splittings for one passage in operations.
 
void GetPointsByEvenParamDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const
 Get n points of a curve with equal intervals by parameter.
 
void GetPointsByEvenParamDelta (size_t n, SArray< MbCartPoint3D > &pnts) const
 
virtual void GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const
 Get n points of a curve with equal intervals by arc length.
 
void GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint3D > &pnts) const
 
void GetBasisPoints (MbControlData3D &) const override
 Get control points of object.
 
void SetBasisPoints (const MbControlData3D &) override
 Change the object by control points.
 
virtual bool IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const
 Have the first derivative of the curve the continuous length and direction? More...
 
virtual bool SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON)
 Eliminate the discontinuities of the first derivative at length. More...
 
bool IsSpaceNear (const MbCurve3D &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const
 Check whether the two curves are metrically close. More...
 
bool IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const
 Check whether a point is on a curve or not.
 
double GetTMid () const
 Return the middle of parametric range of a curve.
 
double GetTRange () const
 Return the parametric length of a curve.
 
MbCartPoint3D PointOn (double &t) const
 Calculate point on the curve.
 
MbVector3D FirstDer (double &t) const
 Calculate first derivative.
 
MbVector3D SecondDer (double &t) const
 Calculate second derivative.
 
MbVector3D ThirdDer (double &t) const
 Calculate third derivative.
 
virtual void GetCurvatureSpecialPoints (std::vector< c3d::DoublePair > &points) const
 Find all the special points of the curvature function of the curve. More...
 
virtual void GetAnalyticalFunctionsBounds (std::vector< double > &params) const
 Get the boundaries of the curve sections that are described by one analytical function. More...
 
virtual void BreakPoints (std::vector< double > &vBreaks, double precision=ANGLE_REGION) const
 \ ru Определение точек излома кривой. The determination of curve smoothness break points.
 
MbCartPoint3D GetLimitPoint (ptrdiff_t number) const
 Calculate the boundary point. More...
 
void GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const
 Calculate the boundary point. More...
 
MbVector3D GetLimitTangent (ptrdiff_t number) const
 Calculate a tangent vector to the boundary point. More...
 
void GetLimitTangent (ptrdiff_t number, MbVector3D &v) const
 Calculate a tangent vector to the boundary point. More...
 
bool AreLimitPointsEqual () const
 Are boundary points equal? More...
 
bool SetInParamRegion (double &t) const
 Move to the parametric region.
 
bool IsParamOn (double t, double eps) const
 Check whether a parameter is in the range of the curve.
 
bool IsInverseSame (const MbCurve3D &curve, double accuracy=LENGTH_EPSILON) const
 Whether an inversed curve is the same.
 
virtual bool IsReparamSame (const MbCurve3D &curve, double &factor) const
 Define whether a reparameterized curve is the same. More...
 
virtual double GetParamToUnit () const
 Get increment of parameter, corresponding to the unit length in space.
 
virtual double GetParamToUnit (double t) const
 Get increment of parameter, corresponding to the unit length in space.
 
double GetTEpsilon () const
 Get the minimum distinguishable value of parameter.
 
double GetTEpsilon (double t) const
 Get the minimum distinguishable value of parameter.
 
double GetTRegion () const
 Get the minimum distinguishable value of parameter.
 
double GetTRegion (double t) const
 Get the minimum distinguishable value of parameter.
 
double GetTRegion (double t, const MbDimAccuracy &xyzEps) const
 Get the minimum distinguishable value of parameter with the given three-dimensional accuracy according to parameter.
 
virtual const MbCurve3DGetSubstrate () const
 Get a substrate or itself.
 
virtual MbCurve3DSetSubstrate ()
 Get a substrate or itself.
 
virtual int SubstrateCurveDirection () const
 Direction of a substrate relative to a curve or vice versa.
 
virtual void SubstrateToCurve (double &) const
 Transform a substrate parameter to the curve parameter.
 
virtual void CurveToSubstrate (double &) const
 Transform a curve parameter to the substrate parameter.
 
virtual bool GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const
 Get planar curve and placement if the space curve is planar. More...
 
bool GetPlaneCurve (SPtr< MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const
 Get planar curve and placement if the space curve is planar. More...
 
bool GetPlaneCurve (SPtr< const MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const
 Get planar curve and placement if the space curve is planar. More...
 
virtual bool GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
bool GetSurfaceCurve (SPtr< MbCurve > &curve2d, SPtr< MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
bool GetSurfaceCurve (SPtr< const MbCurve > &curve2d, SPtr< const MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
virtual bool GetPlacement (MbPlacement3D &place, PlanarCheckParams params=PlanarCheckParams()) const
 Fill the placement if a curve is planar.
 
virtual bool IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const
 Is the object is a shift?
 
virtual bool IsSimilarToCurve (const MbCurve3D &other, double precision=METRIC_PRECISION) const
 Whether the curves to union (joining) are similar.
 
void CalculateGrid (double radius, const MbStepData &stepData, MbMesh &mesh) const
 Approximation of a curve by the flat tube with the given radius.
 
SimpleName GetCurveName () const
 A curve name.
 
void SetCurveName (SimpleName newName)
 Set a curve name.
 
- Public Member Functions inherited from MbSpaceItem
virtual ~MbSpaceItem ()
 Destructor.
 
void PrepareWrite () const
 Register object. More...
 
MbeRefType RefType () const override
 Get a registration type (for copying, duplication).
 
virtual MbeSpaceType IsA () const =0
 Get the type of the object.
 
bool IsFamilyRegistrable () const override
 Whether the object belongs to a registrable family.
 
virtual MbSpaceItemDuplicate (MbRegDuplicate *iReg=nullptr) const =0
 Create a copy of the object. More...
 
virtual void Transform (const MbMatrix3D &matr, MbRegTransform *iReg=nullptr)=0
 Convert the object according to the matrix. More...
 
virtual void Move (const MbVector3D &to, MbRegTransform *iReg=nullptr)=0
 Move an object along a vector. More...
 
virtual void Rotate (const MbAxis3D &axis, double angle, MbRegTransform *iReg=nullptr)=0
 Rotate an object around an axis at a given angle. More...
 
virtual bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const =0
 Determine whether an object is equal. More...
 
virtual bool IsSimilar (const MbSpaceItem &item) const
 Determine whether an object is similar. More...
 
virtual bool SetEqual (const MbSpaceItem &item)=0
 Make objects equal if they are similar. More...
 
virtual void GetProperties (MbProperties &properties)=0
 Outstanding properties of the object. More...
 
virtual void SetProperties (const MbProperties &properties)=0
 Change the properties of an object. More...
 
void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const
 
void CalculateWire (double sag, MbMesh &mesh) const
 
virtual void GetBasisItems (RPArray< MbSpaceItem > &)
 Outstanding reference objects in a container sent.
 
- Public Member Functions inherited from TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Constructor.
 
 TapeBase (const TapeBase &)
 Copy-constructor.
 
virtual ~TapeBase ()
 Destructor.
 
RegistrableRec GetRegistrable () const
 Whether the stream class is registrable.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Set the state of registration of the stream class.
 
virtual const char * GetPureName (const VersionContainer &) const
 Get the class name.
 
- Public Member Functions inherited from MbRefItem
refcount_t GetUseCount () const
 Get count of references (get count of owners of an object).
 
refcount_t AddRef () const
 Increase count of references by one.
 
refcount_t DecRef () const
 Decrease count of references by one.
 
refcount_t Release () const
 Decrease count of references by one and if count of references became zero, then remove itself.
 
- Public Member Functions inherited from MbNestSyncItem
void Lock () const
 Switch lock on (locking happens only in parallel region).
 
void Unlock () const
 Switch lock off if locking has been set.
 
CommonRecursiveMutexGetLock () const
 Get a pointer to the mutex object. Return nullptr if no parallelism. For use in ScopedLock.
 

Protected Member Functions

 MbCurve3D ()
 Default constructor.
 
 MbCurve3D (const MbCurve3D &other)
 Copy-constructor.
 
- Protected Member Functions inherited from MbSpaceItem
 MbSpaceItem ()
 Default constructor.
 
- Protected Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 

Protected Attributes

SimpleName name
 A curve name. The object data is temporary and used internally.
 

Detailed Description

Curve in three-dimensional space.

A curve in space is a vector function of a scalar parameter, which is set on a finite one-dimensional space. Coordinates of the point are single-valued continuous functions of curve parameter. A curve is continuous mapping from a piece of numeric axis to the three-dimensional space.
Curves are used to construct surfaces.
Normal to a curve is calculated taking into account curvature (second derivative).
For rectilinear curves it's a zero vector except for flat rectilinear curves, where it's perpendicular to a normal of curve plane.

Member Function Documentation

◆ DistanceToPoint()

double MbCurve3D::DistanceToPoint ( const MbCartPoint3D point) const
overridevirtual

Determine the distance to the point.

Determine the distance to the point.

Parameters
[in]point- Point.
Returns
Distance to point

Implements MbSpaceItem.

◆ AddYourGabaritTo()

void MbCurve3D::AddYourGabaritTo ( MbCube cube) const
overridevirtual

Expand sent bounding box (a.k.a. gabarit), so that it included the object.

Expand sent bounding box, so that it included the object.

Parameters
[in,out]cube- The bounding box to expand.

Implements MbSpaceItem.

◆ PrepareIntegralData()

virtual void MbCurve3D::PrepareIntegralData ( const bool  forced) const
virtual

Calculate temporary (mutable) data of an object.

Calculate the temporary data of an object depending of the "forced" parameter. Calculate only data that was not calculated earlier if parameter "forced" is equal false. Recalculate all temporary data of an object if parameter "forced" is equal true.

Parameters
[in]forced- Forced recalculation.

Reimplemented in MbTrimmedCurve3D, MbSurfaceIntersectionCurve, MbSurfaceCurve, MbSpiral, MbReparamCurve3D, MbPolyCurve3D, MbPlaneCurve, MbOffsetCurve3D, MbContourOnSurface, MbContour3D, MbCharacterCurve3D, and MbBridgeCurve3D.

◆ IsTouch()

bool MbCurve3D::IsTouch ( double  eps = Math::metricPrecision) const
inline

Determine whether a curve is closed regardless of the smoothness of the closure.

Determine whether a curve is actually closed regardless of the smoothness of the closure.

◆ NurbsCurve() [1/2]

MbNurbs3D* MbCurve3D::NurbsCurve ( const MbCurveIntoNurbsInfo nInfo = nullptr) const

Construct a NURBS copy of a curve.

Constructs a NURBS copy which approximates a given curve. If it is possible, constructs the accurate curve, perhaps with multiple knots. The number of knots for NURBS is defined depending on the curve.

Parameters
[in]nInfo- Parameters of conversion of a curve to NURBS.
Returns
The constructed NURBS curve or nullptr in a case of failure.

◆ NurbsCurve() [2/2]

virtual MbNurbs3D* MbCurve3D::NurbsCurve ( const MbCurveIntoNurbsInfo nInfo) const
virtual

Construct a NURBS copy of a curve.

Constructs a NURBS curve which approximates a given curve inside the range [t1, t2]. with a given direction. If it is possible, constructs the accurate curve, perhaps with multiple knots. The number of knots for NURBS is defined depending on the curve.

Parameters
[in]t1- Parameter corresponding to start of approximated part of a curve.
[in]t2- Parameter corresponding to end of approximated part of a curve.
[in]sense- Does the direction of parameter increasing along the NURBS curve coincide with direction of the initial curve. 'sense' > 0 - direction coincide.
[in]nInfo- Parameters of conversion of a curve to NURBS.
Returns
The constructed NURBS curve or nullptr in a case of failure.

Reimplemented in MbTrimmedCurve3D, MbSurfaceIntersectionCurve, MbSurfaceCurve, MbSpiral, MbReparamCurve3D, MbPolyline3D, MbPlaneCurve, MbNurbs3D, MbLineSegment3D, MbLine3D, MbHermit3D, MbCubicSpline3D, MbContourOnSurface, MbContour3D, MbConeSpiral, MbCharacterCurve3D, MbBridgeCurve3D, MbBezier3D, MbBSpline, and MbArc3D.

◆ NurbsCurveMinPoints()

virtual size_t MbCurve3D::NurbsCurveMinPoints ( const MbNurbsParameters tParameters,
double  epsilon = c3d::METRIC_DELTA 
) const
virtual

Define the number of knots of a NURBS curve which is required to approximate the curve with the given tolerance.

Define the number of knots of a NURBS curve which is required to approximate the curve with the given tolerance.

Parameters
[in]tParameters- Parameters for the construction of a NURBS copy of the curve.
[in]epsilon- The tolerance of approximation.
Returns
The constructed NURBS curve or nullptr in a case of failure.

◆ GetLengthEvaluation()

virtual double MbCurve3D::GetLengthEvaluation ( ) const
virtual

Calculate the metric length of a curve.

The length of a curve is inaccurately calculated, by approximation of polyline. If the more accurate curve's length is required, then use the function CalculateMetricLength().

Reimplemented in MbTrimmedCurve3D, MbSurfaceIntersectionCurve, MbSurfaceCurve, MbSpiral, MbSilhouetteCurve, MbReparamCurve3D, MbPolyCurve3D, MbPlaneCurve, MbLineSegment3D, MbContourOnSurface, MbContourOnPlane, MbCharacterCurve3D, and MbArc3D.

◆ CalculateLocalGabarit()

void MbCurve3D::CalculateLocalGabarit ( const MbMatrix3D into,
MbCube cube 
) const
overridevirtual

To compute bounding box in a local coordinate system.

To obtain bounding box of object with regar to a local coordinate system, sent box is made to be empty. Then it is computed bounding box of object in a local coordinate system \ and it is stored in box 'cube'

Parameters
[in]into- Transformation matrix from object's current coordinate system to a local coordinate system
[in,out]cube- Information on bounding box

Implements MbSpaceItem.

◆ CalculateMesh()

void MbCurve3D::CalculateMesh ( const MbStepData stepData,
const MbFormNote note,
MbMesh mesh 
) const
overridevirtual

Build polygonal copy mesh.

Build a polygonal copy of the object that is represented by polygons or/and fasets.

Parameters
[in]stepData- Data for еру step calculation for polygonal object.
[in]note- Way for polygonal object constructing.
[in,out]mesh- The builded polygonal object.

Implements MbSpaceItem.

◆ GetRadius()

virtual double MbCurve3D::GetRadius ( double  accuracy = METRIC_REGION) const
virtual

Get the physical radius of the curve or zero if it impossible.

Generally returns 0. A non-zero value may be obtained only when the curve is an arc or is equal to an arc with the set precision (METRIC_REGION by default). \params[in] accuracy - The maximum curve deviation from an arc (METRIC_REGION by default).

Returns
Radius value if it can be obtained or 0.0.

Reimplemented in MbTrimmedCurve3D, MbSurfaceIntersectionCurve, MbSurfaceCurve, MbReparamCurve3D, MbPlaneCurve, MbNurbs3D, MbContourOnPlane, MbContour3D, and MbArc3D.

◆ GetCircleAxis()

virtual bool MbCurve3D::GetCircleAxis ( MbAxis3D axis) const
virtual

Get an axis of a circle which is geometrically coincident to the given curve.

Get an axis of a circle which is geometrically coincident to the given curve.

Parameters
[out]axis- An axis with the origin at circle's center and direction along the normal of circle's plane.

Reimplemented in MbTrimmedCurve3D, MbSurfaceIntersectionCurve, MbSurfaceCurve, MbReparamCurve3D, MbPlaneCurve, MbNurbs3D, MbContourOnPlane, MbContour3D, and MbArc3D.

◆ IsContinuousDerivative()

virtual bool MbCurve3D::IsContinuousDerivative ( bool &  contLength,
bool &  contDirect,
c3d::DoubleVector params = nullptr,
double  epsilon = EPSILON 
) const
virtual

Have the first derivative of the curve the continuous length and direction?

Are absent any discontinuities at length or at direction of first derivative of the curve?

Parameters
[out]contLength- The length is continuous (true/false).
[out]contDirect- The direction of the first derivative is continuous (true/false).
[in]epsilon- The accuracy of the calculation.

Reimplemented in MbSurfaceCurve, MbReparamCurve3D, MbPolyline3D, MbPlaneCurve, MbOffsetCurve3D, MbNurbs3D, MbContourOnSurface, MbContour3D, and MbBezier3D.

◆ SetContinuousDerivativeLength()

virtual bool MbCurve3D::SetContinuousDerivativeLength ( VERSION  version,
double  epsilon = EPSILON 
)
virtual

Eliminate the discontinuities of the first derivative at length.

Eliminate the discontinuities of the first derivatives of the length.

Parameters
[in]epsilon- The accuracy of the calculation.
[in]version- Math version.

Reimplemented in MbSurfaceCurve, MbReparamCurve3D, MbPolyline3D, MbPlaneCurve, MbOffsetCurve3D, MbNurbs3D, MbContourOnSurface, MbContour3D, and MbBezier3D.

◆ GetLimitTangent() [1/2]

MbVector3D MbCurve3D::GetLimitTangent ( ptrdiff_t  number) const

Calculate a tangent vector to the boundary point.

Calculate a normalized tangent vector to the boundary point.

Parameters
[in]number- A number of a boundary point. The value 1 corresponds to the start point of a curve, 2 - to the end point.
Returns
Tangent vector.

◆ GetLimitTangent() [2/2]

void MbCurve3D::GetLimitTangent ( ptrdiff_t  number,
MbVector3D v 
) const

Calculate a tangent vector to the boundary point.

Calculate a normalized tangent vector to the boundary point.

Parameters
[in]number- A number of a boundary point. The value 1 corresponds to the start point of a curve, 2 - to the end point.
[in,out]v- Tangent vector.

◆ AreLimitPointsEqual()

bool MbCurve3D::AreLimitPointsEqual ( ) const
inline

Are boundary points equal?

Are curve boundary points equal?

Returns
Returns true if points are equal.

◆ IsReparamSame()

virtual bool MbCurve3D::IsReparamSame ( const MbCurve3D curve,
double &  factor 
) const
virtual

Define whether a reparameterized curve is the same.

Define whether a reparameterized curve is the same.

Parameters
[in]curve- A curve for comparison.
[out]factor- Coefficient of compression of parametric region at the time of transition to the pointed curve.

Reimplemented in MbNurbs3D.

◆ GetPlaneCurve() [1/3]

virtual bool MbCurve3D::GetPlaneCurve ( MbCurve *&  curve2d,
MbPlacement3D place,
bool  saveParams,
PlanarCheckParams  params = PlanarCheckParams() 
) const
virtual

Get planar curve and placement if the space curve is planar.

Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves).

Parameters
[out]curve2d- The resulting flat curve.
[out]place- The coordinate system of the resulting 2D curve.
[in]saveParams- The parameter specifying the preservation of the correspondence of the parameterization for the two-dimensional curve. If true - parameterization of curve2d curve must match the parameterization of the original curve this. If false - curve parameterizations may not correspond. The curve2d is more likely to be detected than with the true flag.
[in]params- Validation parameters.
Returns
true if a flat curve was created.

Reimplemented in MbSurfaceIntersectionCurve, MbSurfaceCurve, MbSilhouetteCurve, MbContourOnSurface, MbContourOnPlane, MbTrimmedCurve3D, MbReparamCurve3D, MbPolyline3D, MbPlaneCurve, MbNurbs3D, MbHermit3D, MbCubicSpline3D, MbContour3D, MbCharacterCurve3D, MbBezier3D, and MbArc3D.

◆ GetPlaneCurve() [2/3]

bool MbCurve3D::GetPlaneCurve ( SPtr< MbCurve > &  curve2d,
MbPlacement3D place,
bool  saveParams,
PlanarCheckParams  params = PlanarCheckParams() 
) const

Get planar curve and placement if the space curve is planar.

Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves).

Parameters
[out]curve2d- The resulting flat curve.
[out]place- The coordinate system of the resulting 2D curve.
[in]saveParams- The parameter specifying the preservation of the correspondence of the parameterization for the two-dimensional curve. If true - parameterization of curve2d curve must match the parameterization of the original curve this. If false - curve parameterizations may not correspond. The curve2d is more likely to be detected than with the true flag.
[in]params- Validation parameters.
Returns
true if a flat curve was created.

◆ GetPlaneCurve() [3/3]

bool MbCurve3D::GetPlaneCurve ( SPtr< const MbCurve > &  curve2d,
MbPlacement3D place,
bool  saveParams,
PlanarCheckParams  params = PlanarCheckParams() 
) const

Get planar curve and placement if the space curve is planar.

Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves).

Parameters
[out]curve2d- The resulting flat curve.
[out]place- The coordinate system of the resulting 2D curve.
[in]saveParams- The parameter specifying the preservation of the correspondence of the parameterization for the two-dimensional curve. If true - parameterization of curve2d curve must match the parameterization of the original curve this. If false - curve parameterizations may not correspond. The curve2d is more likely to be detected than with the true flag.
[in]params- Validation parameters.
Returns
true if a flat curve was created.

◆ Extend()

virtual MbResultType MbCurve3D::Extend ( const MbCurveExtensionParameters3D parameters,
c3d::SpaceCurveSPtr resCurve 
) const
virtual

Extend the curve.

Extend the curve according to the given parameters.

Parameters
[in]parameters- Parameters of extension.
[out]resCurve- The extended curve or nullptr if extension is impossible.
Returns
Returns error status or rt_Success if all is OK.

Reimplemented in MbTrimmedCurve3D, MbSurfaceCurve, MbPlaneCurve, MbNurbs3D, MbLineSegment3D, MbContourOnSurface, MbContourOnPlane, MbContour3D, MbConeSpiral, MbBSpline, and MbArc3D.


The documentation for this class was generated from the following file: