C3D Toolkit  Kernel - 117982, Vision - 2.9.2.2
MbPlaneCurve Class Reference

Plane curve in three-dimensional space. More...

`#include <cur_plane_curve.h>`

Inheritance diagram for MbPlaneCurve:
Collaboration diagram for MbPlaneCurve:

## Public Member Functions

MbPlaneCurve (const MbPlacement3D &, const MbCurve &init, bool same)
Same = false - copy the curve "init".

MbeSpaceType IsA () const override
Get the type of the object.

MbSpaceItemDuplicate (MbRegDuplicate *=nullptr) const override
Create a copy of the object. More...

bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const override
Determine whether an object is equal. More...

bool SetEqual (const MbSpaceItem &) override
Make objects equal if they are similar. More...

bool IsSimilar (const MbSpaceItem &) const override
Determine whether an object is similar. More...

void Transform (const MbMatrix3D &, MbRegTransform *=nullptr) override
Convert the object according to the matrix. More...

void Move (const MbVector3D &, MbRegTransform *=nullptr) override
Move an object along a vector. More...

void Rotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr) override
Rotate an object around an axis at a given angle. More...

double DistanceToPoint (const MbCartPoint3D &) const override
Determine the distance to the point. More...

void PrepareIntegralData (const bool forced) const override
Calculate temporary (mutable) data of an object. More...

bool IsSpaceSame (const MbSpaceItem &item, double eps=METRIC_REGION) const override
Are the objects identical in space?

void GetProperties (MbProperties &) override
Outstanding properties of the object. More...

void SetProperties (const MbProperties &) override
Change the properties of an object. More...

void GetBasisItems (RPArray< MbSpaceItem > &) override
Outstanding reference objects in a container sent.

void GetBasisPoints (MbControlData3D &) const override
Get control points of object.

void SetBasisPoints (const MbControlData3D &) override
Change the object by control points.

double GetTMax () const override
Get the maximum value of parameter.

double GetTMin () const override
Get the minimum value of parameter.

bool IsClosed () const override
Define whether the curve is periodic. More...

double GetPeriod () const override
Return period. If a curve is not periodic then 0.

void PointOn (double &t, MbCartPoint3D &) const override
Calculate a point on the curve. More...

void FirstDer (double &t, MbVector3D &) const override
Calculate first derivative.

void SecondDer (double &t, MbVector3D &) const override
Calculate second derivative.

void ThirdDer (double &t, MbVector3D &) const override
Calculate third derivative.

void Normal (double &t, MbVector3D &) const override
Calculate main normal vector.

void _PointOn (double t, MbCartPoint3D &) const override
Calculate point at curve and its extension. More...

void _FirstDer (double t, MbVector3D &) const override
Calculate first derivative at curve and its extension.

void _SecondDer (double t, MbVector3D &) const override
Calculate second derivative at curve and its extension.

void _ThirdDer (double t, MbVector3D &) const override
Calculate third derivative at curve and its extension.

void _Normal (double t, MbVector3D &) const override
Calculate main normal vector (normalized) at curve and its extension.

void Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const override
Calculate point and derivatives of object for given parameter. More...

MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo &) const override
Construct a NURBS copy of a curve. More...

MbCurve3DNurbsCurve (const MbNurbsParameters &) const override
Construct a NURBS copy of a curve. More...

MbCurve3DTrimmed (double t1, double t2, int sense, const MbDimAccuracy &xyzEps, bool saveParamLenAndLaw) const override
Construct a trimmed curve with the given two-dimensional accuracy. More...

void Inverse (MbRegTransform *iReg=nullptr) override
Change direction of a curve.

bool NearPointProjection (const MbCartPoint3D &, double &t, bool ext, MbRect1D *tRange=nullptr) const override
Find the point projection to the curve. More...

double Curvature (double) const override
Calculate curvature of curve.

double Step (double t, double sag) const override
Calculate parameter step. More...

double DeviationStep (double t, double angle) const override
Calculate parameter step. More...

double MetricStep (double t, double length) const override
Calculate parameter step. More...

double GetMetricLength () const override
Calculate the metric length of a curve.

double GetLengthEvaluation () const override
Calculate the metric length of a curve. More...

double CalculateMetricLength () const override
Calculate the metric length of a curve.

