C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Cubic spline in two-dimensional space. More...
#include <cur_cubic_spline.h>
Public Member Functions | |
virtual | ~MbCubicSpline () |
Destructor. | |
Spline initialization functions. | |
bool | Init (const MbCurve &, VERSION version) |
Initializer by a given curve. | |
bool | Init (const SArray< MbCartPoint > &, bool) |
Initializer by points and an attribute of closedness. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< MbVector > &, bool) |
Initializer by points, second derivatives and closedness attribute. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< double > &, bool) |
Initializer by points, parameters and closedness attribute. | |
bool | Init (const SArray< MbCartPoint > &, const SArray< MbVector > &, const SArray< double > &, bool) |
Initializer by points, second derivatives, parameters and closedness attribute. | |
void | InitC (const MbCubicSpline &) |
Duplicating initializer. | |
Common functions of a geometric object. | |
MbePlaneType | IsA () const override |
Get the object type. | |
bool | SetEqual (const MbPlaneItem &) override |
Make the objects equal. More... | |
bool | IsSame (const MbPlaneItem &, double accuracy=LENGTH_EPSILON) const override |
Determine whether objects are equal. More... | |
void | Transform (const MbMatrix &, MbRegTransform *ireg=nullptr, const MbSurface *newSurface=nullptr) override |
Transform according to the matrix. More... | |
void | Move (const MbVector &, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Translate along a vector. More... | |
void | Rotate (const MbCartPoint &, const MbDirection &, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Rotate about a point. More... | |
MbPlaneItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Create a copy. More... | |
Functions describing the domain of a curve. | |
double | GetTMin () const override |
Get the minimum value of parameter. | |
double | GetTMax () const override |
Get the maximum value of parameter. | |
Functions for working in the domain of a curve. | |
Functions: PointOn, FirstDer, SecondDer, ThirdDer,... correct the parameter when it is out of domain bounds. The exception is MbLine (line). | |
void | PointOn (double &, MbCartPoint &) const override |
Calculate a point on the curve. More... | |
void | FirstDer (double &, MbVector &) const override |
Calculate first derivative. | |
void | SecondDer (double &, MbVector &) const override |
Calculate second derivative. | |
void | ThirdDer (double &, MbVector &) const override |
Calculate third derivative. | |
Functions for get of the group of data inside and outside the curve's domain of parameter. | |
void | Explore (double &t, bool ext, MbCartPoint &pnt, MbVector &fir, MbVector *sec, MbVector *thir) const override |
Calculate point and derivatives of object for given parameter. More... | |
void | FourDer (double &, MbVector &) const |
Estimate the fourth derivative. | |
void | PointOnLine (double &, MbCartPoint &) const |
Calculate a point on the curve with a linear approximation. | |
Functions of the motion along the 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... | |
Common functions of curve | |
void | Rebuild () override |
Rebuild curve. | |
void | SetClosed (bool cls) override |
Set attribute of closedness. | |
void | Inverse (MbRegTransform *iReg=nullptr) override |
Set the opposite direction of curve. | |
MbCurve * | Trimmed (double t1, double t2, int sense, const MbDimAccuracy &xyEps, bool saveParamLenAndLaw) const override |
Construct a trimmed curve. More... | |
MbCurve * | TrimmedBreak (double t1, double t2, int sense, const MbDimAccuracy &xyEps=MbDimAccuracy::twoDimAcc) const |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo &) const override |
Construct a NURBS copy of a curve. More... | |
MbCurve * | NurbsCurve (const MbNurbsParameters &) const override |
Construct a NURBS copy of a curve. More... | |
MbeState | DeletePart (double, double, MbCurve *&) override |
Delete the piece of a curve. More... | |
MbeState | TrimmPart (double, double, MbCurve *&) override |
Keep the piece of a curve. More... | |
bool | IsDegenerate (double eps=Math::LengthEps) const override |
Define whether the curve is degenerate.. | |
void | GetProperties (MbProperties &properties) override |
Get properties of the object. More... | |
void | SetProperties (const MbProperties &properties) override |
Change properties of the object. More... | |
double | CalculateMetricLength () const override |
Calculate the metric length of a curve. | |
bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::LengthEps, VERSION version=Math::DefaultMathVersion()) const override |
Translate parameter along the curve. More... | |
void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) const override |
Get the boundaries of the curve sections that are described by one analytical function. | |
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... | |
Common functions of a polygonal curve | |
void | InsertPoint (ptrdiff_t index, const MbCartPoint &) override |
Insert a point to the array of control points. More... | |
void | InsertPoint (double t, const MbCartPoint &, double xEps, double yEps) override |
Insert a point to the array of control points. More... | |
void | ChangePoint (ptrdiff_t index, const MbCartPoint &) override |
Replace a point. More... | |
void | RemovePoints () override |
Remove all points. | |
void | GetRuleInterval (ptrdiff_t index, double &t1, double &t2) const override |
Get the range of influence of point of the curve. More... | |
double | PointProjection (const MbCartPoint &to) const override |
Calculate the point projection to the curve. More... | |
void | IntersectHorizontal (double y, SArray< double > &) const override |
Find intersections of a curve with horizontal line. More... | |
void | IntersectVertical (double x, SArray< double > &) const override |
Find intersections of a curve with vertical line. More... | |
bool | CheckParam (double &t, ptrdiff_t &i0, ptrdiff_t &i1, double &t0, double &t1) const override |
Drive a parameter into the curve domain. More... | |
double | GetParam (ptrdiff_t i) const override |
Get parameter corresponding to the point with specified index. | |
size_t | GetParamsCount () const override |
Get count of parameters. | |
virtual MbCurve * | CicleCopy (double t1, double t2) const |
Creation of a curve copy. More... | |
void | InitCreate (MbVector &, MbVector &, SArray< MbVector > &, double &, double &, double &, double &, bool black=false) |
Prepare the calculation of the spline. More... | |
void | Create (MbVector &, MbVector &, bool black=false) |
Solve the system by Gaussian elimination method. | |
void | CreateEndS (MbVector &, MbVector &) |
Calculate derivatives at the ends if the spline is not closed. | |
void | Create () |
Create a spline if necessary. | |
void | Delete () |
Clear the curve. | |
bool | SetLimitParam (double newTMin, double newTMax) |
Set the range of parameter: the first is minimum, the second is maximum. | |
bool | ConvertToClosed () |
Convert to a closed curve if the curve is unclosed but the ends of the curve are connected smoothly. | |
void | SetBegEndDerivesEqual () override |
Set equal derivatives at the ends. | |
void | ClosedBreak () override |
Make curve open, keeping coincidence of the beginning and the end. | |
double | StepD (double &t, double sag, bool bfirst, double ang=0.35) const |
Calculation of a step of approximation. | |
ptrdiff_t | GetVectorListCount () const |
Get the number of elements in array of derivative vectors. | |
void | GetVectorList (SArray< MbVector > &vectors) const |
Get the array of second derivatives at the control points. | |
const MbVector & | GetVectorList (size_t i) const |
Get the vector of the second derivative with index i. | |
MbVector & | SetVectorList (size_t i) |
Get the vector of the second derivative with index i. | |
ptrdiff_t | GetTListCount () const |
Get the number of parameters in knots. | |
void | GetTList (SArray< double > ¶ms) const override |
Get the array of parameters in knots. | |
const double & | GetTList (size_t i) const |
Get the value of parameter for the point with index i. | |
ptrdiff_t | GetUppParam () const |
Get the number of spline segments. | |
ptrdiff_t | GetIndex (double t) const |
Determination of the maximum index of parameter array on the left. | |
![]() | |
virtual | ~MbPolyCurve () |
Destructor. | |
MbePlaneType | Type () const override |
Get the group type of the object. | |
void | AddYourGabaritTo (MbRect &r) const override |
Extend the given bounding rectangle so that it encloses this object. | |
void | Refresh () override |
Set all temporary (mutable) data of object to undefined (initial) state. | |
void | PrepareIntegralData (const bool forced) const override |
Calculate temporary (mutable) data of an object. More... | |
bool | IsClosed () const override |
Define whether the curve is periodic. More... | |
bool | IsStraight (bool ignoreParams=false) const override |
Define whether the curve is rectilinear.. | |
bool | HasLength (double &length) const override |
Calculate the metric length of a curve. More... | |
MbeState | Deformation (const MbRect &, const MbMatrix &) override |
Deform the curve. More... | |
bool | IsInRectForDeform (const MbRect &r) const override |
Determine visibility of a curve in rectangle. | |
size_t | GetCount () const override |
Define the number of splittings for one passage in operations. | |
double | GetMetricLength () const override |
Calculate the metric length of a curve. More... | |
double | GetLengthEvaluation () const override |
Calculate the metric length of a curve. More... | |
bool | GetSpecificPoint (const MbCartPoint &from, double &dmax, MbCartPoint &pnt) const override |
Return a specific point of a curve. More... | |
void | GetBasisPoints (MbControlData &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData &) override |
Change the object by control points. | |
virtual size_t | GetPointsCount () const |
Get count of control points. | |
virtual void | GetPoint (ptrdiff_t index, MbCartPoint &pnt) const |
Get control point. More... | |
virtual ptrdiff_t | GetNearPointIndex (const MbCartPoint &pnt) const |
Get index of the point nearest to the given one. | |
virtual void | RemovePoint (ptrdiff_t index) |
Remove control point with given index. | |
virtual void | AddPoint (const MbCartPoint &pnt) |
Add point to the end of the array of control points. | |
virtual bool | ChangePointsValue (const SArray< MbCartPoint > &pntList) |
Change control points. More... | |
virtual void | AddAfter (const MbCartPoint &pnt, ptrdiff_t index) |
Insert a point to the array of control points. More... | |
virtual void | InsertPoint (double t, const MbCartPoint &pnt, const MbVector &v, double xEps, double yEps) |
Insert a point to the array of control points. More... | |
virtual void | ChangePole (ptrdiff_t index, const MbCartPoint &pnt) |
Replace a pole. More... | |
size_t | GetPointListCount () const |
Get count of control points. | |
ptrdiff_t | GetPointListMaxIndex () const |
Get maximal index of array of control points. | |
template<class PointsVector > | |
void | GetPoints (PointsVector &pnts) const |
Get array of control points. | |
void | GetPointList (SArray< MbCartPoint > &pnts) const |
Get array of control points. | |
void | GetPointList (c3d::ParamPointsVector &pnts) const |
Get array of control points. | |
bool | ReplacePoints (const SArray< MbCartPoint > &pnts) |
Replace the set of control points. | |
bool | ReplacePoints (const std::vector< MbCartPoint > &pnts) |
Replace the set of control points. | |
const MbCartPoint & | GetPointList (size_t i) const |
Get control point with the given index. | |
MbCartPoint & | SetPointList (size_t i) |
Get control point with the given index. | |
ptrdiff_t | GetUppIndex () const |
Get the maximal index of array of control points. | |
size_t | GetSegmentsCount () const |
Get count of ranges. | |
template<class SegmentsVector > | |
void | GetLineSegments (SegmentsVector &segments, double eps=PARAM_PRECISION) const |
Get the array of segments. | |
bool | NurbsParam (double epsilon, double &pmin, double &pmax, ptrdiff_t &i1, double &t1, ptrdiff_t &i2, double &t2) const |
Get information for NurbsCurve function. More... | |
![]() | |
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. | |
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... | |
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... | |
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... | |
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). | |
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 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 | IsBounded () const |
Define whether the curve is bounded. | |
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 | CalculateLength (double t1, double t2) const |
Calculate the metric length of a curve. More... | |
virtual void | ResetTCalc () const |
Reset the current value of parameter. | |
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 MbCurve * | Trimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const |
Construct a trimmed curve. More... | |
virtual MbContour * | NurbsContour () const |
Approximate of a curve by the contour from NURBS curves. | |
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. | |
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 | 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. | |
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 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 | 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 | 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. | |
![]() | |
virtual | ~MbPlaneItem () |
Destructor. | |
void | PrepareWrite () const |
Object registration. More... | |
MbeRefType | RefType () const override |
Get the registration type (for copying, duplication). | |
virtual void | Rotate (const MbCartPoint &pnt, double angle, MbRegTransform *iReg=nullptr, const MbSurface *newSurface=nullptr) |
Rotate about a point. More... | |
virtual bool | IsSimilar (const MbPlaneItem &item) const |
Determine whether the objects are similar. More... | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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. | |
Static Public Member Functions | |
static MbCubicSpline * | Create (const MbCubicSpline &other) |
Create copy of spline. More... | |
static MbCubicSpline * | Create (const MbCurve &curve, VERSION version) |
Create spline. More... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, bool cls) |
Create spline. More... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, bool cls) |
Create spline. More... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< double > ¶ms, bool cls) |
Create spline. More... | |
static MbCubicSpline * | Create (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, const SArray< double > ¶ms, bool cls) |
Create spline. More... | |
Protected Member Functions | |
MbCubicSpline () | |
Constructor by default. | |
MbCubicSpline (const MbCubicSpline &other) | |
Duplicating constructor. Constructor by a given curve. | |
MbCubicSpline (const SArray< MbCartPoint > &points, bool cls) | |
Constructor. More... | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, bool cls) | |
Constructor by points, second derivatives and closedness attribute. | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< double > ¶ms, bool cls) | |
Constructor by points, parameters and closedness attribute. | |
MbCubicSpline (const SArray< MbCartPoint > &points, const SArray< MbVector > &seconds, const SArray< double > ¶ms, bool cls) | |
Constructor by points, second derivatives, parameters and closedness attribute. | |
![]() | |
MbPolyCurve () | |
Default constructor. | |
MbPolyCurve (const MbPolyCurve &pCurve) | |
Copy-constructor. | |
virtual bool | CanChangeClosed () const |
Determine whether it is possible to change an attribute of closedness. | |
![]() | |
MbCurve () | |
Default constructor. | |
MbCurve (const MbCurve &other) | |
Copy-constructor. | |
![]() | |
MbPlaneItem () | |
Constructor. | |
![]() | |
MbRefItem () | |
Constructor without parameters. | |
Protected Attributes | |
SArray< MbVector > | vectorList |
Set of second derivatives at the control points. | |
SArray< double > | tList |
Set of parameters at the control points. | |
ptrdiff_t | splinesCount |
Maximal value of index in the parameters tList. | |
![]() | |
SArray< MbCartPoint > | pointList |
Set of control points. | |
ptrdiff_t | uppIndex |
Count of curve pieces (is equal to count of control points minus one). | |
bool | closed |
An attribute of curve closedness. | |
MbRect | rect |
Bounding rectangle. | |
atomic_double | metricLength |
Metric length of a spline. | |
![]() | |
SimpleName | name |
A curve name. The object data is temporary and used internally. | |
Cubic spline in two-dimensional space.
Cubic spline is defined by control points "pointList" and spline parameter values in the control points. By control points of the spline and parameter values in the control points there are calculated second derivatives of the spline vectorList in the control points. For unclosed curve the sets pointList, vectorList and tList must contain the same number of elements. For closed curve the number of elements tList must be one greater than the number of elements of pointList and vectorList. Cubic spline passes through its control points for parameter values from the set tList. On each region between two neighboring control points the spline is described by the cubic polynomial. Cubic polynomials are smoothly connected at the control points and they have continuous second derivatives at these points. The second derivatives between the two neighboring control points of spline are changed linearly.
|
protected |
Constructor.
Constructor by points and an attribute of closedness.
[in] | points | - A knot set. In the case of unclosed curve the number of points must be not less than two, in the case of closed curve - not less than three. If the number of points does not comply with the requirements - curve behavior is undefined. |
[in] | cls | - An attribute of curve closedness. |
|
static |
Create copy of spline.
Create copy of spline.
|
static |
Create spline.
Create spline by a given curve and set parameters of spline.
[in] | curve | - Given curve. |
|
static |
Create spline.
Create spline and set parameters of spline.
[in] | points | - Set of control points. |
[in] | cls | - A closedness attribute. |
|
static |
Create spline.
Create spline and set parameters of spline.
[in] | points | - Set of control points. |
[in] | seconds | - Set of second derivatives at the control points. |
[in] | cls | - A closedness attribute. |
|
static |
Create spline.
Create spline and set parameters of spline.
[in] | points | - Set of control points. |
[in] | params | - Set of parameters at the control points. |
[in] | cls | - A closedness attribute. |
|
static |
Create spline.
Create spline and set parameters of spline.
[in] | points | - Set of control points. |
[in] | seconds | - Set of second derivatives at the control points. |
[in] | params | - Set of parameters at the control points. |
[in] | cls | - A closedness attribute. |
|
overridevirtual |
Make the objects equal.
It is possible to make equal only similar objects. Similar object is equated to a given one by changing of numerical data.
[in] | item | - Object for initialization. |
Implements MbPlaneItem.
|
overridevirtual |
Determine whether objects are equal.
Objects of the same types with similar (equal) data are considered to be equal.
[in] | item | - Object for comparison. |
[in] | accuracy | - The accuracy. |
Implements MbPlaneItem.
|
overridevirtual |
Transform according to the matrix.
Transform the initial object according to the matrix using the registrator. If the object contains references to the other geometric objects, then the nested objects are transformed according to the matrix. The registrator is used for preventing multiple transformation of the object. The function can be used without the registrator to transform a single object. The registrator must be used to transform a set of interdependent objects to prevent repeated transformation of the nested objects, since it is not ruled out that several objects from the set contain references to one or several common objects subject to transformation.
[in] | matr | - A transformation matrix. |
[in] | iReg | - Registrator. |
[in] | surface | - New base surface of object provided that 'matr' is a transformation matrix from the old surface to a new one. For transformation of projection curve. It isn't considered if the surface is planar. |
Implements MbPlaneItem.
|
overridevirtual |
Translate along a vector.
Translate a geometric object along the vector using the registrator. If the object contains references to the other objects, then the translation operation is applied to the nested objects. The registrator is used for preventing multiple transformation of the object. The function can be used without the registrator to transform a single object. The registrator must be used to transform a set of interdependent objects to prevent repeated transformation of the nested objects, since it is not ruled out that several objects from the set contain references to one or several common objects subject to translation.
[in] | to | - Translation vector. |
[in] | iReg | - Registrator. |
[in] | surface | - New base surface of object provided that 'matr' is a transformation matrix from the old surface to a new one. For transformation of projection curve. It isn't considered if the surface is planar. |
Implements MbPlaneItem.
|
overridevirtual |
Rotate about a point.
Rotate an object about a point by the given angle using the registrator. If the object contains references to the other geometric objects, then the rotation operation is applied to the nested objects too. The registrator is used for preventing multiple transformation of the object. The function can be used without the registrator to transform a single object. The registrator must be used to transform a set of interdependent objects to prevent repeated transformation of the nested objects, since it is not ruled out that several objects from the set contain references to one or several common objects subject to rotation.
[in] | pnt | - Fixed point. |
[in] | angle | - The rotation angle. |
[in] | iReg | - Registrator. |
[in] | surface | - New base surface of object provided that 'matr' is a transformation matrix from the old surface to a new one. For transformation of projection curve. It isn't considered if the surface is planar. |
Implements MbPlaneItem.
|
overridevirtual |
Create a copy.
Create a copy of the object using the registrator. The registrator is used for preventing multiple copying of an object. If the object contains references to other objects, then the included objects are copied too. It is allowed not to pass the registrator to a function. Then the new copy of the object will be created. It is allowed not to use the registrator while copying a single object or a set of disconnected objects. The registrator must be used to copy several correlated objects successively. It is possible that the objects' connection means that the objects contain references to the common objects. Then, while copying without using the registrator, one can get a set of copies which contain references to the different copies of a single included object, what leads to loss of connection between the copies.
[in] | iReg | - Registrator. |
Implements MbPlaneItem.
|
overridevirtual |
Calculate a point on the curve.
Correct parameter when getting out of domain bounds and calculate a point on the curve.
[in] | t | - Curve parameter. |
[out] | p | - A point on the curve. |
Implements MbCurve.
|
overridevirtual |
Calculate point and derivatives of object for given parameter.
Values of point and derivatives are calculated on parameter area and on extended curve.
[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 MbCurve.
|
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 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 from MbCurve.
|
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.
[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 from MbCurve.
|
overridevirtual |
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'.
[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. |
Implements MbCurve.
|
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.
[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. |
Implements MbCurve.
|
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.
[in] | tParameters | - Parameters for the construction of a NURBS copy of the curve. |
Reimplemented from MbCurve.
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. |
Implements MbCurve.
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. |
Implements MbCurve.
|
overridevirtual |
Get properties of the object.
Get internal data (properties) of an object for viewing and modification.
[in] | properties | - Container for internal data of an object. |
Implements MbPlaneItem.
|
overridevirtual |
Change properties of the object.
Change internal data (properties) of object is performed by copying of corresponding values from the given object.
[in] | properties | - Container for internal data of an object. |
Implements MbPlaneItem.
|
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.
[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 from MbCurve.
|
overridevirtual |
Insert a point to the array of control points.
Insert the given point by index.
[in] | pnt | - A given point. |
[in] | index | - Index to insert a point by. |
Implements MbPolyCurve.
|
overridevirtual |
Insert a point to the array of control points.
Insert a point which corresponds to parameter 't' of the curve. If parameter 't' differs from the parameter of some point less than by the given tolerance, then the new point isn't inserted, already existent point close by parameter is replaced.
[in] | t | - Parameter of the new point. |
[in] | pnt | - A given point. |
[in] | xEps | - Tolerance in x direction. |
[in] | yEps | - Tolerance in y direction. |
Implements MbPolyCurve.
|
overridevirtual |
Replace a point.
Replace a point.
[in] | index | - Index of a point to be changed. |
[in] | pnt | - A given point. |
Reimplemented from MbPolyCurve.
|
overridevirtual |
Get the range of influence of point of the curve.
Determines which range of curve parameter will be affected by changing of the control point with 'index' index.
[in] | index | - Index of control point. |
[out] | t1 | - Minimal parameter of the range of influence. |
[out] | t2 | - Maximal parameter of the range of influence. |
Implements MbPolyCurve.
|
overridevirtual |
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 from MbCurve.
|
overridevirtual |
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 from MbCurve.
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 from MbCurve.
|
overridevirtual |
Drive a parameter into the curve domain.
Check parameter. If it is out of the range of the curve parameters, then in case of closed curve drive it into the definition domain with changing by period. In case of open curve - make equal to the nearest boundary parameter. Determine indices of control points the given parameter is between, and also determine their parametric values.
[in,out] | t | - On input - the given parameter. On output - parameter in the curve definition domain. |
[out] | i0 | - Index of control point to the left of the given parameter. |
[out] | i1 | - Index of control point to the right of the given parameter. |
[out] | t0 | - Parameter of control point to the left of the given parameter. |
[out] | t1 | - Parameter of control point to the right of the given parameter. |
Implements MbPolyCurve.
|
virtual |
Creation of a curve copy.
Creation of a curve copy by cyclic flip of a curve part starting at t1 or t2 for a closed spatial curve on the surface.
[in] | t1 | - The first parameter of copied part of the curve. |
[in] | t2 | - The second parameter of copied part of the curve. |
void MbCubicSpline::InitCreate | ( | MbVector & | , |
MbVector & | , | ||
SArray< MbVector > & | , | ||
double & | , | ||
double & | , | ||
double & | , | ||
double & | , | ||
bool | black = false |
||
) |
Prepare the calculation of the spline.
Prepare parameters for calculation of a cubic spline. If a curve is not closed and "black" is true then the system has a solution when knot is absent.
virtual MbCurve* MbCurve::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 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. |
virtual MbCurve* MbCurve::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 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. |