C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Intersection curve of two surfaces. More...
#include <cur_surface_intersection.h>
Public Member Functions | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCurve &curve1, const MbSurface &surf2, const MbCurve &curve2, MbeCurveBuildType buildType, bool sameOne, bool sameTwo, MbRegDuplicate *iReg=nullptr) | |
Constructor by surfaces and two-dimensional curves. More... | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCurve &curve1, const MbSurface &surf2, const MbCurve &curve2, MbeCurveBuildType buildType, bool sameOne, bool sameTwo, bool saveParLenAndLaw, MbRegDuplicate *iReg=nullptr) | |
Constructor by surfaces and two-dimensional curves. More... | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCartPoint &surf1p0, const MbCartPoint &surf1p1, const MbSurface &surf2, const MbCartPoint &surf2p0, const MbCartPoint &surf2p1) | |
Constructor by surfaces and two-dimensional points. More... | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCurve &curve1, const MbSurface &surf2, const MbCartPoint &surf2p0, const MbCartPoint &surf2p1, MbeCurveBuildType buildType) | |
Constructor by surfaces, two-dimensional curves and points. More... | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCartPoint &surf1p0, const MbCartPoint &surf1p1, const MbSurface &surf2, const MbCurve &curve2, MbeCurveBuildType buildType) | |
Constructor by surfaces, two-dimensional points and curve. More... | |
MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCurve &curve1, const MbSurface &surf2, const MbCurve &curve2, const MbCurve3D *spaceCurve, MbeCurveBuildType buildType, MbeCurveGlueType glueType, double tol) | |
Constructor for converters by surfaces and two-dimensional curves. More... | |
VISITING_CLASS (MbSurfaceIntersectionCurve) | |
Implementation of a function initializing a visit of an object. | |
double | GetTMax () const override |
Get the maximum value of parameter. | |
double | GetTMin () const override |
Get the minimum value of parameter. | |
bool | IsClosed () const override |
Define whether the curve is periodic. More... | |
double | GetPeriod () const override |
Return period. If a curve is not periodic then 0. | |
bool | IsPeriodic () const override |
Define whether the curve is periodic. More... | |
void | PointOn (double &t, MbCartPoint3D &) const override |
Calculate a point on the curve. More... | |
void | FirstDer (double &t, MbVector3D &) const override |
Calculate first derivative. | |
void | SecondDer (double &t, MbVector3D &) const override |
Calculate second derivative. | |
void | ThirdDer (double &t, MbVector3D &) const override |
Calculate third derivative. | |
void | Tangent (double &t, MbVector3D &) const override |
Calculate tangent vector (normalized). | |
void | _PointOn (double t, MbCartPoint3D &) const override |
Calculate point at curve and its extension. More... | |
void | _FirstDer (double t, MbVector3D &) const override |
Calculate first derivative at curve and its extension. | |
void | _SecondDer (double t, MbVector3D &) const override |
Calculate second derivative at curve and its extension. | |
void | _ThirdDer (double t, MbVector3D &) const override |
Calculate third derivative at curve and its extension. | |
void | Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const override |
Calculate point and derivatives of object for given parameter. More... | |
void | FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const override |
Calculate point and derivatives on the curve. More... | |
void | Inverse (MbRegTransform *iReg=nullptr) override |
Change direction of a curve. | |
double | Step (double t, double sag) const override |
Calculate parameter step. More... | |
double | DeviationStep (double t, double angle) const override |
Calculate parameter step. More... | |
double | MetricStep (double t, double length) const override |
Calculate parameter step. More... | |
MbNurbs3D * | NurbsCurve (const MbCurveIntoNurbsInfo &) const override |
Construct a NURBS copy of a curve. More... | |
MbCurve3D * | Trimmed (double t1, double t2, int sense, const MbDimAccuracy &xyzEps, bool saveParamLenAndLaw) const override |
Construct a trimmed curve with the given two-dimensional accuracy. More... | |
MbSurfaceIntersectionCurve * | TrimmedIntersection (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const |
Create a trimmed curve on the same surfaces. | |
double | GetMetricLength () const override |
Calculate the metric length of a curve. | |
double | GetLengthEvaluation () const override |
Calculate the metric length of a curve. More... | |
bool | CopyReadyMutable (const MbSurfaceIntersectionCurve &s) |
double | CalculateLength (double t1, double t2) const override |
Calculate the metric length of a curve. More... | |
double | GetRadius (double accuracy=METRIC_REGION) const override |
Get the physical radius of the curve or zero if it impossible. More... | |
bool | GetCircleAxis (MbAxis3D &) const override |
Get an axis of a circle which is geometrically coincident to the given curve. More... | |
void | GetCentre (MbCartPoint3D &) const override |
Give the curve center. | |
void | GetWeightCentre (MbCartPoint3D &) const override |
Give the gravity center of a curve. | |
void | CalculateGabarit (MbCube &c) const override |
Calculate bounding box of a curve. | |
bool | DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const override |
Translate parameter along the curve. More... | |
void | CalculatePolygon (const MbStepData &stepData, MbPolygon3D &polygon) const override |
Calculate an array of points for drawing. More... | |
MbCurve * | GetMap (const MbMatrix3D &into, MbRect1D *pRegion=nullptr, VERSION version=Math::DefaultMathVersion(), bool *coincParams=nullptr) const override |
Construct a planar projection of a piece of a space curve. More... | |
MbCurve * | GetProjection (const MbPlacement3D &place, VERSION version) const override |
Construct a planar projection of a space curve to a plane. More... | |
size_t | GetCount () const override |
Define the number of splittings for one passage in operations. | |
bool | IsStraight (bool ignoreParams=false) const override |
Whether the line is straight? | |
void | ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init) override |
Change the carrier. For surface curves. | |
bool | ChangeCarrierBorne (const MbSpaceItem &item, MbSpaceItem &init, const MbMatrix &matr) override |
Change the carrier. More... | |
bool | IsPlanar (double accuracy=METRIC_EPSILON) const override |
Is a curve planar? | |
bool | IsSmoothConnected (double angleEps) const override |
Are joints of contour/curve smooth? | |
double | DistanceToPlace (const MbPlacement3D &place, double &t0, double &angle) const override |
The nearest point of a curve by the placement. | |
bool | GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place3d, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const override |
Get planar curve and placement if the space curve is planar. More... | |
bool | GetPlacement (MbPlacement3D &place, PlanarCheckParams params=PlanarCheckParams()) const override |
Fill the placement if a curve is planar. | |
bool | GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const override |
double | GetParamToUnit () const override |
Get increment of parameter, corresponding to the unit length in space. | |
double | GetParamToUnit (double t) const override |
Get increment of parameter, corresponding to the unit length in space. | |
bool | IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const override |
Is the object is a shift? | |
bool | IsSimilarToCurve (const MbCurve3D &other, double precision=METRIC_PRECISION) const override |
Whether the curves to union (joining) are similar. | |
bool | IsSpaceSame (const MbSpaceItem &item, double eps=METRIC_REGION) const override |
Are the objects identical in space? | |
MbeCurveGlueType | GetGlueType () const |
Get a curve type by topology. | |
void | SetGlueType (MbeCurveGlueType type) |
Set a curve type by topology. | |
void | SetPoleGlueType () const |
Set a curve type by topology. | |
MbeCurveBuildType | GetBuildType () const |
Get a curve type by construction. | |
void | SetBuildType (MbeCurveBuildType type) |
Set a curve type by construction. | |
bool | PointOn (double t, MbCartPoint &r1, MbCartPoint &r2) const |
Calculate points on intersecting surfaces. | |
void | GetPointOn (double &t, MbCartPoint3D &) const |
Calculate a point. | |
void | GetFirstDer (double &t, MbVector3D &) const |
Calculate the first derivative. | |
void | GetCurvatureSpecialPoints (std::vector< c3d::DoublePair > &points) const override |
Find all the special points of the curvature function of the curve. | |
bool | InsertPoints (double &t, const std::pair< MbCartPoint, MbCartPoint > *pointsPair, double &tCheck) |
Refine a curve of intersection of common case. More... | |
MbSurfaceIntersectionCurve * | BreakCurve (double t, bool beg, const MbSurface *surface) |
Cutaway a curve into two pieces. More... | |
bool | TruncateCurve (double t1, double t2, const MbSurface *surface) |
Trim a curve. More... | |
bool | MergeCurves (const MbSurfaceIntersectionCurve &addCurve, bool toBegin, bool fromBegin, bool allowCntr, const VERSION version, bool insertInterimPoints=true, double eps=Math::paramNear) |
Join this curve and another curve. More... | |
bool | ProlongCurve (double &t, bool beg, double sag, const VERSION version, double eps=Math::paramNear) |
Extend curve. More... | |
void | Normalize (bool saveParLenAndLaw=false) |
Match parametric length of two-dimensional curves. | |
const MbCurve * | ChooseCurve (const MbSurface &surf, bool faceSense, bool curveSense) const |
Select a seam curve by face orientation and orientation of two-dimensional curve. | |
MbCurve * | ChooseCurve_ (const MbSurface &surf, bool faceSense, bool curveSense) |
Select a seam curve by face orientation and orientation of two-dimensional curve. | |
bool | GetMoveVector (const MbSurface &surf, bool faceSense, bool curveSense, MbVector &to) const |
Calculate a shift vector of two-dimensional curve of seam. More... | |
bool | ChangeCurve (const MbCurve *oldCrv, MbCurve &newCrv) |
Replace the two-dimensional curve. | |
bool | ChangeSurface (const MbSurface &oldSrf, MbSurface &newSrf, bool faceSense, bool curveSense) |
Replace surface. | |
bool | ChangeSurfaces (const MbSurface &surf1, const MbSurface &surf2) |
Replace surfaces. | |
bool | ReplaceSameSurfaces (const MbSurfaceIntersectionCurve &) |
Replace surfaces with the same ones (IsSame) with a different curve. | |
bool | SetLimitParam (double newTMin, double newTMax) |
Set range of parameter. | |
bool | SwapSurfaceCurves () |
Swap two-dimensional curves and surfaces. | |
bool | Direction (double &t, MbVector3D &tau, double eps=Math::paramNear) const |
Calculate vector-product of normals of surfaces. | |
bool | NearDirection (double &t, const MbSurface &surfOne, const MbSurface &surfTwo, MbVector3D &tau, double delta, MbCartPoint &point1, MbCartPoint &point2, MbVector3D &normal1, MbVector3D &normal2) const |
Calculate vector-product of normals of surfaces near to the line. | |
bool | TransversalReper (double &t, MbVector3D &tau0, MbVector3D &tau1, MbVector3D &tau2) const |
Calculate tangential and transversal vectors tangent to surfaces. | |
bool | SetCurveEqual (const MbSpaceItem &init) |
Make two-dimensional curves equal. | |
bool | IsCurveEqual (const MbSpaceItem &init) const |
Determine whether the objects are similar. | |
const MbSurfaceCurve & | GetCurve (ptrdiff_t i) const |
Get surface curve by index (0 - first, 1 - second). | |
MbSurfaceCurve & | SetCurve (ptrdiff_t i) |
Get surface curve by index (0 - first, 1 - second). | |
const MbSurfaceCurve & | GetCurveOne () const |
Get the first surface curve. | |
MbSurfaceCurve & | SetCurveOne () |
Get the first surface curve. | |
const MbSurfaceCurve & | GetCurveTwo () const |
Get the second surface curve. | |
MbSurfaceCurve & | SetCurveTwo () |
Get the second surface curve. | |
const MbCurve & | GetCurveOneCurve () const |
Get two-dimensional curve of the first surface curve. | |
MbCurve & | SetCurveOneCurve () |
Get two-dimensional curve of the first surface curve. | |
const MbCurve & | GetCurveTwoCurve () const |
Get two-dimensional curve of the second surface curve. | |
MbCurve & | SetCurveTwoCurve () |
Get two-dimensional curve of the second surface curve. | |
const MbSurface & | GetCurveOneSurface () const |
Get surface of the first surface curve. | |
MbSurface & | SetCurveOneSurface () |
Get surface of the first surface curve. | |
const MbSurface & | GetCurveTwoSurface () const |
Get surface of the second surface curve. | |
MbSurface & | SetCurveTwoSurface () |
Get surface of the second surface curve. | |
const MbSurface & | GetSurface (ptrdiff_t i) const |
Get surface by index (0 - from first surface curve, 1 - from second one). | |
MbSurface & | SetSurface (ptrdiff_t i) |
Get surface by index (0 - from first surface curve, 1 - from second one). | |
const MbSurfaceCurve * | GetSCurveOne () const |
Get a pointer to the first curve on surface. | |
const MbSurfaceCurve * | GetSCurveTwo () const |
Get a pointer to the second curve on surface. | |
const MbCurve * | GetPCurveOne () const |
Get a pointer to the two-dimensional curve. | |
const MbCurve * | GetPCurveTwo () const |
Get a pointer to the two-dimensional curve. | |
const MbSurface * | GetSurfaceOne () const |
Get a pointer to the surface of the first curve. | |
const MbSurface * | GetSurfaceTwo () const |
Get a pointer to the surface of the second curve. | |
const MbSurface * | GetAnotherSurface (const MbSurface &surface) const |
Get one of the surfaces different from the given one. | |
const MbCurve * | GetAnotherCurve (const MbCurve &curve) const |
Get one of two-dimensional curves different from the given one. | |
void | GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const override |
Get n points of a curve with equal intervals by arc length. | |
MbeNewtonResult | ConvexoConcaveNewton (size_t iterLimit, double &t) const |
Calculate points of changing the convexity-concavity of intersection curve. | |
bool | IsConvexoConcave (SArray< double > ¶ms, VERSION version) const |
Determine existence of points of changing the convexity-concavity. | |
bool | IsConvexoConcave (c3d::DoubleVector ¶ms, VERSION version) const |
Determine existence of points of changing the convexity-concavity. | |
MbCurve3D * | MakeCurve (double t1, double t2) const |
Construct a piece of a spatial curve copy. | |
MbCurve3D * | MakeCurve () const |
Construct a spatial curve copy. | |
const MbCurve3D * | GetSpaceCurve (VERSION version=Math::DefaultMathVersion()) const |
Get an approximate spatial curve for interpretation of the intersection. | |
MbCurve3D * | SetSpaceCurve (VERSION version=Math::DefaultMathVersion()) |
Get an approximate spatial curve for interpretation of the intersection. | |
const MbCurve3D & | GetExactCurve (bool saveParams=true, VERSION version=Math::DefaultMathVersion()) const |
Get exact spatial copy or itself. | |
void | ReleaseSpaceCurve () const |
Remove a spatial curve. | |
MbSurfaceIntersectionCurve * | BreakWithGap (double tt, double ttP, bool sense) |
Cutaway an intersection curve into three pieces by given parameters and return one of end pieces depending on 'sense'. | |
MbCurve3D * | Trimmed (const MbCartPoint3D &p1, const MbCartPoint3D &p2, bool sense, bool saveParamLenAndLaw=false) const |
Trim intersection curve by two points and the given direction. | |
bool | IsSmooth () const |
Determine whether the intersection curve is smooth. | |
bool | IsPole () const |
Determine whether the intersection curve is pole. | |
bool | IsSplit (bool strict=false) const |
Determine whether the curve is a parting curve. | |
double | GetTolerance () const |
Get tolerance of the curve. | |
void | SetTolerance (double tol) |
Set tolerance of the curve. | |
void | ResetTolerance () |
Reset tolerance of the curve. | |
virtual MbCurve3D * | Trimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const |
Construct a trimmed curve. More... | |
virtual MbCurve3D * | Trimmed (double t1, double t2, int sense, const MbDimAccuracy &xyzEps, bool saveParamLenAndLaw) const |
Construct a trimmed curve with the given two-dimensional accuracy. More... | |
Common functions of a geometric object. | |
MbeSpaceType | IsA () const override |
Get the type of the object. | |
MbSpaceItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Create a copy of the object. More... | |
MbSurfaceIntersectionCurve & | CurvesDuplicate () const |
Create a copy of a curve on the same surfaces. | |
bool | IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const override |
Determine whether an object is equal. More... | |
bool | SetEqual (const MbSpaceItem &) override |
Make objects equal if they are similar. More... | |
bool | IsSimilar (const MbSpaceItem &) const override |
Determine whether an object is similar. More... | |
void | Transform (const MbMatrix3D &, MbRegTransform *=nullptr) override |
Convert the object according to the matrix. More... | |
void | Move (const MbVector3D &, MbRegTransform *=nullptr) override |
Move an object along a vector. More... | |
void | Rotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr) override |
Rotate an object around an axis at a given angle. More... | |
void | AddYourGabaritTo (MbCube &r) const override |
Expand sent bounding box (a.k.a. gabarit), so that it included the object. More... | |
void | CalculateMesh (const MbStepData &stepData, const MbFormNote ¬e, MbMesh &mesh) const override |
Build polygonal copy mesh. More... | |
void | Refresh () override |
Translate all the time (mutable) data objects in an inconsistent (initial) state. | |
void | PrepareIntegralData (const bool forced) const override |
Calculate temporary (mutable) data of an object. More... | |
void | GetProperties (MbProperties &) override |
Outstanding properties of the object. More... | |
void | SetProperties (const MbProperties &) override |
Change the properties of an object. More... | |
void | GetBasisItems (RPArray< MbSpaceItem > &) override |
Outstanding reference objects in a container sent. | |
void | GetBasisPoints (MbControlData3D &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData3D &) override |
Change the object by control points. | |
![]() | |
virtual | ~MbCurve3D () |
Destructor. | |
virtual void | Accept (Visitor &visitor) |
Implementation of a function initializing a visit of an object. | |
virtual MbResultType | Extend (const MbCurveExtensionParameters3D ¶meters, c3d::SpaceCurveSPtr &resCurve) const |
Extend the curve. More... | |
size_t | size () const |
Size of curve interpreted as vector of curves. | |
const MbCurve3D * | operator[] (size_t) const |
An access operator. | |
MbeSpaceType | Type () const override |
Get the group object type. | |
MbeSpaceType | Family () const override |
Get family of objects. | |
virtual MbCurve3D & | InverseDuplicate () const |
Create a copy with changed direction. | |
double | DistanceToPoint (const MbCartPoint3D &) const override |
Determine the distance to the point. More... | |
void | AddYourGabaritTo (MbCube &) const override |
Expand sent bounding box (a.k.a. gabarit), so that it included the object. More... | |
void | Refresh () override |
Translate all the time (mutable) data objects in an inconsistent (initial) state. | |
bool | IsTouch (double eps=Math::metricPrecision) const |
Determine whether a curve is closed regardless of the smoothness of the closure. More... | |
virtual void | Normal (double &t, MbVector3D &) const |
Calculate main normal vector. | |
virtual void | BNormal (double &t, MbVector3D &) const |
Calculate binormal vector. | |
virtual void | _Tangent (double t, MbVector3D &) const |
Calculate tangent vector (normalized) at curve and its extension. | |
virtual void | _Normal (double t, MbVector3D &) const |
Calculate main normal vector (normalized) at curve and its extension. | |
virtual void | _BNormal (double t, MbVector3D &) const |
Calculate binormal vector (normalized) at curve and its extension. | |
double | CurveStep (const double &t, const MbStepData &stepData) const |
Calculate parameter step. More... | |
virtual void | ResetTCalc () const |
Reset the current value of parameter. | |
virtual const MbCurve3D & | GetBasisCurve () const |
Returns the base curve if exists or itself. | |
virtual MbCurve3D & | SetBasisCurve () |
Returns the base curve if exists or itself. | |
virtual double | Curvature (double t) const |
Calculate curvature of curve. | |
virtual void | ThirdMetricDer (double t, MbVector3D &vect) const |
Calculate second derivative of tangent. | |
MbNurbs3D * | NurbsCurve (const MbCurveIntoNurbsInfo *nInfo=nullptr) const |
Construct a NURBS copy of a curve. More... | |
virtual MbCurve3D * | NurbsCurve (const MbNurbsParameters &tParameters) const |
Construct a NURBS copy of a curve. More... | |
virtual size_t | NurbsCurveMinPoints (const MbNurbsParameters &tParameters, double epsilon=c3d::METRIC_DELTA) const |
Define the number of knots of a NURBS curve which is required to approximate the curve with the given tolerance. More... | |
virtual MbCurve3D * | Trimmed (double t1, double t2, int sense, bool saveParamLenAndLaw=false) const |
Construct a trimmed curve. More... | |
double | GetParamLength () const |
Return the parametric length of a curve. | |
virtual double | CalculateMetricLength () const |
Calculate the metric length of a curve. | |
void | CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const override |
To compute bounding box in a local coordinate system. More... | |
virtual bool | IsDegenerate (double eps=METRIC_PRECISION) const |
Check whether the curve is degenerated.calculate. | |
MbProperty & | CreateProperty (MbePrompt name) const override |
Create your own property with the name. | |
void | CalculateMesh (const MbStepData &stepData, const MbFormNote ¬e, MbMesh &mesh) const override |
Build polygonal copy mesh. More... | |
virtual MbeNewtonResult | PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &t, bool ext) const |
Find the point projection to the curve. More... | |
virtual bool | NearPointProjection (const MbCartPoint3D &pnt, double &t, bool ext, MbRect1D *tRange=nullptr) const |
Find the point projection to the curve. More... | |
virtual MbeNewtonResult | IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &t) const |
Find isoclines of a curve. More... | |
virtual void | GetIsoclinal (const MbVector3D &nor, SArray< double > &tIso) const |
Find all isoclines of a curve. More... | |
virtual double | DistanceToCurve (const MbCurve3D &curve2, double &t1, double &t2) const |
Calculate the nearest distance to a curve. | |
virtual MbCurve * | GetMapPsp (const MbMatrix3D &into, double zNear, MbRect1D *pRegion=nullptr) const |
Construct a planar projection of a piece of a space curve. More... | |
void | GetPointsByEvenParamDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const |
Get n points of a curve with equal intervals by parameter. | |
void | GetPointsByEvenParamDelta (size_t n, SArray< MbCartPoint3D > &pnts) const |
void | GetPointsByEvenLengthDelta (size_t n, SArray< MbCartPoint3D > &pnts) const |
void | GetBasisPoints (MbControlData3D &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData3D &) override |
Change the object by control points. | |
virtual bool | IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=nullptr, double epsilon=EPSILON) const |
Have the first derivative of the curve the continuous length and direction? More... | |
virtual bool | SetContinuousDerivativeLength (VERSION version, double epsilon=EPSILON) |
Eliminate the discontinuities of the first derivative at length. More... | |
bool | IsSpaceNear (const MbCurve3D &curve, double eps, bool ext, double devSag=5.0 *Math::deviateSag) const |
Check whether the two curves are metrically close. More... | |
bool | IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const |
Check whether a point is on a curve or not. | |
double | GetTMid () const |
Return the middle of parametric range of a curve. | |
double | GetTRange () const |
Return the parametric length of a curve. | |
MbCartPoint3D | PointOn (double &t) const |
Calculate point on the curve. | |
MbVector3D | FirstDer (double &t) const |
Calculate first derivative. | |
MbVector3D | SecondDer (double &t) const |
Calculate second derivative. | |
MbVector3D | ThirdDer (double &t) const |
Calculate third derivative. | |
virtual void | GetAnalyticalFunctionsBounds (std::vector< double > ¶ms) const |
Get the boundaries of the curve sections that are described by one analytical function. More... | |
virtual void | BreakPoints (std::vector< double > &vBreaks, double precision=ANGLE_REGION) const |
\ ru Определение точек излома кривой. The determination of curve smoothness break points. | |
MbCartPoint3D | GetLimitPoint (ptrdiff_t number) const |
Calculate the boundary point. More... | |
void | GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const |
Calculate the boundary point. More... | |
MbVector3D | GetLimitTangent (ptrdiff_t number) const |
Calculate a tangent vector to the boundary point. More... | |
void | GetLimitTangent (ptrdiff_t number, MbVector3D &v) const |
Calculate a tangent vector to the boundary point. More... | |
bool | AreLimitPointsEqual () const |
Are boundary points equal? More... | |
bool | SetInParamRegion (double &t) const |
Move to the parametric region. | |
bool | IsParamOn (double t, double eps) const |
Check whether a parameter is in the range of the curve. | |
bool | IsInverseSame (const MbCurve3D &curve, double accuracy=LENGTH_EPSILON) const |
Whether an inversed curve is the same. | |
virtual bool | IsReparamSame (const MbCurve3D &curve, double &factor) const |
Define whether a reparameterized curve is the same. More... | |
double | GetTEpsilon () const |
Get the minimum distinguishable value of parameter. | |
double | GetTEpsilon (double t) const |
Get the minimum distinguishable value of parameter. | |
double | GetTRegion () const |
Get the minimum distinguishable value of parameter. | |
double | GetTRegion (double t) const |
Get the minimum distinguishable value of parameter. | |
double | GetTRegion (double t, const MbDimAccuracy &xyzEps) const |
Get the minimum distinguishable value of parameter with the given three-dimensional accuracy according to parameter. | |
virtual const MbCurve3D & | GetSubstrate () const |
Get a substrate or itself. | |
virtual MbCurve3D & | SetSubstrate () |
Get a substrate or itself. | |
virtual int | SubstrateCurveDirection () const |
Direction of a substrate relative to a curve or vice versa. | |
virtual void | SubstrateToCurve (double &) const |
Transform a substrate parameter to the curve parameter. | |
virtual void | CurveToSubstrate (double &) const |
Transform a curve parameter to the substrate parameter. | |
bool | GetPlaneCurve (SPtr< MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const |
Get planar curve and placement if the space curve is planar. More... | |
bool | GetPlaneCurve (SPtr< const MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, PlanarCheckParams params=PlanarCheckParams()) const |
Get planar curve and placement if the space curve is planar. More... | |
bool | GetSurfaceCurve (SPtr< MbCurve > &curve2d, SPtr< MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const |
Get surface curve if the space curve is surface (after the using call DeleteItem for arguments) | |
bool | GetSurfaceCurve (SPtr< const MbCurve > &curve2d, SPtr< const MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const |
Get surface curve if the space curve is surface (after the using call DeleteItem for arguments) | |
void | CalculateGrid (double radius, const MbStepData &stepData, MbMesh &mesh) const |
Approximation of a curve by the flat tube with the given radius. | |
SimpleName | GetCurveName () const |
A curve name. | |
void | SetCurveName (SimpleName newName) |
Set a curve name. | |
![]() | |
virtual | ~MbSpaceItem () |
Destructor. | |
void | PrepareWrite () const |
Register object. More... | |
MbeRefType | RefType () const override |
Get a registration type (for copying, duplication). | |
bool | IsFamilyRegistrable () const override |
Whether the object belongs to a registrable family. | |
void | CalculateWire (const MbStepData &stepData, MbMesh &mesh) const |
void | CalculateWire (double sag, MbMesh &mesh) const |
![]() | |
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. | |
![]() | |
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 | |
MbSurfaceIntersectionCurve (const MbSurfaceIntersectionCurve &, MbRegDuplicate *) | |
Copy-constructor. | |
MbSurfaceIntersectionCurve (const MbSurfaceIntersectionCurve *) | |
Copy-constructor of two-dimensional curves with the same surfaces for CurvesDuplicate(). | |
![]() | |
MbCurve3D () | |
Default constructor. | |
MbCurve3D (const MbCurve3D &other) | |
Copy-constructor. | |
![]() | |
MbSpaceItem () | |
Default constructor. | |
![]() | |
MbRefItem () | |
Constructor without parameters. | |
Additional Inherited Members | |
![]() | |
SimpleName | name |
A curve name. The object data is temporary and used internally. | |
Intersection curve of two surfaces.
Intersection curve of surfaces contains two curves on intersected surfaces - curveOne and curveTwo, conformed to the next rules:
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCurve & | curve1, | ||
const MbSurface & | surf2, | ||
const MbCurve & | curve2, | ||
MbeCurveBuildType | buildType, | ||
bool | sameOne, | ||
bool | sameTwo, | ||
MbRegDuplicate * | iReg = nullptr |
||
) |
Constructor by surfaces and two-dimensional curves.
Constructor of intersection curve by surfaces and two-dimensional curves.
[in] | surf1 | - The first surface. |
[in] | curve1 | - The first two-dimensional curve. |
[in] | surf2 | - The second surface. |
[in] | curve2 | - The second two-dimensional curve. |
[in] | buildType | - An intersection curve type by construction. |
[in] | sameOne | - Use the original of the first two-dimensional curve. |
[in] | sameTwo | - Use the original of the second two-dimensional curve. |
[in,out] | iReg | - Registrator of duplication. |
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCurve & | curve1, | ||
const MbSurface & | surf2, | ||
const MbCurve & | curve2, | ||
MbeCurveBuildType | buildType, | ||
bool | sameOne, | ||
bool | sameTwo, | ||
bool | saveParLenAndLaw, | ||
MbRegDuplicate * | iReg = nullptr |
||
) |
Constructor by surfaces and two-dimensional curves.
Constructor of intersection curve by surfaces and two-dimensional curves.
[in] | surf1 | - The first surface. |
[in] | curve1 | - The first two-dimensional curve. |
[in] | surf2 | - The second surface. |
[in] | curve2 | - The second two-dimensional curve. |
[in] | buildType | - An intersection curve type by construction. |
[in] | sameOne | - Use the original of the first two-dimensional curve. |
[in] | sameTwo | - Use the original of the second two-dimensional curve. |
[in] | saveParLenAndLaw | - Save parametric length and law for surface curves. |
[in,out] | iReg | - Registrator of duplication. |
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCartPoint & | surf1p0, | ||
const MbCartPoint & | surf1p1, | ||
const MbSurface & | surf2, | ||
const MbCartPoint & | surf2p0, | ||
const MbCartPoint & | surf2p1 | ||
) |
Constructor by surfaces and two-dimensional points.
Constructor of an intersection curve by surfaces and two-dimensional points.
[in] | surf1 | - The first surface. |
[in] | surf1p0 | - Start point on the surface. |
[in] | surf1p1 | - End point on the surface. |
[in] | surf2 | - The second surface. |
[in] | surf2p0 | - Start point on the surface. |
[in] | surf2p1 | - End point on the surface. |
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCurve & | curve1, | ||
const MbSurface & | surf2, | ||
const MbCartPoint & | surf2p0, | ||
const MbCartPoint & | surf2p1, | ||
MbeCurveBuildType | buildType | ||
) |
Constructor by surfaces, two-dimensional curves and points.
Constructor of intersection curve by surfaces, two-dimensional curves and points.
[in] | surf1 | - The first surface. |
[in] | curve1 | - The first two-dimensional curve. |
[in] | surf2 | - The second surface. |
[in] | surf2p0 | - Start point on the surface. |
[in] | surf2p1 | - End point on the surface. |
[in] | buildType | - An intersection curve type by construction. |
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCartPoint & | surf1p0, | ||
const MbCartPoint & | surf1p1, | ||
const MbSurface & | surf2, | ||
const MbCurve & | curve2, | ||
MbeCurveBuildType | buildType | ||
) |
Constructor by surfaces, two-dimensional points and curve.
Constructor of an intersection curve by surfaces, two-dimensional points and curve.
[in] | surf1 | - The first surface. |
[in] | surf1p0 | - Start point on the surface. |
[in] | surf1p1 | - End point on the surface. |
[in] | surf2 | - The second surface. |
[in] | curve2 | - The second two-dimensional curve. |
[in] | buildType | - An intersection curve type by construction. |
MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve | ( | const MbSurface & | surf1, |
const MbCurve & | curve1, | ||
const MbSurface & | surf2, | ||
const MbCurve & | curve2, | ||
const MbCurve3D * | spaceCurve, | ||
MbeCurveBuildType | buildType, | ||
MbeCurveGlueType | glueType, | ||
double | tol | ||
) |
Constructor for converters by surfaces and two-dimensional curves.
Constructor of intersection curve for converters by surfaces and two-dimensional curves.
[in] | surf1 | - The first surface. |
[in] | curve1 | - The first two-dimensional curve. |
[in] | surf2 | - The second surface. |
[in] | curve2 | - The second two-dimensional curve. |
[in] | spaceCurve | - Approximation of the intersection curve. |
[in] | buildType | - An intersection curve type by construction. |
[in] | glueType | - An intersection curve type by topology. |
[in] | tol | - Inaccuracy of intersection curve construction. |
|
overridevirtual |
Create a copy of the object.
Create a copy of an object using the registrator. Registrator is used to prevent multiple copy of the object. If the object contains references to the other objects, then nested objects are copied as well. It is allowed not to pass registrator into the function. Then new copy of object will be created. While copying of single object or set of not connected objects, it is allowed not to use registrator. Registrator should be used if it is required to copy several connected objects. It is possible, that objects connection is based on the references to common objects. Then, while copying without using of registrator, it is possible to obtain set of copies, that contain references to the different copies of the same nested object, that leads to loss of connection between copies.
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Determine whether an object is equal.
Still considered objects of the same type, all data is the same (equal).
[in] | item | - The object to compare. |
[in] | accuracy | - The accuracy to compare. |
Implements MbSpaceItem.
|
overridevirtual |
Make objects equal if they are similar.
You can still make only a similar objects.
[in] | item | - The object to initialize. |
Implements MbSpaceItem.
|
overridevirtual |
Determine whether an object is similar.
Such are considered the same objects whose data are similar.
[in] | item | - The object to compare. |
Reimplemented from MbSpaceItem.
|
overridevirtual |
Convert the object according to the matrix.
Convert the original object according to the matrix using the registrator. If object contains references to the other geometric objects, then nested objects are transformed according to the matrix. Registrator is needed to prevent multiple object copying. It is allowed to use function without registrator, if it is needed to transform single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be transformed.
[in] | matr | - Transformation matrix. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Move an object along a vector.
Move an object along a geometric vector using the registrator. If object contains references to the other geometric objects then the move operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be moved.
[in] | to | - Shift vector. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Rotate an object around an axis at a given angle.
Rotate an object around an axis at a given angle with the registrator. If object contains references to the other geometric objects then the rotation operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be rotated.
[in] | axis | - The axis of rotation. |
[in] | angle | - Rotation. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
Expand sent bounding box (a.k.a. gabarit), so that it included the object.
Expand sent bounding box, so that it included the object.
[in,out] | cube | - The bounding box to expand. |
Implements MbSpaceItem.
|
overridevirtual |
Build polygonal copy mesh.
Build a polygonal copy of the object that is represented by polygons or/and fasets.
[in] | stepData | - Data for еру step calculation for polygonal object. |
[in] | note | - Way for polygonal object constructing. |
[in,out] | mesh | - The builded polygonal object. |
Implements MbSpaceItem.
|
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 MbCurve3D.
|
overridevirtual |
Outstanding properties of the object.
Issue internal data (properties) of the object for viewing and modification.
[in] | properties | - Container for the internal data of the object. |
Implements MbSpaceItem.
|
overridevirtual |
Change the properties of an object.
Changing the internal data (properties) of the object you are copying the corresponding values from the sent object.
[in] | properties | - Container for the internal data of the object. |
Implements MbSpaceItem.
|
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 MbCurve3D.
|
overridevirtual |
Define whether the curve is periodic.
Define whether the curve is periodic.
A curve is considered as periodic if:
Reimplemented from MbCurve3D.
|
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 MbCurve3D.
|
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 MbCurve3D.
|
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 MbCurve3D.
|
overridevirtual |
Calculate point and derivatives on the curve.
The function is overloaded in MbSurfaceIntersectionCurve and MbSilhouetteCurve for the fast approximated calculation of a point and derivatives. In other surfaces it is equivalent to the function Explore(t,false,pnt,fir,sec,nullptr).
[in] | t | - Parameter. |
[out] | pnt | - A calculated point. |
[out] | fir | - Derivative with respect to t. |
[out] | sec | - Second derivative with respect to t, if not nullptr. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Calculate parameter step.
Calculate parameter step for the curve's approximation by its sag value. Calculation of the step is performed with consideration of curvature radius. A step of curve's approximation is chosen in such way, that the deviation from its polygon does not exceed the given value of sag.
[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 MbCurve3D.
|
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 MbCurve3D.
|
overridevirtual |
Calculate parameter step.
Calculate the parameter step for approximation of a curve by the given metric length of a step along a curve.
[in] | t | - A parameter defining the point on a curve, at which a step should be calculated. |
[in] | len | - Maximum metric length of a step along a curve. |
Reimplemented from MbCurve3D.
|
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] | 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. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Construct a trimmed curve with the given two-dimensional accuracy.
Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.
[in] | t1 | - Parameter corresponding to start of a trimmed curve. |
[in] | t2 | - Parameter corresponding to end of a trimmed curve. |
[in] | sense | - Direction of a trimmed curve in relation to an initial curve. sense = 1 - direction does not change. sense = -1 - direction changes to the opposite value. |
[in] | xyzEps | - Three-dimensional accuracy. |
[in] | saveParLenAndLaw | - Save parametric length and law. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Calculate the metric length of a curve.
The length of a curve is inaccurately calculated, by approximation of polyline. If the more accurate curve's length is required, then use the function CalculateMetricLength().
Reimplemented from MbCurve3D.
|
inline |
Copy the finished metric estimations from duplicate which weren't calculated in the original.
|
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 MbCurve3D.
|
overridevirtual |
Get the physical radius of the curve or zero if it impossible.
Generally returns 0. A non-zero value may be obtained only when the curve is an arc or is equal to an arc with the set precision (METRIC_REGION by default). \params[in] accuracy - The maximum curve deviation from an arc (METRIC_REGION by default).
Reimplemented from MbCurve3D.
|
overridevirtual |
Get an axis of a circle which is geometrically coincident to the given curve.
Get an axis of a circle which is geometrically coincident to the given curve.
[out] | axis | - An axis with the origin at circle's center and direction along the normal of circle's plane. |
Reimplemented from MbCurve3D.
|
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. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Calculate an array of points for drawing.
Get an array of drawn points with a given sag. If the cure is a contour then knots of a contour are duplicated.
[in] | stepData | - Data for step calculation. |
[in,out] | polygon | - A polygon of calculated points on a curve. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Construct a planar projection of a piece of a space curve.
Construct a planar projection of a piece of a space curve.
[in] | into | - The transformation matrix from the global coordinate system into a plane of view. |
[in] | pRegion | - A mapped piece of a curve (paramRegion.x = t1, paramRegion.y = t2), by default - the whole curve.. |
[in] | version | - Version, last by default. |
[in,out] | coincParams | - A flag of coincidence between parameterization of initial curve and its projection if coincParams != nullptr then the function tries to create a projection with coincident parameterization if *coincParams = true then parameterization of projection coincides with parameterization of initial curve. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Construct a planar projection of a space curve to a plane.
Construct a planar projection of a space curve to a plane.
[in] | place | - A plane. |
[in] | version | - The version of mathematics. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Change the carrier.
For surface curves. Replaces the current carrier 'item' by a new one, if this is possible. Transforms a carried element by the given matrix.
[in] | item | - An initial carrier. |
[in] | init | - A new carrier. |
[in] | matr | - A matrix for transformation of a carried element. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Get planar curve and placement if the space curve is planar.
Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves).
[out] | curve2d | - The resulting flat curve. |
[out] | place | - The coordinate system of the resulting 2D curve. |
[in] | saveParams | - The parameter specifying the preservation of the correspondence of the parameterization for the two-dimensional curve. If true - parameterization of curve2d curve must match the parameterization of the original curve this. If false - curve parameterizations may not correspond. The curve2d is more likely to be detected than with the true flag. |
[in] | params | - Validation parameters. |
Reimplemented from MbCurve3D.
|
overridevirtual |
Get a surface curve if a spatial curve lies on a surface. Call 'DeleteItem' for arguments after use. In some cases the input 'surface' argument may be can be used to eliminate uncertainty in the choice of a curve (e.g. curves on a junction of surfaces which are same by IsSame or IsSimilar checks).
Reimplemented from MbCurve3D.
bool MbSurfaceIntersectionCurve::InsertPoints | ( | double & | t, |
const std::pair< MbCartPoint, MbCartPoint > * | pointsPair, | ||
double & | tCheck | ||
) |
Refine a curve of intersection of common case.
Refine common case intersection curve with cbt_Specific flag (for other flags is performed nothing). If a curve flag is equal to cbt_Specific, then the two-dimensional points on intersected surfaces are determined and are inserted into curveOne.curve and curveTwo.curve splines for 't' parameter.
[in] | t | - Parameter of point to refine, |
[in] | pointsPair | - Parametric points of refinement, obtained by the function of PointOn (t, points Pair-> first, pointsPair-> second), |
[in] | tCheck | - Control parameter of a point to refine, if it isn't equal to 't', then the inserted points won't move so that parameter 't' became equal to 'tCheck'. |
MbSurfaceIntersectionCurve* MbSurfaceIntersectionCurve::BreakCurve | ( | double | t, |
bool | beg, | ||
const MbSurface * | surface | ||
) |
Cutaway a curve into two pieces.
Cutaway a curve into two pieces by a point of the curve with a given parameter.
[in] | t | - Parameter of a point to split, |
[in] | beg | - Curve will keep a beginning piece (true) or curve will keep an end piece (false) |
[in] | surface | - For tolerant curve it is required to specify a surface which contain a curve a parameter belongs to |
bool MbSurfaceIntersectionCurve::TruncateCurve | ( | double | t1, |
double | t2, | ||
const MbSurface * | surface | ||
) |
Trim a curve.
Trim a curve by the given parameters.
[in] | t1 | - Beginning parameter of trimming |
[in] | t2 | - End parameter of trimming |
[in] | surface | - For tolerant curve it is required to specify a surface which contain a curve a trimming parameters belong to |
bool MbSurfaceIntersectionCurve::MergeCurves | ( | const MbSurfaceIntersectionCurve & | addCurve, |
bool | toBegin, | ||
bool | fromBegin, | ||
bool | allowCntr, | ||
const VERSION | version, | ||
bool | insertInterimPoints = true , |
||
double | eps = Math::paramNear |
||
) |
Join this curve and another curve.
Make a single curve curve from two intersection curves - is called for union of two edges from MbCurveEdge::MergeEdges function. United curves should represent the intersection of the same surfaces. Only smoothly joining curves are united. There must be an exact coincidence of curves, surfaces of these curves and tangents at joining place. Another curve can be deleted after joining.
[in] | addCurve | - Curve to join (another curve), |
[in] | toBegin | - Join to the beginning of this (true) or join to the end of this (false) |
[in] | fromBegin | - Join the beginning of 'addCurve' (true) or join the end of 'addCurve' (false), |
[in] | allowCntr | - Flag, which allows to replace curveOne.curve and curveTwo.curve by two-dimensional contours. |
[in] | version | - The version of mathematics. |
[in] | insertInterimPoints | - Flag, which allows to insert interim points into curve of type cbt_Specific. |
[in] | eps | - The precision of points comparison and classification of point location relative to the curve. |
bool MbSurfaceIntersectionCurve::ProlongCurve | ( | double & | t, |
bool | beg, | ||
double | sag, | ||
const VERSION | version, | ||
double | eps = Math::paramNear |
||
) |
Extend curve.
Extend curve to a point with a given parameter.
[in] | t | - Parameter the curve extends to point of |
[in] | beg | - Extend the beginning of the curve (true) or extend the end of the curve (false) |
[in] | version | - The version of mathematics. |
[in] | eps | - Build precision. |
bool MbSurfaceIntersectionCurve::GetMoveVector | ( | const MbSurface & | surf, |
bool | faceSense, | ||
bool | curveSense, | ||
MbVector & | to | ||
) | const |
Calculate a shift vector of two-dimensional curve of seam.
Calculate a shift vector of two-dimensional curve of seam negatively oriented with respect to the given.
virtual MbCurve3D* MbCurve3D::Trimmed |
Construct a trimmed curve.
Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.
[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 MbCurve3D* MbCurve3D::Trimmed |
Construct a trimmed curve with the given two-dimensional accuracy.
Constructs a trimmed curve, a start point of which corresponds to a point with parameter t1 and an end point corresponds to a point with parameter t2. Direction of the constructed curve relative to the initial curve may be changed by the parameter 'sense'. If the curve is closed, then there may be obtained a trimmed curve, passing through the start of a curve.
In a case of closed or periodic curve three parameters 'sense', t1 and t2 clearly define the result. In a case of unclosed curve the parameter 'sense' and parameter of trimming should correspond each other:
1) if sense == 1, then t1 < t2,
2) if sense == -1, then t1 > t2,
If there is a discrepancy between 'sense' and parameters of trimming, then 'sense' parameter has higher priority. If parameters t1 and t2 are equal and the curve is closed, then in result a closed curve should be obtained.
[in] | t1 | - Parameter corresponding to start of a trimmed curve. |
[in] | t2 | - Parameter corresponding to end of a trimmed curve. |
[in] | sense | - Direction of a trimmed curve in relation to an initial curve. sense = 1 - direction does not change. sense = -1 - direction changes to the opposite value. |
[in] | xyzEps | - Three-dimensional accuracy. |
[in] | saveParLenAndLaw | - Save parametric length and law. |