double CalculateLength (double t1, double t2) const override
Calculate the metric length of a curve. More...

bool DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const override
Translate parameter along the curve. More...

void GetAnalyticalFunctionsBounds (std::vector< double > &params) const override
Get the boundaries of the curve sections that are described by one analytical function.

bool IsPlanar (double accuracy=METRIC_EPSILON) const override
Is a curve planar?

bool IsSmoothConnected (double angleEps) const override
Are joints of contour/curve smooth?

double DistanceToPlace (const MbPlacement3D &place, double &t0, double &angle) const override
The nearest point of a curve by the placement.

MbCurveGetMap (const MbMatrix3D &, MbRect1D *pRgn=nullptr, VERSION version=Math::DefaultMathVersion(), bool *coincParams=nullptr) const override
Construct a planar projection of a piece of a space curve. More...

MbCurveGetMapPsp (const MbMatrix3D &, double zNear, MbRect1D *pRgn=nullptr) const override
Construct a planar projection of a piece of a space curve. More...

double GetRadius (double accuracy=METRIC_REGION) const override
Get the physical radius of the curve or zero if it impossible. More...

bool GetCircleAxis (MbAxis3D &) const override
Get an axis of a circle which is geometrically coincident to the given curve. More...

void GetCentre (MbCartPoint3D &wc) const override
Give the curve center.

void GetWeightCentre (MbCartPoint3D &wc) const override
Give the gravity center of a curve.

bool IsStraight (bool ignoreParams=false) const override
Whether the line is straight?

size_t GetCount () const override
Define the number of splittings for one passage in operations.

void GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const override
Get n points of a curve with equal intervals by arc length.

void AddYourGabaritTo (MbCube &) const override
Expand sent bounding box (a.k.a. gabarit), so that it included the object. More...

void CalculateGabarit (MbCube &) const override
Calculate bounding box of a curve.

void CalculateLocalGabarit (const MbMatrix3D &, MbCube &) const override
To compute bounding box in a local coordinate system. More...

bool GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const override
Get planar curve and placement if the space curve is planar. More...

bool GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const override
Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)

bool GetPlacement (MbPlacement3D &place, PlanarCheckParams params=PlanarCheckParams()) const override
Fill the placement if a curve is planar.

bool IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const override
Is the object is a shift?

bool IsSimilarToCurve (const MbCurve3D &curve, double precision=METRIC_PRECISION) const override
Whether the curves to union (joining) are similar.

bool IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const override
Have the first derivative of the curve the continuous length and direction? More...

bool SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) override
Eliminate the discontinuities of the first derivative at length. More...

void BreakPoints (std::vector< double > &vBreaks, double precision=ANGLE_REGION) const override
\ ru Определение точек излома кривой. The determination of curve smoothness break points.

MbResultType Extend (const MbCurveExtensionParameters3D &parameters, c3d::SpaceCurveSPtr &resCurve) const override
Extend the curve. 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...

Public Member Functions inherited from MbCurve3D
virtual ~MbCurve3D ()
Destructor.

virtual void Accept (Visitor &visitor)
Implementation of a function initializing a visit of an object.

size_t size () const
Size of curve interpreted as vector of curves.

const MbCurve3Doperator[] (size_t) const
An access operator.

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 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...

virtual void Tangent (double &t, MbVector3D &) const
Calculate tangent vector (normalized).

virtual void BNormal (double &t, MbVector3D &) const
Calculate binormal vector.

virtual void _Tangent (double t, MbVector3D &) const
Calculate tangent 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 FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const
Calculate point and derivatives on the curve. More...

double CurveStep (const double &t, const MbStepData &stepData) const
Calculate parameter step. More...

virtual void ResetTCalc () const
Reset the current value of parameter.

virtual const MbCurve3DGetBasisCurve () const
Returns the base curve if exists or itself.

virtual MbCurve3DSetBasisCurve ()
Returns the base curve if exists or itself.

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 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...

double GetParamLength () const
Return the parametric length 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 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 MbeNewtonResult PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &t, bool ext) 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 MbCurveGetProjection (const MbPlacement3D &place, VERSION version) const
Construct a planar projection of a space curve to a plane. More...

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

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.

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...

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.

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...

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)

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).

bool IsFamilyRegistrable () const override
Whether the object belongs to a registrable family.

void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const

