C3D Toolkit
Kernel - 117958, Vision - 2.7.6.12
|
Contour in two-dimensional space. More...
#include <cur_contour.h>
Public Member Functions | |
MbContour () | |
Empty contour. | |
template<class Curves > | |
MbContour (const Curves &initCurves, bool sameCurves) | |
Constructor by curves vector. More... | |
Common functions of a geometric object. | |
MbePlaneType | IsA () const override |
Get the object type. | |
MbePlaneType | Type () const override |
Get the group type of the object. | |
MbPlaneItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Create a copy. More... | |
bool | IsSimilar (const MbPlaneItem &) const override |
Determine whether the objects are similar. More... | |
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 &angle, MbRegTransform *=nullptr, const MbSurface *newSurface=nullptr) override |
Rotate about a point. More... | |
MbCurve * | Offset (double rad) const override |
Construct the equidistant curve which is shifted by the given value. More... | |
void | AddYourGabaritTo (MbRect &) const override |
Extend the given bounding rectangle so that it encloses this object. | |
void | CalculateGabarit (MbRect &) const override |
Detect the bounding box of a curve. More... | |
void | CalculateLocalGabarit (const MbMatrix &into, MbRect &local) const override |
Calculate bounding box in the local coordinate system. More... | |
const MbRect & | GetGabarit () const |
const MbRect & | GetCube () const |
void | SetDirtyGabarit () const |
Reset the calculated contour bounding box. | |
void | CopyGabarit (const MbContour &c) |
Copy contour bounding box to contour copy (use only to transfer into contour copy). | |
bool | IsGabaritEmpty () const |
Is the contour bounding box empty? | |
double | DistanceToPoint (const MbCartPoint &) const override |
Calculate the distance to a point. | |
MbeState | Deformation (const MbRect &, const MbMatrix &) override |
Deform the curve. More... | |
bool | IsInRectForDeform (const MbRect &) const override |
Determine visibility of a curve in rectangle. | |
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... | |
MbeState | DeletePart (double t1, double t2, MbCurve *&part2) override |
Delete the piece of a curve. More... | |
MbeState | TrimmPart (double t1, double t2, MbCurve *&part2) override |
Keep the piece of a curve. More... | |
MbCurve * | Trimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const override |
Construct a trimmed curve. More... | |
Functions for curve domain description. | |
double | GetTMin () const override |
Get the minimum value of parameter. | |
double | GetTMax () const override |
Get the maximum value of parameter. | |
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 | IsSmoothConnected (double angleEps) const override |
Define whether joints of contour/curve are smooth. | |
Functions for working in the domain of a curve. | |
Functions: PointOn, FirstDer, SecondDer, ThirdDer,... correct parameter when it is outside domain. | |
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. | |
Function for working inside and outside of the curve domain. | |
Function _PointOn, _FirstDer, _SecondDer, _ThirdDer,... do not correct a parameter when it is outside domain. If non-closed curve is outside of the domain in the general case it continues along a tangent, which it has at the respective end. | |
void | _PointOn (double, MbCartPoint &) const override |
Calculate point at curve and its extension. More... | |
void | _FirstDer (double, MbVector &) const override |
Calculate first derivative at curve and its extension. | |
void | _SecondDer (double, MbVector &) const override |
Calculate second derivative at curve and its extension. | |
void | _ThirdDer (double, MbVector &) const override |
Calculate third derivative at curve and its extension. | |
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... | |
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 | |
bool | HasLength (double &) const override |
Calculate the metric length of a curve. More... | |
double | GetMetricLength () const override |
Calculate the metric length of a curve. More... | |
double | GetLengthEvaluation () const override |
Calculate the metric length of a curve. More... | |
double | CalculateMetricLength () const override |
Calculate the metric length of a curve. | |
double | GetParamLength () const |
double | CalculateParamLength () |
double | GetArea (double sag=Math::deviateSag) const |
Calculation of contour area if contour is closed. | |
MbNurbs * | NurbsCurve (const MbCurveIntoNurbsInfo &) const override |
Construct a NURBS copy of a curve. More... | |
MbContour * | NurbsContour () const override |
Approximate of a curve by the contour from NURBS curves. | |
void | SetClosed () |
Set the closedness attribute of contour. | |
void | CheckClosed (double closedEps=Math::LengthEps) |
Set the closedness attribute of contour. | |
void | InitClosed (bool c) |
Set the closedness attribute of contour. | |
bool | IsClosedContinuousC0 (double eps=5.0 *PARAM_NEAR) const |
Check for closedness and continuity of contour points. More... | |
void | CloseByLineSeg (bool calcInternalData) |
Close the contour by segment. | |
double | CalculateLength (double t1, double t2) const override |
Calculate the metric length of a curve. More... | |
bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::LengthEps, VERSION version=Math::DefaultMathVersion()) const override |
Translate parameter along the curve. More... | |
void | Clear (bool calculateParamLength=true) |
Reset variables caching. | |
ptrdiff_t | FindSegment (double &t, double &tSeg) const |
Find a contour segment. More... | |
size_t | GetSegmentsCount () const |
Get the number of contour segments. | |
const MbCurve * | GetSegment (size_t ind) const |
Get contour segment by the index. | |
MbCurve * | SetSegment (size_t ind) |
Get contour segment by the index. | |
MbeItemLocation | PointRelative (const MbCartPoint &pnt, double eps=Math::LengthEps) const override |
Define the point position relative to the curve. More... | |
MbeLocation | PointLocation (const MbCartPoint &pnt, double eps=Math::LengthEps) const override |
The point position relative to the curve. | |
double | PointProjection (const MbCartPoint &) const override |
Find the point projection to the curve. | |
bool | NearPointProjection (const MbCartPoint &, double xEpsilon, double yEpsilon, double &t, bool ext, MbRect1D *tRange=nullptr) const override |
Find the point projection to the curve. More... | |
double | DistanceToBorder (const MbCartPoint &pnt, double eps=Math::paramRegion) const |
Parametric distance to the nearest boundary. More... | |
void | Trimm (double t1, double t2, bool saveParamLenAndLaw=false) |
Trim a part of the contour. | |
MbResultType | Extend (const MbCurveExtensionParameters ¶meters, c3d::PlaneCurveSPtr &resCurve) const override |
Extend the curve. More... | |
void | PerpendicularPoint (const MbCartPoint &, SArray< double > &tFind) const override |
Find perpendiculars to a curve. More... | |
void | TangentPoint (const MbCartPoint &, SArray< double > &tFind) const override |
Find tangents to a 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... | |
void | SelfIntersect (SArray< MbCrossPoint > &, double metricEps=Math::LengthEps) const override |
Find self-intersections of curve. More... | |
bool | IsSelfIntersect (double metricEps, bool considerPartialCoincidence) const |
Is it a contour with self-intersections? More... | |
bool | FilletTwoSegments (ptrdiff_t &index, double rad, bool &del1, bool &del2) |
Fillet of two neighboring elements with information about removal. | |
bool | FilletTwoSegments (ptrdiff_t &index, double rad) |
Fillet of two neighboring elements. | |
bool | ChamferTwoSegments (ptrdiff_t &index, double len, double angle, bool type, bool firstSeg, bool &del1, bool &del2) |
Insertion of chamfer between two neighboring elements with information about removal. | |
bool | ChamferTwoSegments (ptrdiff_t &index, double len, double angle, bool type, bool firstSeg=true) |
Insertion of chamfer between two neighboring elements. | |
bool | Fillet (double rad) |
Fillet of contour. | |
bool | Chamfer (double len, double angle, bool type) |
Insertion of the chamfer. | |
MbeState | RemoveFilletOrChamfer (const MbCartPoint &pnt) |
Remove fillet or contour chamfer Split contour into non-overlapping segments. | |
bool | InsertCrossPoints () |
void | BreakSegment (ptrdiff_t &index, ptrdiff_t firtsIdx, SArray< MbCrossPoint > &cross, bool firstCurve=true) |
Splitting of contour segments at the points of intersection. | |
bool | CheckConnection (double eps=Math::LengthEps) const |
Check for contour continuity. | |
bool | CheckConnection (double xEps, double yEps) const |
Check for contour continuity. | |
void | FilletTwoSegmentsZero (ptrdiff_t &index, int defaultSense, bool fullInsert) |
Rounding two neighboring elements by arc of zero radius. | |
void | FilletZero (int defaultSense, bool fullInsert=false) |
Rounding contour by arc of zero radius. | |
void | ChamferTwoSegmentsZero (ptrdiff_t &index, double rad) |
Insertion of chamfer between two neighboring elements for construction of the offset. | |
void | ChamferZero (double rad) |
Insertion of chamfer for construction of the offset. | |
void | DeleteDegenerateSegments (double radius, MbCurve *curve, bool mode) |
Removal of degenerate contour segments. | |
void | Equid (double radLeft, double radRight, int side, bool mode, PArray< MbCurve > &equLeft, PArray< MbCurve > &equRight) |
Construction of offset to contour. More... | |
void | CreateNewContours (RPArray< MbCurve > &) |
Construction of new contours from equidistance. | |
double | CalculateArea (double sag=Math::deviateSag) const |
Calculation of contour area if contour is closed. | |
int | GetSense () const |
Determination of traverse direction if contour is closed. | |
void | SetSense (int sense) |
Set the traverse direction of the contour. | |
void | Inverse (MbRegTransform *=nullptr) override |
Set the opposite direction of curve. | |
bool | NormalizeReparametrization () |
size_t | GetCount () const override |
Define the number of splittings for one passage in operations. | |
bool | DistanceToPointIfLess (const MbCartPoint &toP, double &d) const override |
Calculate the distance to a point. More... | |
bool | GetSpecificPoint (const MbCartPoint &from, double &dmax, MbCartPoint &pnt) const override |
Return a specific point of a curve. More... | |
bool | GetSegmentMiddlePoint (const MbCartPoint &from, MbCartPoint &midPoint) const |
Get a mid-point of the contour segment. | |
bool | GetLinearSegment (const MbCartPoint &from, double maxDist, MbCartPoint &p1, MbCartPoint &p2, double &d) const |
Get the linear segment of contour. | |
MbArc * | GetArcSegment (const MbCartPoint &from, double maxDist, double &d) const |
Get the arc segment of contour. | |
bool | GetSegmentLength (const MbCartPoint &from, double &length) const |
Get the contour segment length. | |
bool | GetWeightCentre (MbCartPoint &) const override |
Calculate the center of gravity of a curve. | |
bool | GetCentre (MbCartPoint &) const override |
Calculate a center of curve. | |
ptrdiff_t | FindNearestNode (const MbCartPoint &to) const |
Find the nearest node of contour to point. | |
ptrdiff_t | FindNearestSegment (const MbCartPoint &to) const |
Find the nearest segment of contour to point. | |
void | OffsetCuspPoint (SArray< double > &tCusps, double dist) const override |
Find the special points of an offset curve. More... | |
double | GetRadius (double accuracy=PARAM_REGION) const override |
Get the physical radius of the curve or zero if it impossible. More... | |
bool | GetAxisPoint (MbCartPoint &) const override |
Calculate a point to construct an axis. More... | |
void | CombineNurbsSegments () |
Unite NURBS curves into the contour. | |
void | GetProperties (MbProperties &) override |
Get properties of the object. More... | |
void | SetProperties (const MbProperties &) override |
Change properties of the object. More... | |
void | GetBasisPoints (MbControlData &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData &) override |
Change the object by control points. | |
bool | IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const override |
Have the first derivative of the curve the continuous length and direction? More... | |
bool | SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) override |
Eliminate the discontinuities of the derivatives of the length of the joints of the segments. More... | |
void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) const override |
Get the boundaries of the curve sections that are described by one analytical function. | |
void | BreakPoints (std::vector< double > &vBreaks, double precision=ANGLE_REGION) const override |
\ ru Определение точек излома контура. The determination of contour smoothness break points. | |
Function for working with segments of contour | |
bool | Init (List< MbCurve > &) |
Initialization by list of curves. | |
void | Init (const MbContour &) |
Initialization by a contour. | |
template<class Curves > | |
bool | Init (Curves &curves, bool sameCurves) |
Initialization by array of curves. More... | |
template<class Points > | |
bool | InitByPoints (const Points &) |
Initialization by array of points (closed contour). | |
bool | InitAsRectangle (const MbCartPoint *) |
Initialization as rectangle (4 points are given). | |
bool | InitByRectangle (const MbRect &) |
Initialization by rectangle of bounding box. | |
bool | AddSegment (MbCurve *) |
Add a segment to the contour. | |
bool | AddSegmentOrDeleteCurve (MbCurve *) |
Add a curve as segment or remove its. | |
MbCurve * | AddSegment (const MbCurve *pBasis, double t1, double t2, int sense=1) |
Add a (truncated) segment copy to the end of the contour. More... | |
bool | AddAtSegment (MbCurve *newSegment, size_t index) |
Insert a segment before the contour segment with the index "index". | |
bool | AddAfterSegment (MbCurve *newSegment, size_t index) |
Insert a segment after the contour segment with the index "index". | |
bool | AddCurveWithRuledCheck (MbCurve &newCur, double absEps, bool toEndOnly=false, bool checkSame=true, VERSION version=Math::DefaultMathVersion()) |
Add the new element to the beginning or end of contour. More... | |
void | DeleteSegments () |
Remove all segments from contour. | |
void | DeleteSegment (size_t ind) |
Remove a segment from contour. | |
void | DetachSegments () |
Detach all segments from the contour without removing. | |
MbCurve * | DetachSegment (size_t ind) |
Detach a segment from contour return it. | |
template<class CurvesVector > | |
void | DetachSegments (CurvesVector &segms) |
Detach all segments from the contour without removing. | |
void | SetSegment (MbCurve &newSegment, size_t ind) |
Replace a segment in the contour. | |
void | SegmentsAdd (MbCurve &newSegment, bool calculateParamLength=true) |
Add a segment to the contour without checking. | |
void | SegmentsInsert (size_t ind, MbCurve &newSegment) |
Insert a segment into contour before an index without checking. | |
void | SegmentsRemove (size_t ind) |
Remove a segment without checking. | |
void | SegmentsDetach (size_t ind) |
Detach a segment without checking. | |
void | Calculate (bool calcArea=false) |
Calculate parameters: rect, paramLength, metricLength, closed. | |
void | SegmentsReserve (size_t additionalSpace) |
Reserve memory for this number of elements. | |
void | SegmentsAdjust () |
Free the unnecessary memory. | |
template<class CurvesVector > | |
bool | GetSegments (CurvesVector &segms) const |
Get contour segments. | |
void | SetMetricLength (double len) const |
bool | SetBegEndPoint (double t) |
Set the start (end) point for closed contour. | |
void | ReplaceContoursAndPolylines () |
Replace segments of contour and segments of polyline. | |
void | GetPolygon (double sag, SArray< MbCartPoint > &poly, double eps) const |
Get points of polygon. | |
bool | IsAnyCurvilinear () const |
Whether the contour has a curved segment. | |
bool | IsSameSegments (const MbContour &, double accuracy=PARAM_PRECISION) const |
Whether contours contains identical segments. | |
bool | GetBegSegmentPoint (size_t i, MbCartPoint &) const |
Get the start point of i-th segment. | |
bool | GetEndSegmentPoint (size_t i, MbCartPoint &) const |
Get the end point of i-th segment. | |
bool | CornerNormal (double t, MbVector &norm) const |
Normal by parameter with consideration of segments joints. More... | |
template<class Params > | |
void | GetCornerParams (Params ¶ms) const |
Parameters of segments joints. More... | |
bool | GetTwoTangents (double t, MbVector &tan1, MbVector &tan2) const |
Calculation of two tangents (for parameters of joints). More... | |
Functions for working with names of contours. | |
void | GetSegmentsNames (SimpleNameArray &names) const |
Get names of segments. More... | |
void | SetSegmentsNames (const SimpleNameArray &names) |
Set names of segments. 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 void | AddYourGabaritMtr (MbRect &rect, const MbMatrix &matr) const |
Add a bounding box to rectangle. 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). | |
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 | IsDegenerate (double eps=Math::LengthEps) const |
Define whether the curve is degenerate.. | |
double | GetParamLength () const |
Calculate the parametric length of a curve. | |
virtual void | ResetTCalc () const |
Reset the current value of parameter. | |
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 * | NurbsCurve (const MbNurbsParameters &tParameters) const |
Construct a NURBS copy of a 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... | |
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 | 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 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 | 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... | |
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. | |
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. | |
MbProperty & | CreateProperty (MbePrompt name) const override |
Create a custom property. | |
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... | |
![]() | |
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. | |
Protected Member Functions | |
MbContour (const MbContour *, MbRegDuplicate *) | |
Copy constructor. | |
![]() | |
MbCurve () | |
Default constructor. | |
MbCurve (const MbCurve &other) | |
Copy-constructor. | |
![]() | |
MbPlaneItem () | |
Constructor. | |
![]() | |
MbRefItem () | |
Constructor without parameters. | |
Protected Attributes | |
RPArray< MbCurve > | segments |
An array of contour segments. | |
bool | closed |
An Attribute of curve closedness. | |
double | paramLength |
Parametric length of a contour. | |
double | metricLength |
Metric length of a contour. | |
MbRect | rect |
Bounding box. | |
c3d::DoublePair | areaSign |
Contour area with a sign. | |
![]() | |
SimpleName | name |
A curve name. The object data is temporary and used internally. | |
Contour in two-dimensional space.
Contour is a composite curve in which the beginning of each subsequent segment is joined to the end of the previous one. Contour is closed if the end of last segment is joined to the beginning of the first segment.
If the segments of a composite curve are not smoothly joined then the composite curve will have breaks. In general case in places of joining segments derivatives of a composite curve have discontinuity along the length and direction.
The initial value of the composite curve is equal to zero. The parametric length of a composite curve is equal to the sum of the parametric lengths of components of its segments.
When the calculation of the radius-vector of a composite curve segment is determined at first, the value of composite curve parameter and the corresponding value of the own parameters of this segment corresponds to this segment. Then computes the radius-vector of the segment which will be the radius-vector of the composite curve.
Other composite curves are not used as segments of the composite curve. If it is required to create a composite curve based on other composite curves, then the latter must be regarded as a set of their curves, and not as single curves.
The two-dimensional contour is used for planar modeling and also for describing of two-dimensional areas, for example for determining of the domain of surface.
MbContour::MbContour | ( | const Curves & | initCurves, |
bool | sameCurves | ||
) |
Constructor by curves vector.
Constructor by curves vector. Curves are added to the contour without checking that the beginning of each subsequent segment joins the end of the previous one. The condition must be guaranteed by the calling code.
[in] | initCurves | - Curves. |
[in] | sameCurves | - Use original curves (true) or copies thereof (false). |
|
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.
Reimplemented in MbContourWithBreaks.
|
overridevirtual |
Determine whether the objects are similar.
Objects of the same type are considered to be similar if data of the objects can be equated or the data are also similar (pointers). Similar object can be initialized by data of object similar to it (equate one to another without changing of addresses).
[in] | item | - Object for comparison. |
Reimplemented from MbPlaneItem.
|
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.
Reimplemented in MbContourWithBreaks.
|
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.
Reimplemented in MbContourWithBreaks.
|
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.
Reimplemented in MbContourWithBreaks.
|
overridevirtual |
Construct the equidistant curve which is shifted by the given value.
Construct the equidistant curve which is shifted by the given value. The function inserts (in a contour's copy) the arcs of zero radius between neighbor segments. This is necessary to provide continuity of the contour for both directions of displacement. But it can lead to the appearance of self-intersections of an contour. Then the function performs an equidistant offset of all segments. This function has a limited scope of using. You can use the OffsetContour function instead this function.
[in] | rad | - Equidistant offset. |
Reimplemented from MbCurve.
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 from MbCurve.
|
overridevirtual |
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 from MbCurve.
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 from MbCurve.
|
overridevirtual |
Calculate temporary (mutable) data of an object.
Calculate the temporary data of an object depending of the "forced" parameter. Calculate only data that was not calculated earlier if parameter "forced" is equal false. Recalculate all temporary data of an object if parameter "forced" is equal true.
[in] | forced | - Forced recalculation. |
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 |
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. |
Implements MbCurve.
|
overridevirtual |
Define whether the curve is periodic.
Define whether the curve is periodic.
A periodic curve is closed. A curve is considered as periodic if:
Implements MbCurve.
|
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 at curve and its extension.
Calculate a point on the curve including the outside area determination parameter.
[in] | t | - Curve parameter. |
[out] | p | - A point on the curve. |
Reimplemented from 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 |
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. |
Implements MbCurve.
|
overridevirtual |
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().
Implements MbCurve.
|
overridevirtual |
Calculate the metric length of a curve.
The length of a curve is inaccurately calculated, by approximation of polyline. If the more accurate curve's length is required, then use the function CalculateMetricLength().
Reimplemented from 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.
bool MbContour::IsClosedContinuousC0 | ( | double | eps = 5.0 *PARAM_NEAR | ) | const |
Check for closedness and continuity of contour points.
Check for closedness and continuity of contour points. Checking for coincidence of first and last points of the contour, coincidence of the last point of each segment with the first point of the next segment. Equality of points is checked roughly by default - with tolerance is equal to 5* PARAM_NEAR.
|
overridevirtual |
Calculate the metric length of a curve.
Calculate the metric length of unclosed curve from parameter t1 to parameter t2. The condition t1 < t2 should satisfied.
[in] | t1 | - Start parameter of a curve section. |
[in] | t2 | - End parameter of a curve section. |
Reimplemented from MbCurve.
|
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.
ptrdiff_t MbContour::FindSegment | ( | double & | t, |
double & | tSeg | ||
) | const |
Find a contour segment.
Find a contour segment by parameter on contour.
[in,out] | t | - Contour parameter. |
[out] | tSeg | - Contour segment parameter. |
|
overridevirtual |
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 from MbCurve.
|
overridevirtual |
Find the point projection to the curve.
Find the nearest projection of a point on a curve (in the range of the curve) or on its continuation by the given initial approximation. If the parameter ext = true, then also search for a projection on the continuation of the curve. If the range of change of the 'tRange' parameter is specified, then find the projection in the specified range. A range of parameter may not belong to the domain of a curve. The Newton method is used.
[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 from MbCurve.
double MbContour::DistanceToBorder | ( | const MbCartPoint & | pnt, |
double | eps = Math::paramRegion |
||
) | const |
Parametric distance to the nearest boundary.
Parametric distance to the nearest boundary.
[in] | pnt | - A testing point. |
[in] | eps | - Accuracy. |
|
overridevirtual |
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 from MbCurve.
|
overridevirtual |
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 from MbCurve.
|
overridevirtual |
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 from MbCurve.
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 |
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 from MbCurve.
bool MbContour::IsSelfIntersect | ( | double | metricEps, |
bool | considerPartialCoincidence | ||
) | const |
Is it a contour with self-intersections?
Is it a contour with self-intersections?
[in] | metricEps | - Accuracy (it's recommended to use Math::LengthEps). |
[in] | considerPartialCoincidence | - Consider partial coincidence of neighboring segments as self-intersection (true - by default). |
void MbContour::Equid | ( | double | radLeft, |
double | radRight, | ||
int | side, | ||
bool | mode, | ||
PArray< MbCurve > & | equLeft, | ||
PArray< MbCurve > & | equRight | ||
) |
Construction of offset to contour.
Construction of offset to contour of the left and right. A name of every offset contour matches with the name of the initial one.
[in] | radLeft | - The equidistance radius on the left by direction. |
[in] | radRight | - The equidistance radius on the right by direction. |
[in] | side | - Attribute defining the side to construct: 0 - on the left by direction, 1 - on the right by direction, 2 - on the both sides. |
[in] | mode | - The way of traverse of angles: true - by arc, false - by section. |
[out] | equLeft | - The array of contours on the left side. |
[out] | equRight | - The array of contours on the right side. |
|
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.
|
overridevirtual |
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 from MbCurve.
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 from MbCurve.
|
overridevirtual |
Get the physical radius of the curve or zero if it impossible.
Generally returns 0. A non-zero value may be obtained only when the curve is an arc or is equal to an arc with the set precision (PARAM_REGION by default). \params[in] accuracy - The maximum curve deviation from an arc (PARAM_REGION by default).
Reimplemented from MbCurve.
|
overridevirtual |
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 from 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 |
Have the first derivative of the curve the continuous length and direction?
Are absent any discontinuities of the derivative at length or at direction in the junction of path segments?
[out] | contLength | - The length is continuous (true/false). |
[out] | contDirect | - The direction of the first derivative is continuous (true/false). |
[in] | epsilon | - The accuracy of the calculation. |
Reimplemented from MbCurve.
bool MbContour::Init | ( | Curves & | curves, |
bool | sameCurves | ||
) |
Initialization by array of curves.
Initialization by array of curves. Curves are added to the contour without checking that the beginning of each subsequent segment joins the end of the previous one. The condition must be guaranteed by the calling code.
[in] | curves | - Curves. |
[in] | sameCurves | - Use original curves (true) or copies thereof (false). |
Add a (truncated) segment copy to the end of the contour.
Add a (truncated) segment copy to the end of the contour.
[in] | pBasis- | Initial curve. |
[in] | t1 | - Truncation starting parameter. |
[in] | t2 | - Truncation ending parameter. |
[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. |
bool MbContour::AddCurveWithRuledCheck | ( | MbCurve & | newCur, |
double | absEps, | ||
bool | toEndOnly = false , |
||
bool | checkSame = true , |
||
VERSION | version = Math::DefaultMathVersion() |
||
) |
Add the new element to the beginning or end of contour.
Add the new element to the beginning or end of contour.
[in] | curve | - Added curve. |
[in] | absEps | - Accuracy of verification of curve end coincidence (1e-8 - 1e-4). |
[in] | toEndOnly | - Add the curve only at the end of the contour. |
[in] | checkSame | - Check a presence of the same curve in the contour. |
[in] | version | - Version. |
bool MbContour::CornerNormal | ( | double | t, |
MbVector & | norm | ||
) | const |
Normal by parameter with consideration of segments joints.
Normal by parameter with consideration of segments joints
[in] | t | - Parameter on the contour |
[out] | norm | - Unit vector of normal if not hit on the joint of segments if we got on the joint of segments then the vector is directed, as the sum of two normals on segments in joint, with length which is equal to 1 divided by the sine of half angle between the segments |
void MbContour::GetCornerParams | ( | Params & | params | ) | const |
Parameters of segments joints.
Parameters of segments joints without minimal and maximal contour parameter.
[out] | params | - Set of parameters. |
Calculation of two tangents (for parameters of joints).
Calculation of two tangents for parameter of segments joint corresponding to the segments. If parameter is not one of parameters of segments joints tangents are equal. and maximal contour parameter.
[in] | t | - A parameter. |
[out] | tan1 | - First tangent. |
[out] | tan2 | - Second tangent. |
void MbContour::GetSegmentsNames | ( | SimpleNameArray & | names | ) | const |
Get names of segments.
Get names of contour segments.
[out] | names | - Names of segments |
void MbContour::SetSegmentsNames | ( | const SimpleNameArray & | names | ) |
Set names of segments.
Set names of contour segments by array of names.
[in] | names | - A set of names. |