C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Curve in two-dimensional space. More...
#include <curve.h>
Public Member Functions | |
virtual | ~MbCurve () |
Destructor. | |
MbePlaneType | Type () const override |
Get the group type of the object. | |
MbePlaneType | Family () const override |
Get family of object. | |
void | Refresh () override |
Set all temporary (mutable) data of object to undefined (initial) state. | |
virtual void | PrepareIntegralData (const bool forced) const |
Calculate temporary (mutable) data of an object. More... | |
size_t | size () const |
Number of objects if object is interpreted as vector of objects. | |
const MbCurve * | operator[] (size_t) const |
An access operator. | |
virtual MbResultType | Extend (const MbCurveExtensionParameters ¶meters, c3d::PlaneCurveSPtr &resCurve) const |
Extend the curve. More... | |
Common functions of two-dimensional object. | |
virtual void | AddYourGabaritMtr (MbRect &rect, const MbMatrix &matr) const |
Add a bounding box to rectangle. More... | |
virtual void | CalculateGabarit (MbRect &) const |
Detect the bounding box of a curve. More... | |
virtual void | CalculateLocalGabarit (const MbMatrix &into, MbRect &local) const |
Calculate bounding box in the local coordinate system. More... | |
bool | IsVisibleInRect (const MbRect &rect, bool exact=false) const override |
Determine visibility of an object in rectangle. More... | |
virtual bool | IsCompleteInRect (const MbRect &rect) const |
Determine whether an object is fully visible in rectangle. More... | |
double | DistanceToPoint (const MbCartPoint &toP) const override |
Calculate the distance to a point. | |
bool | DistanceToPointIfLess (const MbCartPoint &toP, double &d) const override |
Calculate the distance to a point. More... | |
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. More... | |
virtual bool | IsPeriodic () const |
Define whether the curve is periodic. More... | |
bool | IsTouch (double eps=Math::LengthEps) const |
Determine whether a curve is closed regardless of the smoothness of the closure. More... | |
Functions for working in the curve's domain. | |
Functions PointOn, FirstDer, SecondDer, ThirdDer,... correct parameter when it is out of domain bounds. The exception is MbLine (line). | |
virtual void | PointOn (double &t, MbCartPoint &p) const =0 |
Calculate a point on the curve. More... | |
virtual void | FirstDer (double &t, MbVector &v) const =0 |
Calculate first derivative. | |
virtual void | SecondDer (double &t, MbVector &v) const =0 |
Calculate second derivative. | |
virtual void | ThirdDer (double &t, MbVector &v) const =0 |
Calculate third derivative. | |
void | Tangent (double &t, MbVector &v) const |
Calculate tangent vector (normalized). | |
void | Tangent (double &t, MbDirection &d) const |
Calculate tangent vector (normalized). | |
void | Normal (double &t, MbVector &v) const |
Calculate main normal vector (normalized). | |
void | Normal (double &t, MbDirection &d) const |
Calculate main normal vector (normalized). | |
Functions for working inside and outside the curve's domain. | |
Functions _PointOn, _FirstDer, _SecondDer, _ThirdDer,... do not correct parameter when it is out of domain bounds. When parameter is out of domain bounds, an unclosed curve is extended by tangent vector at corresponding end point in general case. The exceptions are arcs of ellipse and arcs of circle - they are extended according to their equations. | |
virtual void | _PointOn (double t, MbCartPoint &p) const |
Calculate point at curve and its extension. More... | |
virtual void | _FirstDer (double t, MbVector &v) const |
Calculate first derivative at curve and its extension. | |
virtual void | _SecondDer (double t, MbVector &v) const |
Calculate second derivative at curve and its extension. | |
virtual void | _ThirdDer (double t, MbVector &v) const |
Calculate third derivative at curve and its extension. | |
void | _Tangent (double t, MbVector &v) const |
Calculate tangent vector (normalized). | |
void | _Tangent (double t, MbDirection &d) const |
Calculate tangent vector (normalized). | |
void | _Normal (double t, MbVector &v) const |
Calculate main normal vector (normalized) at curve and its extension. | |
void | _Normal (double t, MbDirection &d) const |
Calculate main normal vector (normalized) at curve and its extension. | |
virtual void | Explore (double &t, bool ext, MbCartPoint &pnt, MbVector &fir, MbVector *sec, MbVector *thir) const |
Calculate point and derivatives of object for given parameter. 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... | |
Common function of curve. | |
virtual double | Curvature (double t) const |
Calculate curvature of curve. | |
double | CurvatureDerive (double t) const |
Calculate derivative of curvature by parameter. | |
double | CurvatureRadius (double t) const |
Calculate radius of curve with a sign. | |
virtual bool | HasLength (double &length) const =0 |
Calculate the metric length of a curve. More... | |
virtual bool | IsBounded () const |
Define whether the curve is bounded. | |
virtual bool | IsStraight (bool ignoreParams=false) const |
Define whether the curve is rectilinear.. | |
virtual bool | IsDegenerate (double eps=Math::LengthEps) const |
Define whether the curve is degenerate.. | |
virtual bool | IsSmoothConnected (double angleEps) const |
Define whether joints of contour/curve are smooth. | |
double | GetParamLength () const |
Calculate the parametric 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 double | GetMetricLength () const =0 |
Calculate the metric length of a curve. More... | |
virtual bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::LengthEps, VERSION version=Math::DefaultMathVersion()) const |
Translate parameter along the curve. More... | |
virtual void | ResetTCalc () const |
Reset the current value of parameter. | |
virtual void | Inverse (MbRegTransform *iReg=nullptr)=0 |
Set the opposite direction of curve. | |
virtual MbCurve * | Offset (double rad) const |
Construct the equidistant curve which is shifted by the given value. | |
virtual bool | BeginApprox (double sag, double &tbeg, double &tend, MbCartPoint &pnt, bool &existNextPoint) const |
Start approximation for the drawing. More... | |
virtual bool | GetNextPoint (double sag, double tend, double &tcur, MbCartPoint &pnt) const |
Calculate the next point. More... | |
virtual void | CalculatePolygon (double sag, MbPolygon &poligon) const |
Calculate an array of points for drawing. More... | |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo *nInfo=nullptr) const |
Construct a NURBS copy of a curve. More... | |
virtual MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo &nInfo) const =0 |
Construct a NURBS copy of a curve. More... | |
virtual MbCurve * | NurbsCurve (const MbNurbsParameters &tParameters) const |
Construct a NURBS copy of a curve. More... | |
virtual MbCurve * | Trimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const |
Construct a trimmed curve. More... | |
virtual MbCurve * | Trimmed (double t1, double t2, int sense, const MbDimAccuracy &xyEps, bool saveParamLenAndLaw) const =0 |
Construct a trimmed curve with the given two-dimensional accuracy. More... | |
virtual MbContour * | NurbsContour () const |
Approximate of a curve by the contour from NURBS curves. | |
virtual MbeState | Deformation (const MbRect &rect, const MbMatrix &matr) |
Deform the curve. More... | |
virtual bool | IsInRectForDeform (const MbRect &) const |
Determine visibility of a curve in rectangle. | |
virtual MbeState | DeletePart (double t1, double t2, MbCurve *&part2)=0 |
Delete the piece of a curve. More... | |
virtual MbeState | TrimmPart (double t1, double t2, MbCurve *&part2)=0 |
Keep the piece of a curve. More... | |
virtual MbeItemLocation | PointRelative (const MbCartPoint &pnt, double eps=Math::LengthEps) const |
Define the point position relative to the curve. More... | |
virtual MbeLocation | PointLocation (const MbCartPoint &pnt, double eps=Math::LengthEps) const |
The point position relative to the curve. | |
virtual double | PointProjection (const MbCartPoint &pnt) const |
Calculate the point projection to the curve. More... | |
MbeNewtonResult | PointProjectionNewton (const MbCartPoint &p, double xEpsilon, double yEpsilon, size_t iterLimit, double &t, bool ext) const |
Find the point projection to the curve. More... | |
virtual bool | NearPointProjection (const MbCartPoint &pnt, double xEpsilon, double yEpsilon, double &t, bool ext, MbRect1D *tRange=nullptr) const |
Find the point projection to the curve. More... | |
void | PointProjection (const MbCartPoint &pnt, MbCartPoint &on) const |
Calculate the point projection to the curve. More... | |
void | BasePointProjection (const MbCartPoint &pnt, MbCartPoint &on) const |
Calculate the point projection to the curve. More... | |
void | PointProjectionAndAngle (MbCartPoint &on, double &angle) const |
Calculate the point projection to the curve. More... | |
bool | DirectPointProjection (const MbCartPoint &pnt, const MbDirection &dir, MbCartPoint &pp) const |
Calculate the point projection to the curve. More... | |
virtual bool | SmallestPerpendicular (const MbCartPoint &pnt, double &tProj) const |
Find the nearest perpendicular to the curve. More... | |
virtual void | TangentPoint (const MbCartPoint &pnt, SArray< double > &tFind) const |
Find tangents to a curve. More... | |
virtual void | PerpendicularPoint (const MbCartPoint &pnt, SArray< double > &tFind) const |
Find perpendiculars to a curve. More... | |
virtual void | IntersectHorizontal (double y, SArray< double > &cross) const |
Find intersections of a curve with horizontal line. More... | |
virtual void | IntersectVertical (double x, SArray< double > &cross) const |
Find intersections of a curve with vertical line. More... | |
virtual void | Isoclinal (const MbVector &angle, SArray< double > &tFind) const |
Construct isoclines. More... | |
void | HorzIsoclinal (SArray< double > &tFind) const |
Construct horizontal isoclines. More... | |
void | VertIsoclinal (SArray< double > &tFind) const |
Construct vertical isoclines. More... | |
void | LowestPoint (MbCartPoint &lowestPoint, double &tLowest) const |
Find the lowest point of a curve and the corresponding parameter. | |
virtual void | SelfIntersect (SArray< MbCrossPoint > &, double metricEps=Math::LengthEps) const |
Find self-intersections of curve. More... | |
virtual void | OffsetCuspPoint (SArray< double > &tCusps, double dist) const |
Find the special points of an offset curve. More... | |
virtual bool | GoThroughPoint (MbCartPoint &pnt) |
Create a curve through a point. More... | |
virtual bool | GetMiddlePoint (MbCartPoint &) const |
Calculate a middle point of a curve. | |
virtual void | GetStartPoint (MbCartPoint &) const |
Calculate a start point of a curve. | |
virtual void | GetEndPoint (MbCartPoint &) const |
Calculate an end point of a curve. | |
virtual bool | GetCentre (MbCartPoint &) const |
Calculate a center of curve. | |
virtual double | GetRadius (double accuracy=PARAM_REGION) const |
Get the physical radius of the curve or zero if it impossible. More... | |
virtual bool | GetAxisPoint (MbCartPoint &p) const |
Calculate a point to construct an axis. More... | |
virtual bool | IsSimilarToCurve (const MbCurve &curve, double precision=PARAM_PRECISION) const |
Define whether the curves are similar for the merge. | |
virtual size_t | GetCount () const |
Define the number of splittings for one passage in operations. | |
void | GetPointsByEvenParamDelta (size_t n, std::vector< MbCartPoint > &pnts) const |
Get n points of a curve with equal intervals by parameter. | |
void | GetPointsByEvenParamDelta (size_t n, SArray< MbCartPoint > &pnts) const |
virtual void | GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint > &pnts) const |
Get n points of a curve with equal intervals by arc length. | |
void | GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint > &pnts) const |
virtual double | LengthBetween2Points (MbCartPoint &p1, MbCartPoint &p2, MbCartPoint *pc=nullptr) const |
Calculate minimal length of a curve between two points on it. More... | |
virtual bool | GetWeightCentre (MbCartPoint &) const |
Calculate the center of gravity of a curve. | |
bool | IsPointOn (const MbCartPoint &, double eps=Math::LengthEps) const |
Check whether the point is on a curve with the tolerance eps. | |
bool | IsParamOn (double t, double eps=Math::paramEpsilon) const |
Check whether the parameter is inside a range with the tolerance eps. | |
void | CorrectCyclicParameter (double &t, double eps=Math::paramRegion) const |
Correct parameter for closed curves. More... | |
void | CorrectParameter (double &t) const |
Correct parameter. More... | |
MbCurve * | InverseDuplicate () const |
Create a copy with changed direction. | |
bool | IsInverseSame (const MbCurve &curve, double accuracy=LENGTH_EPSILON) const |
Define whether an inversed curve is the same. | |
virtual bool | IsReparamSame (const MbCurve &curve, double &factor) const |
Define whether a reparameterized curve is the same. More... | |
MbCartPoint | GetLimitPoint (ptrdiff_t number) const |
Calculate the boundary point. More... | |
void | GetLimitPoint (ptrdiff_t number, MbCartPoint &pnt) const |
Calculate the boundary point. More... | |
void | GetLimitTangent (ptrdiff_t number, MbVector &v) const |
Calculate a tangent vector to the boundary point. More... | |
void | GetLimitPointAndTangent (ptrdiff_t number, MbCartPoint &pnt, MbVector &v) const |
Calculate a tangent vector and point at the end of a curve. More... | |
bool | AreLimitPointsEqual () const |
Are boundary points equal? More... | |
virtual bool | GetSpecificPoint (const MbCartPoint &from, double &dmax, MbCartPoint &pnt) const |
Return a specific point of a curve. More... | |
virtual const MbCurve & | GetBasisCurve () const |
Returns the base curve if exists or itself. | |
virtual MbCurve & | SetBasisCurve () |
Returns the base curve if exists or itself. | |
virtual double | GetParamDelta () const |
Return an indent by parameter of a curve. | |
virtual const MbCurve & | GetSubstrate () const |
Get a substrate or itself. | |
virtual MbCurve & | SetSubstrate () |
Get a substrate or itself. | |
virtual int | SubstrateCurveDirection () const |
Return 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 double | GetLengthEvaluation () const |
Calculate the metric length of a curve. More... | |
virtual double | GetParamToUnit () const |
Return increment of parameter, corresponding to the unit length in space. | |
virtual double | GetParamToUnit (double t) const |
Return increment of parameter, corresponding to the unit length in space according to parameter. | |
virtual double | GetTEpsilon (double epsilon) const |
Return the minimal discernible value of parameter with the given tolerance. | |
virtual double | GetTEpsilon (double t, double epsilon) const |
Return the minimal discernible value of parameter with the given tolerance according to parameter. | |
virtual double | GetTRegion (double epsilon) const |
Return the minimal discernible value of parameter with the given tolerance. | |
virtual double | GetTRegion (double t, double epsilon) const |
Return the minimal discernible value of parameter with the given tolerance according to parameter. | |
virtual double | GetTRegion (double t, const MbDimAccuracy &xyEps) const |
Return the minimal discernible value of parameter with the given two-dimensinal accuracy according to parameter. The method takes into account the direction of the curve at a point. | |
double | GetTMid () const |
Return the middle of parametric range of a curve. | |
double | GetTRange () const |
Return the parametric length of a curve. | |
MbCartPoint | PointOn (double &t) const |
Calculate point on the curve. | |
MbVector | FirstDer (double &t) const |
Calculate first derivative. | |
MbDirection | Tangent (double &t) const |
Calculate tangent vector (normalized). | |
MbDirection | Normal (double &t) const |
Calculate the normal vector. | |
double | DerLength (double &t) const |
Calculate the length of derivative vector. | |
virtual void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) 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. | |
MbProperty & | CreateProperty (MbePrompt name) const override |
Create a custom property. | |
virtual bool | IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const |
Get properties of the object. More... | |
virtual bool | SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) |
Eliminate the discontinuities of the first derivative at length. More... | |
bool | IsSpaceNear (const MbCurve &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const |
Check whether the two curves are metrically close. More... | |
bool | IsSpaceNear (const MbCurve &curve, double xEps, double yEps, bool ext, double xNear, double yNear, double devSag=5.0 *Math::deviateSag) const |
Check whether the two curves are metrically close. More... | |
SimpleName | GetCurveName () const |
A curve name. | |
void | SetCurveName (SimpleName newName) |
Set a curve name. | |
Public Member Functions inherited from MbPlaneItem | |
virtual | ~MbPlaneItem () |
Destructor. | |
void | PrepareWrite () const |
Object registration. More... | |
MbeRefType | RefType () const override |
Get the registration type (for copying, duplication). | |
virtual MbePlaneType | IsA () const =0 |
Get the object type. | |
virtual MbPlaneItem & | Duplicate (MbRegDuplicate *iReg=nullptr) const =0 |
Create a copy. More... | |
virtual void | Transform (const MbMatrix &matr, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr)=0 |
Transform according to the matrix. More... | |
virtual void | Move (const MbVector &to, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr)=0 |
Translate along a vector. More... | |
virtual void | Rotate (const MbCartPoint &pnt, const MbDirection &angle, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr)=0 |
Rotate about a point. More... | |
virtual void | Rotate (const MbCartPoint &pnt, double angle, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr) |
Rotate about a point. More... | |
virtual bool | IsSame (const MbPlaneItem &item, double accuracy=LENGTH_EPSILON) const =0 |
Determine whether objects are equal. More... | |
virtual bool | IsSimilar (const MbPlaneItem &item) const |
Determine whether the objects are similar. More... | |
virtual bool | SetEqual (const MbPlaneItem &item)=0 |
Make the objects equal. More... | |
virtual void | AddYourGabaritTo (MbRect &r) const =0 |
Extend the given bounding rectangle so that it encloses this object. | |
virtual void | GetProperties (MbProperties &properties)=0 |
Get properties of the object. More... | |
virtual void | SetProperties (const MbProperties &properties)=0 |
Change properties of the object. More... | |
virtual void | GetBasisPoints (MbControlData &) const =0 |
Get control points of object. | |
virtual void | SetBasisPoints (const MbControlData &)=0 |
Change the object by control points. | |
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. | |
virtual bool | IsFamilyRegistrable () const |
Whether the object belongs to a registrable family. | |
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. | |
CommonRecursiveMutex * | GetLock () const |
Get a pointer to the mutex object. Return nullptr if no parallelism. For use in ScopedLock. | |
Protected Member Functions | |
MbCurve () | |
Default constructor. | |
MbCurve (const MbCurve &other) | |
Copy-constructor. | |
Protected Member Functions inherited from MbPlaneItem | |
MbPlaneItem () | |
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. | |
Curve in two-dimensional space.
A curve in two-dimensional space is a vector function of a scalar parameter, given on a finite one-dimensional space. A curve is continuous mapping of some piece of numeric axis to two-dimensional space.
Two-dimensional curve is used:
for planar modeling,
for description of surface parameters domain,
for construction of curves on surfaces,
for constructing of surfaces intersection curves.
Normal vector to a curve is perpendicular to tangent.
To calculate the direction of normal according curvature, multiply this normal vector by the curvature sign.
|
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.
[in] | forced | - Forced recalculation. |
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyCurve, MbOffsetCurve, MbCosinusoid, MbContour, MbCharacterCurve, and MbArc.
Add a bounding box to rectangle.
Add a bounding box to rectangle with taking into account of transformation matrix. If the transformation matrix is not an identity matrix then there is performed a transformation of object's copy by the matrix and after that a bounding box of the transformed object is added to rectangle. A copy is destroyed after using.
[out] | rect | - A rectangle with information about bounds. |
[in] | matr | - Transformation matrix. |
Reimplemented in MbLine.
Detect the bounding box of a curve.
The sent rectangle becomes empty for getting a bounding box. Then bounding boxes of an object are calculated and saved into a rectangle 'rect'.
Reimplemented in MbHermit, MbCosinusoid, MbArc, MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbContour, MbCharacterCurve, and MbBezier.
Calculate bounding box in the local coordinate system.
For getting a bounding box of an object relatively to the local coordinate system, a sent rectangle becomes empty. After that bounding boxes of an object in the local coordinate system are calculated and saved in a rectangle 'rect'.
[in] | matr | - A transition matrix from the current coordinate system of the object to the local coordinate system. |
[out] | rect | - A rectangle with information about bounds. |
Reimplemented in MbPolyline, MbPointCurve, MbLineSegment, MbLine, MbContour, and MbProjCurve.
|
overridevirtual |
Determine visibility of an object in rectangle.
Determine whether an object is visible in the given rectangle. There is a possibility to perform a fast check or more thorough check when the second parameter has a corresponding value.
[in] | rect | - A given two-dimensional rectangle. |
[in] | exact | - Whether to perform a more thorough check. |
Implements MbPlaneItem.
|
virtual |
Determine whether an object is fully visible in rectangle.
An object is fully contained in the given rectangle if its bounding rectangle is included in the given rectangle.
[in] | rect | - Rectangle to check inclusion to. |
Reimplemented in MbReparamCurve, MbLineSegment, and MbArc.
|
overridevirtual |
Calculate the distance to a point.
Calculate distance to object from a given point near the object. Distance is calculated and stored to 'd' variable if it is less then initial value of 'd'. There can be performance benefit in comparison with DistanceToPoint function due to primarily checking the distance from point to bounding box and performing the further calculations only if this distance is not greater than the given one.
[in] | to | - Point. |
[in,out] | d | - Specified distance from object on input. Distance from point to object on output if operation succeeded. |
Implements MbPlaneItem.
|
pure virtual |
Define whether the curve is periodic.
Define whether the curve is periodic.
A periodic curve is closed. A curve is considered as periodic if:
Implemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyCurve, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbCosinusoid, MbContour, MbCharacterCurve, and MbArc.
|
virtual |
Return period.
Return the period value if a curve can be closed. Let unclosed curve return null.
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbOffsetCurve, and MbArc.
|
virtual |
Define whether the curve is periodic.
Define whether the curve is periodic.
A curve is considered as periodic if:
Reimplemented in MbNurbs.
|
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.
|
virtual |
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 of a curve from its polygon does not exceed the given sag value.
[in] | t | - A parameter defining the point on a curve, at which a step should be calculated. |
[in] | sag | - Maximum feasible sag value. |
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbCosinusoid, MbContour, MbCharacterCurve, MbBezier, and MbArc.
|
virtual |
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.
[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. |
Reimplemented in MbTrimmedCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbCosinusoid, MbContour, MbBezier, MbArc, MbCharacterCurve, and MbReparamCurve.
|
pure virtual |
Calculate the metric length of a curve.
Calculate the metric length of a curve and save the result in the variable 'length'.
[in,out] | length | - Calculated length of a curve. |
Implemented in MbTrimmedCurve, MbReparamCurve, MbPolyCurve, MbPointCurve, MbOffsetCurve, MbLineSegment, MbCosinusoid, MbCharacterCurve, MbArc, MbProjCurve, MbLine, and MbContour.
|
virtual |
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.
[in] | t1 | - Start parameter of a curve section. |
[in] | t2 | - End parameter of a curve section. |
Reimplemented in MbReparamCurve, MbProjCurve, MbPolyline, MbNurbs, MbLineSegment, MbContour, and MbArc.
|
pure virtual |
Calculate the metric length of a curve.
If a length of a curve is already calculated and saved in the object then this function returns the existing result, without repeating of calculations. Otherwise the length is calculated by the function CalculateMetricLength().
Implemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyCurve, MbPointCurve, MbOffsetCurve, MbLineSegment, MbLine, MbCosinusoid, MbContour, MbCharacterCurve, and MbArc.
|
virtual |
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.
[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. |
[in] | version | - Version. |
Reimplemented in MbOffsetCurve, MbReparamCurve, MbPolyline, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbContour, MbBezier, and MbArc.
|
virtual |
Start approximation for the drawing.
Parameters of start and end of approximated part of a curve are checked and corrected this is necessary. There is calculated a first point corresponding to start parameter. There is defined whether it is possible to calculate the next point. The next points are calculated by the function GetNextPoint.
[in] | sag | - Maximal value of sag. |
[in,out] | tbeg | - Parameter corresponding to start of approximated part of a curve. |
[in,out] | tend | - Parameter corresponding to end of approximated part of a curve. |
[in,out] | pnt | - A calculated point. |
[in,out] | existNextPoint | - Flag showing whether the next point should be calculated (true by default) or calculated point corresponds to the end of approximated curve. |
|
virtual |
Calculate the next point.
This function is used for the calculation of curve's approximation after call of the function BeginApprox. In this function a parameter for calculation of the next point of the polygon is defined, a point is calculated and there is defined whether it is an end point.
[in] | sag | - Maximal value of sag. |
[in] | tend | - Parameter corresponding to end of approximated part of a curve. |
[in,out] | tcur | - Input - the value of parameter at the last calculated point. Output - parameter corresponding to the new calculated point. |
[in,out] | pnt | - A calculated point. |
Calculate an array of points for drawing.
Get an array of drawn points with a given sag. If the cure is a contour then knots of a contour are duplicated.
[in] | sag | - Maximal value of sag. |
[in,out] | poligon | - A polygon of calculated points on a curve. |
Reimplemented in MbNurbs.
MbNurbs* MbCurve::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.
[in,out] | nurbs | - A constructed NURBS-curve. |
[in] | nInfo | - Parameters of conversion of a curve to NURBS. |
|
pure 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.
[in,out] | nurbs | - A constructed NURBS-curve. |
[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. |
Implemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbCosinusoid, MbContour, MbCharacterCurve, MbBezier, and MbArc.
|
virtual |
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.
[in] | tParameters | - Parameters for the construction of a NURBS copy of the curve. |
Reimplemented in MbNurbs, MbTrimmedCurve, MbReparamCurve, MbPolyline, MbPointCurve, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbBezier, and MbArc.
|
virtual |
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 curve (or for an arc - exception) 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.
[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. |
Reimplemented in MbProjCurve.
|
pure virtual |
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 curve (or for an arc - exception) 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.
[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] | xyEps | - Two-dimensional accuracy. It is used for estimations near the points corresponding to the parameters t1 and t2. |
[in] | saveParLenAndLaw | - Save parametric length and law. |
Implemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCubicSpline, MbCosinusoid, MbContour, MbCharacterCurve, MbBezier, and MbArc.
Deform the curve.
If the bounding rectangle of a curve intersects the given one, then the curve is transformed according to the matrix with a help of 'Transform' function.
[in] | rect | - A rectangle, in which the visibility of a curve is checked. |
[in] | matr | - A deformation matrix. |
Reimplemented in MbReparamCurve, MbPolyCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbContour, MbBezier, and MbArc.
Delete the piece of a curve.
Delete a part of a curve between parameters t1 and t2. If the curve is split into two parts after deletion, then the initial object corresponds to the start part of a curve, and parameter 'part2' contains the end part of a curve. If the curve remained simply connected, then only the initial object changes.
[in] | t1 | - Start parameter of trimming. |
[in] | t2 | - End parameter of trimming. |
[in,out] | part2 | - The end part of a curve after deletion, if an initial curve is split into parts. It may be the only part after deletions, \ if the curve did not change (e. g. for a curve of MbLine type), in this case the returned value is dp_Degenerated. |
Implemented in MbCubicSpline, MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCosinusoid, MbContour, MbCharacterCurve, MbBezier, and MbArc.
Keep the piece of a curve.
Leave a part of a curve between parameters t1 and t2.
In a case of success the returned value equals dp_Changed and a curve satisfies to the next conditions:
[in] | t1 | - Start parameter of trimming. |
[in] | t2 | - End parameter of trimming. |
[in,out] | part2 | - This may be filled by a result of trimming if the curve was not changed. In this case the returned value is dp_Degenerated. Otherwise nullptr is returned. |
Implemented in MbCubicSpline, MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPointCurve, MbOffsetCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCosinusoid, MbContour, MbCharacterCurve, MbBezier, and MbArc.
|
virtual |
Define the point position relative to the curve.
There is defined on which side from a curve the point is located, by the positive direction of a curve.
[in] | pnt | - A given point. |
[in] | eps | - A tolerance of detection. |
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbPolyline, MbPointCurve, MbLineSegment, MbContour, MbArc, and MbLine.
|
virtual |
Calculate the point projection to the curve.
Calculate the parameter of the curve corresponding to the projection of the given point on this curve.
This function does not allow the parameter to go beyond the parametric domain of the definition of an unclosed curve, unlike the NearPointProjection function.
[in] | pnt | - A given point. |
Reimplemented in MbCubicSpline, MbTrimmedCurve, MbProjCurve, MbPointCurve, MbNurbs, MbLineSegment, MbHermit, MbCosinusoid, MbArc, MbReparamCurve, MbPolyline, MbLine, and MbContour.
MbeNewtonResult MbCurve::PointProjectionNewton | ( | const MbCartPoint & | p, |
double | xEpsilon, | ||
double | yEpsilon, | ||
size_t | iterLimit, | ||
double & | t, | ||
bool | ext | ||
) | const |
Find the point projection to the curve.
Find the point projection to the curve or its extension by the Newton method with the given initial approximation.
[in] | p | - A given point. |
[in] | xEpsilon | - A tolerance of detection of the projection by x axis. |
[in] | yEpsilon | - A tolerance of detection of the projection by y axis. |
[in] | iterLimit | - The maximum number of iterations. |
[in] | 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. |
|
virtual |
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.
[in] | pnt | - A given point. |
[in] | xEpsilon | - A tolerance of detection of the projection by x axis. |
[in] | yEpsilon | - A tolerance of detection of the projection by y axis. |
[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. |
Reimplemented in MbReparamCurve, MbProjCurve, MbPointCurve, MbNurbs, MbLineSegment, MbLine, MbHermit, MbCosinusoid, MbArc, and MbContour.
|
inline |
Calculate the point projection to the curve.
Calculate the point on the curve corresponding to the projection of the given point on this curve.
[in] | pnt | - A given point. |
[in,out] | on | - The required point - projection. |
void MbCurve::BasePointProjection | ( | const MbCartPoint & | pnt, |
MbCartPoint & | on | ||
) | const |
Calculate the point projection to the curve.
Calculate the point on the curve corresponding to the projection of the given point on this curve. If a curve is trimmed then a projection to the base curve is calculated.
[in] | pnt | - A given point. |
[in,out] | on | - The required point - projection. |
|
inline |
Calculate the point projection to the curve.
Calculate the point on the curve corresponding to the projection of the given point on this curve. Additionally returns an inclination angle of a tangent to the axis OX at the point of projection.
[in,out] | on | - Input - an initial point. Output - a projection point on a curve. |
[in,out] | angle | - A calculated inclination angle of a curve to the axis OX. |
bool MbCurve::DirectPointProjection | ( | const MbCartPoint & | pnt, |
const MbDirection & | dir, | ||
MbCartPoint & | pp | ||
) | const |
Calculate the point projection to the curve.
Calculate the nearest point of intersection between a curve and a ray from the given point 'pntp by the direction 'dir'. We consider the points lying over the starting point pnt beam at a distance exceeding Math :: paramEpsilon.
[in] | pnt | - A given point. |
[in] | dir | - A given direction. |
[in,out] | pp | - Required point on the curve. |
|
virtual |
Find the nearest perpendicular to the curve.
Find the nearest perpendicular to the curve from the given point. In this function perpendiculars to an extension of a curve are not considered.
[in] | pnt | - A given point. |
[in,out] | tProj | - Parameter on a curve, corresponding to the point on a curve, which the perpendicular is passed through. |
Reimplemented in MbReparamCurve, and MbArc.
|
virtual |
Find tangents to a curve.
Find all tangents to a curve from the given point. A point may belong to a curve. In this function a curve without extensions is considered.
[in] | pnt | - A given point. |
[in,out] | tFind | - An array of parameters of a curve, corresponding to the tangent points. |
Reimplemented in MbReparamCurve, MbNurbs, MbBezier, MbArc, and MbContour.
|
virtual |
Find perpendiculars to a curve.
Find all perpendiculars to a curve from the given point. In this function a curve without extensions is considered.
[in] | pnt | - A given point. |
[in,out] | tFind | - An array of parameter on a curve, corresponding to the points on a curve, which the perpendiculars are passed through. |
Reimplemented in MbReparamCurve, MbLineSegment, MbLine, MbArc, and MbContour.
Find intersections of a curve with horizontal line.
Find intersections of a curve with horizontal line.
[in] | y | - An ordinate of points of a horizontal line. |
[in,out] | cross | - An array of parameters of a curve corresponding to the intersection points. |
Reimplemented in MbPointCurve, MbLineSegment, MbLine, MbCosinusoid, MbArc, MbReparamCurve, MbPolyline, MbHermit, MbCubicSpline, and MbContour.
Find intersections of a curve with vertical line.
Find intersections of a curve with vertical line.
[in] | x | - An abscissa of points of a vertical line. |
[in,out] | cross | - An array of parameters of a curve corresponding to the intersection points. |
Reimplemented in MbPointCurve, MbLineSegment, MbLine, MbCosinusoid, MbArc, MbReparamCurve, MbPolyline, MbHermit, MbCubicSpline, and MbContour.
Construct isoclines.
Construct lines at an angle to the axis OX and tangent to the curve.
[in] | angle | - A vector defining an inclination angle of line to the axis OX. |
[in,out] | tFind | - An array of parameters of a curve, corresponding to the tangent points. |
Reimplemented in MbTrimmedCurve, MbPolyline, and MbArc.
Construct horizontal isoclines.
Construct horizontal lines tangent to the curve.
[in,out] | tFind | - An array of parameters of a curve, corresponding to the tangent points. |
Construct vertical isoclines.
Construct vertical lines tangent to the curve.
[in,out] | tFind | - An array of parameters of a curve, corresponding to the tangent points. |
|
virtual |
Find self-intersections of curve.
Find the points of self-intersection of a curve and the corresponding parameters.
[in,out] | crossPnt | - An array of points of self-intersection. |
Reimplemented in MbReparamCurve, MbPolyline, and MbContour.
Find the special points of an offset curve.
Special points of an offset curve are the points where the curvature radius of the initial curve equals to the value of shift of an offset curve.
[in,out] | tCusps | - An array of parameters of special points. |
[in] | dist | - Shift of the offset curve. |
Reimplemented in MbReparamCurve, MbOffsetCurve, MbNurbs, MbContour, and MbBezier.
|
virtual |
Create a curve through a point.
Change a curve such that it passes through the given point. Changes should not affect the whole curve. If the curve has any base objects, then the connection with them should not be modified. If the curve cannot be constructed, then the initial curve will not change, false is returned.
[in] | pnt | - A given point. |
Reimplemented in MbReparamCurve, MbNurbs, and MbPolyline.
|
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 (PARAM_REGION by default). \params[in] accuracy - The maximum curve deviation from an arc (PARAM_REGION by default).
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbNurbs, MbContour, and MbArc.
|
virtual |
Calculate a point to construct an axis.
Calculates a point to construct an axis, if a curve may be constructed by rotation of a point around an axis.
Reimplemented in MbTrimmedCurve, MbOffsetCurve, MbNurbs, MbArc, MbReparamCurve, MbProjCurve, and MbContour.
|
virtual |
Calculate minimal length of a curve between two points on it.
If a curve is not closed, then the length between points is clearly defined. If a curve is closed, then there is chosen the shortest path from the two possible paths. For a closed curve the desired part may be defined by the control points pc. In this case the such part of a curve is chosen, which is closer to a control point.
[in] | p1 | - The first point. |
[in] | p2 | - The second point |
[in] | pc | - A control point |
Reimplemented in MbReparamCurve, MbLineSegment, and MbLine.
void MbCurve::CorrectCyclicParameter | ( | double & | t, |
double | eps = Math::paramRegion |
||
) | const |
Correct parameter for closed curves.
If the curve is closed, then the function sets the parameter t to the range of the curve. Besides, if t differs from one of bounding parameters by a value which is less than eps, then it becomes equal to the bounding parameter.
[in,out] | t | - Input - given value of parameter, output - corrected value of parameter. |
[in] | eps | - A tolerance of getting to the bound of the range. |
void MbCurve::CorrectParameter | ( | double & | t | ) | const |
Correct parameter.
The function sets the parameter t to the range of the curve.
[in,out] | t | - Input - given value of parameter, output - corrected value of parameter. |
|
virtual |
Define whether a reparameterized curve is the same.
Define whether a reparameterized curve is the same.
[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 MbNurbs.
|
inline |
Calculate the boundary point.
Calculate the boundary point.
[in] | number | - A number of a boundary point. The value 1 corresponds to the start point of a curve, 2 - to the end point. |
|
inline |
Calculate the boundary point.
Calculate the boundary point.
[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] | pnt | - A calculated point. |
Calculate a tangent vector to the boundary point.
Calculate a normalized tangent vector to the boundary point.
[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 |
|
inline |
Calculate a tangent vector and point at the end of a curve.
Calculate a normalized tangent vector and point at the end of a curve.
[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] | pnt | - A calculated point. |
[in,out] | v | - Tangent vector |
|
inline |
Are boundary points equal?
Are curve boundary points equal?
|
virtual |
Return a specific point of a curve.
Return a specific point of a curve if the distance from it to the given point is less than dmax. Specific points of a bounded curve are its start and end points.
[in] | from | - A control point |
[in,out] | dmax | - Input - maximum distance for search of specific point. Output - a distance from the point 'from' to the found specific point. |
[in,out] | pnt | - Tangent vector. |
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbPolyCurve, MbLineSegment, MbContour, and MbArc.
|
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 MbTrimmedCurve, MbReparamCurve, MbProjCurve, MbPolyline, MbPolyCurve, MbOffsetCurve, MbLineSegment, MbContour, MbCharacterCurve, and MbArc.
|
virtual |
Get the boundaries of the curve sections that are described by one analytical function.
Get the boundaries of the curve sections that are described by one analytical function.
The function was introduced to optimize the implementation of the function MbCurve3D :: GetCurvatureSpecialPoints, so as not to calculate the break points.
[out] | params | - Curve parameters in which the analytical function changes. |
Reimplemented in MbTrimmedCurve, MbReparamCurve, MbNurbs, MbHermit, MbCubicSpline, MbContour, and MbBezier.
|
virtual |
Get properties of the object.
Set properties of the object. Get the basis points of the curve.
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?
[out] | contLength | - The length is continuous (true/false). |
[out] | contDirect | - The direction of the first derivative is continuous (true/false). |
[out] | params | - The parameters of the points at which the direction break occurs. |
[in] | epsilon | - The accuracy of the calculation. |
Reimplemented in MbReparamCurve, MbPolyline, MbOffsetCurve, MbNurbs, MbContour, and MbBezier.
|
virtual |
Eliminate the discontinuities of the first derivative at length.
Eliminate the discontinuities of the first derivatives of the length.
[in] | epsilon | - The accuracy of the calculation. |
[in] | version | - Math version. |
Reimplemented in MbReparamCurve, MbPolyline, MbOffsetCurve, MbNurbs, MbContour, and MbBezier.
bool MbCurve::IsSpaceNear | ( | const MbCurve & | curve, |
double | eps, | ||
bool | ext, | ||
double | devSag = 5.0 *Math::deviateSag |
||
) | const |
Check whether the two curves are metrically close.
The proximity of curves is defined by equality of their ends and the distance of an arbitrary point of one curve to another curve. Curves may differ parametrically.
[in] | curve | - A curve to compare with. |
[in] | eps | - The maximum allowed distance between the nearest points of two curves. |
[in] | ext | - A flag defines whether the curve 'curve' may be extended when necessary. If ext = true then the curve may be extended. |
[in] | devSag | - Maximal value of sag. |
bool MbCurve::IsSpaceNear | ( | const MbCurve & | curve, |
double | xEps, | ||
double | yEps, | ||
bool | ext, | ||
double | xNear, | ||
double | yNear, | ||
double | devSag = 5.0 *Math::deviateSag |
||
) | const |
Check whether the two curves are metrically close.
The proximity of curves is defined by equality of their ends and the distance of an arbitrary point of one curve to another curve. Curves may differ parametrically.
[in] | curve | - A curve to compare with. |
[in] | xEps | - A tolerance of detection of the projection by x axis. |
[in] | yEps | - A tolerance of detection of the projection by y axis. |
[in] | ext | - A flag defines whether the curve 'curve' may be extended when necessary. If ext = true then the curve may be extended. |
[in] | xNear | - The maximum allowed distance along X between the nearest points of two curves. |
[in] | yNear | - The maximum allowed distance along Y between the nearest points of two curves. |
[in] | devSag | - Maximal value of sag. |
|
virtual |
Extend the curve.
Extend the curve according to the given parameters.
[in] | parameters | - Parameters of extension. |
[out] | resCurve | - The extended curve or nullptr if extension is impossible. |
Reimplemented in MbTrimmedCurve, MbNurbs, MbLineSegment, MbContour, and MbArc.