void CalculateWire (double sag, MbMesh &mesh) const

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 Attributes

MbPlacement3D position
The local coordinate system in XY plane of which the curve is located.

MbCurvecurve
A two-dimensional uv-curve (can not be nullptr).

MbCube cube
Bounding box.

Protected Attributes inherited from MbCurve3D
SimpleName name
A curve name. The object data is temporary and used internally.

## Additional Inherited Members

Protected Member Functions inherited from MbCurve3D
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.

## Detailed Description

Plane curve in three-dimensional space.

Plane curve is described by two-dimensional uv-curve in the XY-plane of the local coordinate system "position".
The radius-vector of curve in the method PointOn(double&t,MbCartPoint3D&r) is described by a vector function:
r(t) = position.origin + (position.axisX point.x) + (position.axisY point.y), where point = curve(t);

## ◆ Duplicate()

 MbSpaceItem& MbPlaneCurve::Duplicate ( MbRegDuplicate * iReg = `nullptr` ) const
overridevirtual

Create a copy of the object.

Create a copy of an object using the registrator. Registrator is used to prevent multiple copy of the object. If the object contains references to the other objects, then nested objects are copied as well. It is allowed not to pass registrator into the function. Then new copy of object will be created. While copying of single object or set of not connected objects, it is allowed not to use registrator. Registrator should be used if it is required to copy several connected objects. It is possible, that objects connection is based on the references to common objects. Then, while copying without using of registrator, it is possible to obtain set of copies, that contain references to the different copies of the same nested object, that leads to loss of connection between copies.

Parameters
 [in] iReg - Registrator.
Returns
A copy of the object.

Implements MbSpaceItem.

## ◆ IsSame()

 bool MbPlaneCurve::IsSame ( const MbSpaceItem & other, double accuracy = `LENGTH_EPSILON` ) const
overridevirtual

Determine whether an object is equal.

Still considered objects of the same type, all data is the same (equal).

Parameters
 [in] item - The object to compare. [in] accuracy - The accuracy to compare.
Returns
Whether the objects are equal.

Implements MbSpaceItem.

## ◆ SetEqual()

 bool MbPlaneCurve::SetEqual ( const MbSpaceItem & item )
overridevirtual

Make objects equal if they are similar.

You can still make only a similar objects.

Parameters
 [in] item - The object to initialize.
Returns
Object is changed.

Implements MbSpaceItem.

## ◆ IsSimilar()

 bool MbPlaneCurve::IsSimilar ( const MbSpaceItem & item ) const
overridevirtual

Determine whether an object is similar.

Such are considered the same objects whose data are similar.

Parameters
 [in] item - The object to compare.
Returns
Whether the objects are similar.

Reimplemented from MbSpaceItem.

## ◆ Transform()

 void MbPlaneCurve::Transform ( const MbMatrix3D & matr, MbRegTransform * iReg = `nullptr` )
overridevirtual

Convert the object according to the matrix.

Convert the original object according to the matrix using the registrator. If object contains references to the other geometric objects, then nested objects are transformed according to the matrix. Registrator is needed to prevent multiple object copying. It is allowed to use function without registrator, if it is needed to transform single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be transformed.

Parameters
 [in] matr - Transformation matrix. [in] iReg - Registrator.

Implements MbSpaceItem.

## ◆ Move()

 void MbPlaneCurve::Move ( const MbVector3D & to, MbRegTransform * iReg = `nullptr` )
overridevirtual

Move an object along a vector.

Move an object along a geometric vector using the registrator. If object contains references to the other geometric objects then the move operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be moved.

Parameters
 [in] to - Shift vector. [in] iReg - Registrator.

Implements MbSpaceItem.

## ◆ Rotate()

 void MbPlaneCurve::Rotate ( const MbAxis3D & axis, double angle, MbRegTransform * iReg = `nullptr` )
overridevirtual

Rotate an object around an axis at a given angle.

Rotate an object around an axis at a given angle with the registrator. If object contains references to the other geometric objects then the rotation operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be rotated.

Parameters
 [in] axis - The axis of rotation. [in] angle - Rotation. [in] iReg - Registrator.

Implements MbSpaceItem.

## ◆ DistanceToPoint()

 double MbPlaneCurve::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.

## ◆ PrepareIntegralData()

 void MbPlaneCurve::PrepareIntegralData ( const bool forced ) const
overridevirtual

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 from MbCurve3D.

## ◆ GetProperties()

 void MbPlaneCurve::GetProperties ( MbProperties & properties )
overridevirtual

Outstanding properties of the object.

Issue internal data (properties) of the object for viewing and modification.

Parameters
 [in] properties - Container for the internal data of the object.

Implements MbSpaceItem.

## ◆ SetProperties()

 void MbPlaneCurve::SetProperties ( const MbProperties & properties )
overridevirtual

Change the properties of an object.

Changing the internal data (properties) of the object you are copying the corresponding values from the sent object.

Parameters
 [in] properties - Container for the internal data of the object.

Implements MbSpaceItem.

## ◆ IsClosed()

 bool MbPlaneCurve::IsClosed ( ) const
overridevirtual

Define whether the curve is periodic.

Define whether the curve is periodic.
A periodic curve is closed. A curve is considered as periodic if:

• start point is coincident with end point;
• derivatives in start point and end point coincide;
if there are breaks at curve (in cases when a curve is contour or polyline), then derivatives may not coincide; in Bezier curve derivatives should coincide by direction, but they may differ by absolute value.
Curves:
• MbLine3D,
• MbLineSegment3D,
• MbSpiral and inherited classes,
• MbBridgeCurve3D,
• MbContour3D (if it contains only a single segment of one of the listed types)
are not considered periodic when the start and end points coincide. The IsClosed() method always returns false for them.
Returns
True if a curve is closed.

Implements MbCurve3D.

## ◆ PointOn()

 void MbPlaneCurve::PointOn ( double & t, MbCartPoint3D & p ) const
overridevirtual

Calculate a point on the curve.

Correct parameter when getting out of domain bounds and calculate a point on the curve.

Parameters
 [in] t - Curve parameter. [out] p - A point on the curve.

Implements MbCurve3D.

## ◆ _PointOn()

 void MbPlaneCurve::_PointOn ( double t, MbCartPoint3D & p ) const
overridevirtual

Calculate point at curve and its extension.

Calculate a point on the curve including the outside area determination parameter.

Parameters
 [in] t - Curve parameter. [out] p - A point on the curve.

Reimplemented from MbCurve3D.

## ◆ Explore()

 void MbPlaneCurve::Explore ( double & t, bool ext, MbCartPoint3D & pnt, MbVector3D & fir, MbVector3D * sec, MbVector3D * thir ) const
overridevirtual

Calculate point and derivatives of object for given parameter.

Values of point and derivatives are calculated on parameter area and on extended curve.

Parameters
 [in] t - Parameter. [in] ext - On parameters area (false), on extended curve (true). [out] pnt - Point. [out] fir - Derivative with respect to t. [out] sec - Second derivative with respect to t, if not nullptr. [out] thir - Third derivative with respect to t, if not nullptr.

Reimplemented from MbCurve3D.

## ◆ NurbsCurve() [1/2]

 MbNurbs3D* MbPlaneCurve::NurbsCurve ( const MbCurveIntoNurbsInfo & nInfo ) const
overridevirtual

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 from MbCurve3D.

## ◆ NurbsCurve() [2/2]

 MbCurve3D* MbPlaneCurve::NurbsCurve ( const MbNurbsParameters & tParameters ) const
overridevirtual

Construct a NURBS copy of a curve.

Constructs a NURBS curve which approximates a given curve with the given parameters. In parameters the degree and the number of knots of a spline and the range of curve's parameters changing may be set. If the flag of accurate approximation is not set in parameters then NURBS without multiple knots is constructed.

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

Reimplemented from MbCurve3D.

## ◆ Trimmed() [1/3]

 MbCurve3D* MbPlaneCurve::Trimmed ( double t1, double t2, int sense, const MbDimAccuracy & xyzEps, bool saveParamLenAndLaw ) const
overridevirtual

Construct a trimmed curve with the given two-dimensional accuracy.

Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.

Parameters
 [in] t1 - Parameter corresponding to start of a trimmed curve. [in] t2 - Parameter corresponding to end of a trimmed curve. [in] sense - Direction of a trimmed curve in relation to an initial curve. sense = 1 - direction does not change. sense = -1 - direction changes to the opposite value. [in] xyzEps - Three-dimensional accuracy. [in] saveParLenAndLaw - Save parametric length and law.
Returns
A constructed trimmed curve.
Warning
Under development.

Reimplemented from MbCurve3D.

## ◆ NearPointProjection()

 bool MbPlaneCurve::NearPointProjection ( const MbCartPoint3D & pnt, double & t, bool ext, MbRect1D * tRange = `nullptr` ) const
overridevirtual

Find the point projection to the curve.

Find the nearest projection of a point on a curve (in the range of the curve) or on its continuation by the given initial approximation. If the parameter ext = true, then also search for a projection on the continuation of the curve. If the range of change of the 'tRange' parameter is specified, then find the projection in the specified range. A range of parameter may not belong to the domain of a curve. The Newton method is used.

Parameters
 [in] pnt - A given point. [in,out] t - Input - initial approximation, output - parameter of a curve corresponding to the nearest projection. [in] ext - A flag defining whether to seek projection on the extension of the curve. [in] tRange - A range of parameter changing in which the solution should be found.
Returns
Returns true if the found parameter is in a valid range (according to the given ext, tRange parameters), or false - otherwise.

Reimplemented from MbCurve3D.

## ◆ Step()

 double MbPlaneCurve::Step ( double t, double sag ) const
overridevirtual

Calculate parameter step.

Calculate parameter step for the curve's approximation by its sag value. Calculation of the step is performed with consideration of curvature radius. A step of curve's approximation is chosen in such way, that the deviation from its polygon does not exceed the given value of sag.

Parameters
 [in] t - A parameter defining the point on a curve, at which a step should be calculated. [in] sag - Maximum feasible sag value.
Returns
A sag value by parameter at given point.

Reimplemented from MbCurve3D.

## ◆ DeviationStep()

 double MbPlaneCurve::DeviationStep ( double t, double ang ) const
overridevirtual

Calculate parameter step.

Calculate parameter step for the curve's approximation by the deviation angle of the tangent vector. A step of curve's approximation is chosen in such way, that angular deviation of the tangent curve at the next point does not exceed the given value ang.

Parameters
 [in] t - A parameter defining the point on a curve, at which a step should be calculated. [in] ang - The maximum feasible deviation angle of tangent.
Returns
A sag value by parameter at given point.

Reimplemented from MbCurve3D.

## ◆ MetricStep()

 double MbPlaneCurve::MetricStep ( double t, double length ) const
overridevirtual

Calculate parameter step.

Calculate the parameter step for approximation of a curve by the given metric length of a step along a curve.

Parameters
 [in] t - A parameter defining the point on a curve, at which a step should be calculated. [in] len - Maximum metric length of a step along a curve.
Returns
A sag value by parameter at given point.

Reimplemented from MbCurve3D.

## ◆ GetLengthEvaluation()

 double MbPlaneCurve::GetLengthEvaluation ( ) const
overridevirtual

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 from MbCurve3D.

## ◆ CalculateLength()

 double MbPlaneCurve::CalculateLength ( double t1, double t2 ) const
overridevirtual

Calculate the metric length of a curve.

Calculate the metric length of unclosed curve from parameter t1 to parameter t2. The condition t1 < t2 should satisfied.

Parameters
 [in] t1 - Start parameter of a curve section. [in] t2 - End parameter of a curve section.
Returns
Length of a curve.

Reimplemented from MbCurve3D.

## ◆ DistanceAlong()

 bool MbPlaneCurve::DistanceAlong ( double & t, double len, int curveDir, double eps = `Math::metricPrecision`, VERSION version = `Math::DefaultMathVersion()` ) const
overridevirtual

Translate parameter along the curve.

Translate parameter along the curve by the given distance at the given direction. The new value of parameter is saved in the variable t. If the curve is not closed and the length of its part from the point with parameter t to the end at the given direction is less than the required shift, then calculations are performed on extension of the curve, if it possible to construct such extension.

Parameters
 [in,out] t - Input - the initial value of parameter. Output - the new value of parameter. [in] len - The value of shift along the curve. [in] curveDir - The offset direction. If curveDir is non-negative, then the shift is directed to the side of increasing of parameter. Otherwise - to the side of decreasing of parameter. [in] eps - Computational tolerance.
Returns
True - if the operation is performed successfully, otherwise false.

Reimplemented from MbCurve3D.

## ◆ GetMap()

 MbCurve* MbPlaneCurve::GetMap ( const MbMatrix3D & into, MbRect1D * pRegion = `nullptr`, VERSION version = `Math::DefaultMathVersion()`, bool * coincParams = `nullptr` ) const
overridevirtual

Construct a planar projection of a piece of a space curve.

Construct a planar projection of a piece of a space curve.

Parameters
 [in] into - The transformation matrix from the global coordinate system into a plane of view. [in] pRegion - A mapped piece of a curve (paramRegion.x = t1, paramRegion.y = t2), by default - the whole curve.. [in] version - Version, last by default. [in,out] coincParams - A flag of coincidence between parameterization of initial curve and its projection if coincParams != nullptr then the function tries to create a projection with coincident parameterization if *coincParams = true then parameterization of projection coincides with parameterization of initial curve.
Returns
Two-dimensional projection of a curve

Reimplemented from MbCurve3D.

## ◆ GetMapPsp()

 MbCurve* MbPlaneCurve::GetMapPsp ( const MbMatrix3D & into, double zNear, MbRect1D * pRegion = `nullptr` ) const
overridevirtual

Construct a planar projection of a piece of a space curve.

Construct a planar projection of a piece of a space curve for the perspective visualization.

Parameters
 [in] into - The transformation matrix from the global coordinate system into a plane of view. [in] zNear - The parameter of the perspective visualization which is equal to the distance between the observation point and the plane of view (negative). [in] pRegion - A mapped piece of a curve (paramRegion.x = t1, paramRegion.y = t2), by default - the whole curve..
Returns
Two-dimensional projection of a curve

Reimplemented from MbCurve3D.

 double MbPlaneCurve::GetRadius ( double accuracy = `METRIC_REGION` ) const
overridevirtual

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 from MbCurve3D.

## ◆ GetCircleAxis()

 bool MbPlaneCurve::GetCircleAxis ( MbAxis3D & axis ) const
overridevirtual

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 from MbCurve3D.

 void MbPlaneCurve::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.

## ◆ CalculateLocalGabarit()

 void MbPlaneCurve::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.

## ◆ GetPlaneCurve()

 bool MbPlaneCurve::GetPlaneCurve ( MbCurve *& curve2d, MbPlacement3D & place, bool saveParams, PlanarCheckParams params = `PlanarCheckParams()` ) const
overridevirtual

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 from MbCurve3D.

## ◆ IsContinuousDerivative()

 bool MbPlaneCurve::IsContinuousDerivative ( bool & contLength, bool & contDirect, c3d::DoubleVector * params = `nullptr`, double epsilon = `EPSILON` ) const
overridevirtual

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 from MbCurve3D.

## ◆ SetContinuousDerivativeLength()

 bool MbPlaneCurve::SetContinuousDerivativeLength ( VERSION version, double epsilon = `EPSILON` )
overridevirtual

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 from MbCurve3D.

## ◆ Extend()

 MbResultType MbPlaneCurve::Extend ( const MbCurveExtensionParameters3D & parameters, c3d::SpaceCurveSPtr & resCurve ) const
overridevirtual

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 from MbCurve3D.

## ◆ Trimmed() [2/3]

 virtual MbCurve3D* MbCurve3D::Trimmed

Construct a trimmed curve.

Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.

Parameters
 [in] t1 - Parameter corresponding to start of a trimmed curve. [in] t2 - Parameter corresponding to end of a trimmed curve. [in] sense - Direction of a trimmed curve in relation to an initial curve. sense = 1 - direction does not change. sense = -1 - direction changes to the opposite value. [in] saveParLenAndLaw - Save parametric length and law.
Returns
A constructed trimmed curve.

## ◆ Trimmed() [3/3]

 virtual MbCurve3D* MbCurve3D::Trimmed

Construct a trimmed curve with the given two-dimensional accuracy.

Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.

Parameters
 [in] t1 - Parameter corresponding to start of a trimmed curve. [in] t2 - Parameter corresponding to end of a trimmed curve. [in] sense - Direction of a trimmed curve in relation to an initial curve. sense = 1 - direction does not change. sense = -1 - direction changes to the opposite value. [in] xyzEps - Three-dimensional accuracy. [in] saveParLenAndLaw - Save parametric length and law.
Returns
A constructed trimmed curve.
Warning
Under development.

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