C3D Toolkit  Kernel - 109696, Vision - 2.4.0.76
MbSurfaceIntersectionCurve Class Reference

Intersection curve of two surfaces. More...

#include <cur_surface_intersection.h>

+ Inheritance diagram for MbSurfaceIntersectionCurve:
+ Collaboration diagram for MbSurfaceIntersectionCurve:

Public Member Functions

 MbSurfaceIntersectionCurve (const MbSurface &surf1, const MbCurve &curve1, const MbSurface &surf2, const MbCurve &curve2, MbeCurveBuildType buildType, bool sameOne, bool sameTwo, MbRegDuplicate *iReg=NULL)
 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.
 
virtual double GetTMax () const
 Get the maximum value of parameter.
 
virtual double GetTMin () const
 Get the minimum value of parameter.
 
virtual bool IsClosed () const
 Define whether the curve is closed. More...
 
virtual double GetPeriod () const
 Return period. If a curve is not periodic then 0.
 
virtual bool IsPeriodic () const
 Define whether the curve is periodic.
 
virtual void PointOn (double &t, MbCartPoint3D &) const
 Calculate a point on the curve. More...
 
virtual void FirstDer (double &t, MbVector3D &) const
 Calculate first derivative.
 
virtual void SecondDer (double &t, MbVector3D &) const
 Calculate second derivative.
 
virtual void ThirdDer (double &t, MbVector3D &) const
 Calculate third derivative.
 
virtual void Tangent (double &t, MbVector3D &) const
 Calculate tangent vector (normalized).
 
virtual void _PointOn (double t, MbCartPoint3D &) const
 Calculate point at curve and its extension. More...
 
virtual void _FirstDer (double t, MbVector3D &) const
 Calculate first derivative at curve and its extension.
 
virtual void _SecondDer (double t, MbVector3D &) const
 Calculate second derivative at curve and its extension.
 
virtual void _ThirdDer (double t, MbVector3D &) const
 Calculate third derivative at curve and its extension.
 
virtual void Explore (double &t, bool ext, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec, MbVector3D *thir) const
 Calculate point and derivatives of object for given parameter. More...
 
virtual void FastApproxExplore (double &t, MbCartPoint3D &pnt, MbVector3D &fir, MbVector3D *sec) const
 Calculate point and derivatives on the curve. More...
 
virtual void Inverse (MbRegTransform *iReg=NULL)
 Change direction of a curve.
 
virtual double Step (double t, double sag) const
 Calculate parameter step. More...
 
virtual double DeviationStep (double t, double angle) const
 Calculate parameter step. More...
 
virtual double MetricStep (double t, double length) const
 Calculate parameter step. More...
 
virtual MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo &) const
 Construct a NURBS copy of a curve. More...
 
virtual MbCurve3DTrimmed (double t1, double t2, int sense) const
 Construct a trimmed curve. More...
 
MbSurfaceIntersectionCurveTrimmedIntersection (double t1, double t2, int sense) const
 Create a trimmed curve on the same surfaces.
 
virtual double GetMetricLength () const
 Calculate the metric length of a curve.
 
virtual double GetLengthEvaluation () const
 Calculate the metric length of a curve. More...
 
bool CopyReadyMutable (const MbSurfaceIntersectionCurve &s)
 
virtual double CalculateLength (double t1, double t2) const
 Calculate the metric length of a curve. More...
 
virtual double GetRadius () const
 Get the physical radius of the curve or null if it impossible. More...
 
virtual bool GetCircleAxis (MbAxis3D &) const
 Get an axis of a circle which is geometrically coincident to the given curve. More...
 
virtual void GetCentre (MbCartPoint3D &) const
 Give the curve center.
 
virtual void GetWeightCentre (MbCartPoint3D &) const
 Give the gravity center of a curve.
 
virtual void CalculateGabarit (MbCube &c) const
 Calculate bounding box of a curve.
 
virtual bool DistanceAlong (double &t, double len, int curveDir, double eps=Math::metricPrecision, VERSION version=Math::DefaultMathVersion()) const
 Translate parameter along the curve. More...
 
virtual void CalculatePolygon (const MbStepData &stepData, MbPolygon3D &polygon) const
 Calculate an array of points for drawing. More...
 
virtual MbCurveGetMap (const MbMatrix3D &into, MbRect1D *pRegion=NULL, VERSION version=Math::DefaultMathVersion(), bool *coincParams=NULL) const
 Construct a planar projection of a piece of a space curve. More...
 
virtual MbCurveGetProjection (const MbPlacement3D &place, VERSION version) const
 Construct a planar projection of a space curve to a plane. More...
 
virtual size_t GetCount () const
 Define the number of splittings for one passage in operations.
 
virtual bool IsStraight () const
 Whether the line is straight?
 
virtual void ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init)
 Change the carrier. For surface curves.
 
virtual bool ChangeCarrierBorne (const MbSpaceItem &item, MbSpaceItem &init, const MbMatrix &matr)
 Change the carrier. More...
 
virtual bool IsPlanar () const
 Is a curve planar?
 
virtual bool IsSmoothConnected (double angleEps) const
 Are joints of contour/curve smooth?
 
virtual double DistanceToPlace (const MbPlacement3D &place, double &t0, double &angle) const
 The nearest point of a curve by the placement.
 
virtual bool GetPlaneCurve (MbCurve *&curve2d, MbPlacement3D &place3d, bool saveParams, VERSION version=Math::DefaultMathVersion()) const
 Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves)
 
virtual bool GetPlacement (MbPlacement3D &place, VERSION version=Math::DefaultMathVersion()) const
 Fill the placement if a curve is planar.
 
virtual bool GetSurfaceCurve (MbCurve *&curve2d, MbSurface *&surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
virtual double GetParamToUnit () const
 Get increment of parameter, corresponding to the unit length in space.
 
virtual double GetParamToUnit (double t) const
 Get increment of parameter, corresponding to the unit length in space.
 
virtual bool IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const
 Is the object is a shift?
 
virtual bool IsSimilarToCurve (const MbCurve3D &other, double precision=METRIC_PRECISION) const
 Whether the curves to union (joining) are similar.
 
virtual bool IsSpaceSame (const MbSpaceItem &item, double eps=METRIC_REGION) const
 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.
 
virtual void GetCurvatureSpecialPoints (std::vector< c3d::DoublePair > &points) const
 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...
 
MbSurfaceIntersectionCurveBreakCurve (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=PARAM_NEAR)
 Join this curve and another curve. More...
 
bool ProlongCurve (double &t, bool beg, double sag, const VERSION version)
 Extend curve. More...
 
void Normalize ()
 Match parametric length of two-dimensional curves.
 
const MbCurveChooseCurve (const MbSurface &surf, bool faceSense, bool curveSense) const
 Select a seam curve by face orientation and orientation of two-dimensional curve.
 
MbCurveChooseCurve_ (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 MbSurfaceCurveGetCurve (ptrdiff_t i) const
 Get surface curve by index (0 - first, 1 - second).
 
MbSurfaceCurveSetCurve (ptrdiff_t i)
 Get surface curve by index (0 - first, 1 - second).
 
const MbSurfaceCurveGetCurveOne () const
 Get the first surface curve.
 
MbSurfaceCurveSetCurveOne ()
 Get the first surface curve.
 
const MbSurfaceCurveGetCurveTwo () const
 Get the second surface curve.
 
MbSurfaceCurveSetCurveTwo ()
 Get the second surface curve.
 
const MbCurveGetCurveOneCurve () const
 Get two-dimensional curve of the first surface curve.
 
MbCurveSetCurveOneCurve ()
 Get two-dimensional curve of the first surface curve.
 
const MbCurveGetCurveTwoCurve () const
 Get two-dimensional curve of the second surface curve.
 
MbCurveSetCurveTwoCurve ()
 Get two-dimensional curve of the second surface curve.
 
const MbSurfaceGetCurveOneSurface () const
 Get surface of the first surface curve.
 
MbSurfaceSetCurveOneSurface ()
 Get surface of the first surface curve.
 
const MbSurfaceGetCurveTwoSurface () const
 Get surface of the second surface curve.
 
MbSurfaceSetCurveTwoSurface ()
 Get surface of the second surface curve.
 
const MbSurfaceGetSurface (ptrdiff_t i) const
 Get surface by index (0 - from first surface curve, 1 - from second one).
 
MbSurfaceSetSurface (ptrdiff_t i)
 Get surface by index (0 - from first surface curve, 1 - from second one).
 
const MbSurfaceCurveGetSCurveOne () const
 Get a pointer to the first curve on surface.
 
const MbSurfaceCurveGetSCurveTwo () const
 Get a pointer to the second curve on surface.
 
const MbCurveGetPCurveOne () const
 Get a pointer to the two-dimensional curve.
 
const MbCurveGetPCurveTwo () const
 Get a pointer to the two-dimensional curve.
 
const MbSurfaceGetSurfaceOne () const
 Get a pointer to the surface of the first curve.
 
const MbSurfaceGetSurfaceTwo () const
 Get a pointer to the surface of the second curve.
 
const MbSurfaceGetAnotherSurface (const MbSurface &surface) const
 Get one of the surfaces different from the given one.
 
const MbCurveGetAnotherCurve (const MbCurve &curve) const
 Get one of two-dimensional curves different from the given one.
 
virtual void GetPointsByEvenLengthDelta (size_t n, std::vector< MbCartPoint3D > &pnts) const
 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 > &params) const
 Determine existence of points of changing the convexity-concavity.
 
MbCurve3DMakeCurve (double t1, double t2) const
 Construct a piece of a spatial curve copy.
 
MbCurve3DMakeCurve () const
 Construct a spatial curve copy.
 
const MbCurve3DGetSpaceCurve () const
 Get an approximate spatial curve for interpretation of the intersection.
 
MbCurve3DSetSpaceCurve ()
 Get an approximate spatial curve for interpretation of the intersection.
 
const MbCurve3DGetExactCurve (bool saveParams=true) const
 Get exact spatial copy or itself.
 
void ReleaseSpaceCurve ()
 Remove a spatial curve.
 
MbSurfaceIntersectionCurveBreakWithGap (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'.
 
MbCurve3DTrimmed (const MbCartPoint3D &p1, const MbCartPoint3D &p2, bool sense) 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.
 
Common functions of a geometric object.
virtual MbeSpaceType IsA () const
 Get the type of the object.
 
virtual MbSpaceItemDuplicate (MbRegDuplicate *=NULL) const
 Create a copy of the object. More...
 
MbSurfaceIntersectionCurveCurvesDuplicate () const
 Create a copy of a curve on the same surfaces.
 
virtual bool IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const
 Determine whether an object is equal. More...
 
virtual bool SetEqual (const MbSpaceItem &)
 Make objects equal if they are similar. More...
 
virtual bool IsSimilar (const MbSpaceItem &) const
 Determine whether an object is similar. More...
 
virtual void Transform (const MbMatrix3D &, MbRegTransform *=NULL)
 Convert the object according to the matrix. More...
 
virtual void Move (const MbVector3D &, MbRegTransform *=NULL)
 Move an object along a vector. More...
 
virtual void Rotate (const MbAxis3D &, double angle, MbRegTransform *=NULL)
 Rotate an object around an axis at a given angle. More...
 
virtual void AddYourGabaritTo (MbCube &r) const
 Expand sent bounding box (a.k.a. gabarit), so that it included the object. More...
 
virtual void CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const
 Build polygonal copy mesh. More...
 
virtual void Refresh ()
 Translate all the time (mutable) data objects in an inconsistent (initial) state.
 
virtual void PrepareIntegralData (const bool forced) const
 Calculate temporary (mutable) data of an object. More...
 
virtual void GetProperties (MbProperties &)
 Outstanding properties of the object. More...
 
virtual void SetProperties (const MbProperties &)
 Change the properties of an object. More...
 
virtual void GetBasisItems (RPArray< MbSpaceItem > &)
 Outstanding reference objects in a container sent.
 
virtual void GetBasisPoints (MbControlData3D &) const
 Get control points of object.
 
virtual void SetBasisPoints (const MbControlData3D &)
 Change the object by control points.
 
- Public Member Functions inherited from MbCurve3D
virtual ~MbCurve3D ()
 Destructor.
 
 VISITING_CLASS (MbCurve3D)
 Implementation of a function initializing a visit of an object.
 
size_t size () const
 Size of curve interpreted as vector of curves.
 
const MbCurve3Doperator[] (size_t) const
 An access operator.
 
virtual MbeSpaceType Type () const
 Get the group object type.
 
virtual MbeSpaceType Family () const
 Get family of objects.
 
virtual MbCurve3DInverseDuplicate () const
 Create a copy with changed direction.
 
virtual double DistanceToPoint (const MbCartPoint3D &) const
 Determine the distance to the point. More...
 
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 MbCurve3DGetBasisCurve () const
 Returns the base curve if exists or itself.
 
virtual MbCurve3DSetBasisCurve ()
 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.
 
MbNurbs3DNurbsCurve (const MbCurveIntoNurbsInfo *nInfo=NULL) const
 Construct a NURBS copy of a curve. More...
 
virtual MbCurve3DNurbsCurve (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...
 
double GetParamLength () const
 Return the parametric length of a curve.
 
virtual double CalculateMetricLength () const
 Calculate the metric length of a curve.
 
virtual void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const
 To compute bounding box in a local coordinate system. More...
 
virtual bool IsDegenerate (double eps=METRIC_PRECISION) const
 Check whether the curve is degenerated.calculate.
 
virtual MbPropertyCreateProperty (MbePrompt name) const
 Create your own property with the name.
 
void CalculatePolygon (double sag, MbPolygon3D &poligon) const
 
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=NULL) 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 MbCurveGetMapPsp (const MbMatrix3D &into, double zNear, MbRect1D *pRegion=NULL) 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
 
virtual bool IsContinuousDerivative (bool &contLength, bool &contDirect, c3d::DoubleVector *params=NULL, 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 GetCurvatureContinuityBounds (std::vector< double > &params) const
 Get the boundaries of the sections of the curve on which the continuity of curvature is preserved. More...
 
MbCartPoint3D GetLimitPoint (ptrdiff_t number) const
 Calculate the boundary point. More...
 
void GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const
 Calculate the boundary point. More...
 
MbVector3D GetLimitTangent (ptrdiff_t number) const
 Calculate a tangent vector to the boundary point. More...
 
void GetLimitTangent (ptrdiff_t number, MbVector3D &v) const
 Calculate a tangent vector to the boundary point. More...
 
bool AreLimitPointsEqual () const
 Are boundary points equal? More...
 
bool SetInParamRegion (double &t) const
 Move to the parametric region.
 
bool IsParamOn (double t, double eps) const
 Check whether a parameter is in the range of the curve.
 
bool IsInverseSame (const MbCurve3D &curve, double accuracy=LENGTH_EPSILON) const
 Whether an inversed curve is the same.
 
virtual bool IsReparamSame (const MbCurve3D &curve, double &factor) const
 Define whether a reparameterized curve is the same. More...
 
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.
 
virtual const MbCurve3DGetSubstrate () const
 Get a substrate or itself.
 
virtual MbCurve3DSetSubstrate ()
 Get a substrate or itself.
 
virtual int SubstrateCurveDirection () const
 Direction of a substrate relative to a curve or vice versa.
 
virtual void SubstrateToCurve (double &) const
 Transform a substrate parameter to the curve parameter.
 
virtual void CurveToSubstrate (double &) const
 Transform a curve parameter to the substrate parameter.
 
bool GetPlaneCurve (SPtr< MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, VERSION version=Math::DefaultMathVersion()) const
 Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves)
 
bool GetPlaneCurve (SPtr< const MbCurve > &curve2d, MbPlacement3D &place, bool saveParams, VERSION version=Math::DefaultMathVersion()) const
 Get planar curve and placement if the space curve is planar (after the using call DeleteItem for two-dimensional curves)
 
bool GetSurfaceCurve (SPtr< MbCurve > &curve2d, SPtr< MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
bool GetSurfaceCurve (SPtr< const MbCurve > &curve2d, SPtr< const MbSurface > &surface, VERSION version=Math::DefaultMathVersion()) const
 Get surface curve if the space curve is surface (after the using call DeleteItem for arguments)
 
void CalculateGrid (double radius, const MbStepData &stepData, MbMesh &mesh) const
 Approximation of a curve by the flat tube with the given radius.
 
SimpleName GetCurveName () const
 A curve name.
 
void SetCurveName (SimpleName newName)
 Set a curve name.
 
- Public Member Functions inherited from MbSpaceItem
virtual ~MbSpaceItem ()
 Destructor.
 
void PrepareWrite () const
 Register object. More...
 
virtual MbeRefType RefType () const
 Get a registration type (for copying, duplication).
 
virtual bool IsFamilyRegistrable () const
 Whether the object belongs to a registrable family.
 
void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const
 
void CalculateWire (double sag, MbMesh &mesh) const
 
- Public Member Functions inherited from TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Constructor.
 
 TapeBase (const TapeBase &)
 Copy-constructor.
 
virtual ~TapeBase ()
 Destructor.
 
RegistrableRec GetRegistrable () const
 Whether the stream class is registrable.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Set the state of registration of the stream class.
 
virtual const char * GetPureName (const VersionContainer &) const
 Get the class name.
 
- Public Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 
refcount_t GetUseCount () const
 Get count of references (get count of owners of an object).
 
refcount_t AddRef () const
 Increase count of references by one.
 
refcount_t DecRef () const
 Decrease count of references by one.
 
refcount_t Release () const
 Decrease count of references by one and if count of references became zero, then remove itself.
 
- Public Member Functions inherited from MbNestSyncItem
void Lock () const
 Switch lock on (locking happens only in parallel region).
 
void Unlock () const
 Switch lock off if locking has been set.
 
CommonRecursiveMutexGetLock () const
 Get a pointer to the mutex object. Return NULL 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().
 
- Protected Member Functions inherited from MbCurve3D
 MbCurve3D ()
 Default constructor.
 
 MbCurve3D (const MbCurve3D &other)
 Copy-constructor.
 
- Protected Member Functions inherited from MbSpaceItem
 MbSpaceItem ()
 Default constructor.
 

Additional Inherited Members

- Protected Attributes inherited from MbCurve3D
SimpleName name
 A curve name.
 

Detailed Description

Intersection curve of two surfaces.

Intersection curve of surfaces contains two curves on intersected surfaces - curveOne and curveTwo, conformed to the next rules:

  1. curves have the same domains,
  2. curves return the same radius-vector and its derivatives at the same parameters, that is, curves are equally directed and coincide in space.
    'buildType' parameter of the intersection curve informs about the way the second rule is carried out. If 'buildType' parameter is equal to cbt_Ordinary or cbt_Boundary, then the rules are satisfied exactly. If 'buildType' parameter is equal to cbt_Specific or cbt_Tolerant, then the rules are satisfied approximately.
    In the common case (buildType==cbt_Specific) intersection curve of surfaces is presented in form of two splines curveOne.curve and curveTwo.curve. Splines pass through two-dimensional support points in parameter spaces of curveOne.surface and curveTwo.surface surfaces correspondingly. Support points of 'curveTwo' spline corresponds to each support point of 'curveOne' spline. Parameters of splines are equal for corresponding support points, and splines coincide in space. Thus, the second rule of intersection curve is satisfied exactly in support points.
    If one passes a spatial polyline through the support points, then the angle between its neighboring segments won't exceed 0,04pi. The change of parameter while moving from one support point of curve to the next one is proportional to the length of the polyline segment between the neighboring points.
    For any value of parameter the point of surfaces intersection is calculated precisely from the solution of surfaces intersection equations system.
    For determination of precise surfaces intersection between neighboring support points of splines the following actions are performed. The plane perpendicular to a segment which starts and ends at neighboring support points is constructed. Then, the point of three surfaces intersection is determined by the numerical method (curveOne.surface, curveTwo.surface and plane).
    In specific case the intersection curve can circumscribe the surface boundary (buildType==cbt_Boundary), then the curves are equal and lie on the same surface.
    In rare cases the second rule of the intersection curve can't be satisfied precisely, but it is satisfied with a certain error. In these cases parameter 'buildType' is equal to cbt_Tolerant and the intersected surfaces touch each other by an intersection curve, and calculation of point of curve from solution of surfaces intersection equation system is complicated due to the ambiguity of solution.
    All activities related to the construction of the intersection curve, ensuring its accuracy and parameter definition buildType, executed before the constructor of the curve.
    'spaceCurve' curve can be absent, it is calculated if necessary, it knows nothing about surfaces and generally is approximating. It is used when accuracy isn't important.
    Intersection curve of surfaces is used to connect the surfaces or to describe connection edge of two faces. Intersection curve can describe different types of connection edges of two faces:
    an ordinary edge - different surfaces, different two-dimensional curves,
    a seam edge - single surface, different two-dimensional curves,
    Parting edge - duplicated surfaces, duplicated two-dimensional curves,
    a boundary edge - same surface, same two-dimensional curve,
    edge-pole - same surface, duplicated two-dimensional curves.
    if two-dimensional curves of curveOne and curveTwo curves on surface are contours, then count of segments in them has to be the same.

Constructor & Destructor Documentation

◆ MbSurfaceIntersectionCurve() [1/5]

MbSurfaceIntersectionCurve::MbSurfaceIntersectionCurve ( const MbSurface surf1,
const MbCurve curve1,
const MbSurface surf2,
const MbCurve curve2,
MbeCurveBuildType  buildType,
bool  sameOne,
bool  sameTwo,
MbRegDuplicate iReg = NULL 
)

Constructor by surfaces and two-dimensional curves.

Constructor of intersection curve by surfaces and two-dimensional curves.

Parameters
[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() [2/5]

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.

Parameters
[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() [3/5]

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.

Parameters
[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() [4/5]

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.

Parameters
[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() [5/5]

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.

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

Member Function Documentation

◆ Duplicate()

virtual MbSpaceItem& MbSurfaceIntersectionCurve::Duplicate ( MbRegDuplicate iReg = NULL) const
virtual

Create a copy of the object.

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

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

Implements MbCurve3D.

◆ IsSame()

virtual bool MbSurfaceIntersectionCurve::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const
virtual

Determine whether an object is equal.

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

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

Implements MbCurve3D.

◆ SetEqual()

virtual bool MbSurfaceIntersectionCurve::SetEqual ( const MbSpaceItem item)
virtual

Make objects equal if they are similar.

You can still make only a similar objects.

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

Implements MbCurve3D.

◆ IsSimilar()

virtual bool MbSurfaceIntersectionCurve::IsSimilar ( const MbSpaceItem item) const
virtual

Determine whether an object is similar.

Such are considered the same objects whose data are similar.

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

Reimplemented from MbSpaceItem.

◆ Transform()

virtual void MbSurfaceIntersectionCurve::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = NULL 
)
virtual

Convert the object according to the matrix.

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

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

Implements MbCurve3D.

◆ Move()

virtual void MbSurfaceIntersectionCurve::Move ( const MbVector3D to,
MbRegTransform iReg = NULL 
)
virtual

Move an object along a vector.

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

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

Implements MbCurve3D.

◆ Rotate()

virtual void MbSurfaceIntersectionCurve::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = NULL 
)
virtual

Rotate an object around an axis at a given angle.

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

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

Implements MbCurve3D.

◆ AddYourGabaritTo()

virtual void MbSurfaceIntersectionCurve::AddYourGabaritTo ( MbCube cube) const
virtual

Expand sent bounding box (a.k.a. gabarit), so that it included the object.

Expand sent bounding box, so that it included the object.

Parameters
[in,out]cube- The bounding box to expand.

Reimplemented from MbCurve3D.

◆ CalculateMesh()

virtual void MbSurfaceIntersectionCurve::CalculateMesh ( const MbStepData stepData,
const MbFormNote note,
MbMesh mesh 
) const
virtual

Build polygonal copy mesh.

Build a polygonal copy of the object that is represented by polygons or/and fasets.

Parameters
[in]stepData- Data for еру step calculation for polygonal object.
[in]note- Way for polygonal object constructing.
[in,out]mesh- The builded polygonal object.

Reimplemented from MbCurve3D.

◆ PrepareIntegralData()

virtual void MbSurfaceIntersectionCurve::PrepareIntegralData ( const bool  forced) const
virtual

Calculate temporary (mutable) data of an object.

Calculate the temporary data of an object depending of the "forced" parameter. Calculate only data that was not calculated earlier if parameter "forced" is equal false. Recalculate all temporary data of an object if parameter "forced" is equal true.

Parameters
[in]forced- Forced recalculation.

Reimplemented from MbCurve3D.

◆ GetProperties()

virtual void MbSurfaceIntersectionCurve::GetProperties ( MbProperties properties)
virtual

Outstanding properties of the object.

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

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

Implements MbCurve3D.

◆ SetProperties()

virtual void MbSurfaceIntersectionCurve::SetProperties ( const MbProperties properties)
virtual

Change the properties of an object.

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

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

Implements MbCurve3D.

◆ IsClosed()

virtual bool MbSurfaceIntersectionCurve::IsClosed ( ) const
virtual

Define whether the curve is closed.

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

  • start point is coincident with end point,
  • derivatives in start point and end point coincide,
    if there are breaks at curve (in cases when a curve is contour or polyline), then derivatives may not coincide; in Bezier curve derivatives should coincide by direction, but they may differ by absolute value.
    Returns
    True if a curve is closed.

Implements MbCurve3D.

◆ PointOn()

virtual void MbSurfaceIntersectionCurve::PointOn ( double &  t,
MbCartPoint3D p 
) const
virtual

Calculate a point on the curve.

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

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

Implements MbCurve3D.

◆ _PointOn()

virtual void MbSurfaceIntersectionCurve::_PointOn ( double  t,
MbCartPoint3D p 
) const
virtual

Calculate point at curve and its extension.

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

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

Reimplemented from MbCurve3D.

◆ Explore()

virtual void MbSurfaceIntersectionCurve::Explore ( double &  t,
bool  ext,
MbCartPoint3D pnt,
MbVector3D fir,
MbVector3D sec,
MbVector3D thir 
) const
virtual

Calculate point and derivatives of object for given parameter.

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

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

Reimplemented from MbCurve3D.

◆ FastApproxExplore()

virtual void MbSurfaceIntersectionCurve::FastApproxExplore ( double &  t,
MbCartPoint3D pnt,
MbVector3D fir,
MbVector3D sec 
) const
virtual

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

Parameters
[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 NULL.

Reimplemented from MbCurve3D.

◆ Step()

virtual double MbSurfaceIntersectionCurve::Step ( double  t,
double  sag 
) const
virtual

Calculate parameter step.

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

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

Reimplemented from MbCurve3D.

◆ DeviationStep()

virtual double MbSurfaceIntersectionCurve::DeviationStep ( double  t,
double  ang 
) const
virtual

Calculate parameter step.

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

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

Reimplemented from MbCurve3D.

◆ MetricStep()

virtual double MbSurfaceIntersectionCurve::MetricStep ( double  t,
double  length 
) const
virtual

Calculate parameter step.

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

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

Reimplemented from MbCurve3D.

◆ NurbsCurve()

virtual MbNurbs3D* MbSurfaceIntersectionCurve::NurbsCurve ( const MbCurveIntoNurbsInfo nInfo) const
virtual

Construct a NURBS copy of a curve.

Constructs a NURBS curve which approximates a given curve inside the range [t1, t2]. with a given direction. If it is possible, constructs the accurate curve, perhaps with multiple knots. The number of knots for NURBS is defined depending on the curve.

Parameters
[in]t1- Parameter corresponding to start of approximated part of a curve.
[in]t2- Parameter corresponding to end of approximated part of a curve.
[in]sense- Does the direction of parameter increasing along the NURBS curve coincide with direction of the initial curve. 'sense' > 0 - direction coincide.
[in]nInfo- Parameters of conversion of a curve to NURBS.
Returns
The constructed NURBS curve or NULL in a case of failure.

Reimplemented from MbCurve3D.

◆ Trimmed()

virtual MbCurve3D* MbSurfaceIntersectionCurve::Trimmed ( double  t1,
double  t2,
int  sense 
) const
virtual

Construct a trimmed curve.

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

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

Reimplemented from MbCurve3D.

◆ GetLengthEvaluation()

virtual double MbSurfaceIntersectionCurve::GetLengthEvaluation ( ) const
virtual

Calculate the metric length of a curve.

The length of a curve is inaccurately calculated, by approximation of polyline. If the more accurate curve's length is required, then use the function CalculateMetricLength().

Reimplemented from MbCurve3D.

◆ CopyReadyMutable()

bool MbSurfaceIntersectionCurve::CopyReadyMutable ( const MbSurfaceIntersectionCurve s)
inline

Copy the finished metric estimations from duplicate which weren't calculated in the original.

Warning
Attention: for speed purposes the check of equality of the original and the copy isn't performed!

◆ CalculateLength()

virtual double MbSurfaceIntersectionCurve::CalculateLength ( double  t1,
double  t2 
) const
virtual

Calculate the metric length of a curve.

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

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

Reimplemented from MbCurve3D.

◆ GetRadius()

virtual double MbSurfaceIntersectionCurve::GetRadius ( ) const
virtual

Get the physical radius of the curve or null if it impossible.

In general case 0 is returned. A value different from 0 may be obtained only in a case, when the curve is an arc of a circle or it is equivalent to an arc of a circle.

Returns
A value of radius, if it is existed, or 0.0.

Reimplemented from MbCurve3D.

◆ GetCircleAxis()

virtual bool MbSurfaceIntersectionCurve::GetCircleAxis ( MbAxis3D axis) const
virtual

Get an axis of a circle which is geometrically coincident to the given curve.

Get an axis of a circle which is geometrically coincident to the given curve.

Parameters
[out]axis- An axis with the origin at circle's center and direction along the normal of circle's plane.

Reimplemented from MbCurve3D.

◆ DistanceAlong()

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

Translate parameter along the curve.

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

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

Reimplemented from MbCurve3D.

◆ CalculatePolygon()

virtual void MbSurfaceIntersectionCurve::CalculatePolygon ( const MbStepData stepData,
MbPolygon3D poligon 
) const
virtual

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.

Parameters
[in]sag- Maximal value of sag.
[in,out]poligon- A polygon of calculated points on a curve.

Reimplemented from MbCurve3D.

◆ GetMap()

virtual MbCurve* MbSurfaceIntersectionCurve::GetMap ( const MbMatrix3D into,
MbRect1D pRegion = NULL,
VERSION  version = Math::DefaultMathVersion(),
bool *  coincParams = NULL 
) const
virtual

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

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

Parameters
[in]into- The transformation matrix from the global coordinate system into a plane of view.
[in]pRegion- A mapped piece of a curve (paramRegion.x = t1, paramRegion.y = t2), by default - the whole curve..
[in]version- Version, last by default.
[in,out]coincParams- A flag of coincidence between parameterization of initial curve and its projection

if coincParams != NULL then the function tries to create a projection with coincident parameterization
if *coincParams = true then parameterization of projection coincides with parameterization of initial curve.
Returns
Two-dimensional projection of a curve

Reimplemented from MbCurve3D.

◆ GetProjection()

virtual MbCurve* MbSurfaceIntersectionCurve::GetProjection ( const MbPlacement3D place,
VERSION  version 
) const
virtual

Construct a planar projection of a space curve to a plane.

Construct a planar projection of a space curve to a plane.

Parameters
[in]place- A plane.
[in]version- The version of mathematics.
Returns
Two-dimensional projection of a curve

Reimplemented from MbCurve3D.

◆ ChangeCarrierBorne()

virtual bool MbSurfaceIntersectionCurve::ChangeCarrierBorne ( const MbSpaceItem item,
MbSpaceItem init,
const MbMatrix matr 
)
virtual

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.

Parameters
[in]item- An initial carrier.
[in]init- A new carrier.
[in]matr- A matrix for transformation of a carried element.
Returns
True - if the operation is performed successfully, otherwise false.

Reimplemented from MbCurve3D.

◆ InsertPoints()

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.

Parameters
[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'.
Returns
Returns true if there was a curve joining.
Warning
For internal use only.

◆ BreakCurve()

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.

Parameters
[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
Returns
Returns the cut piece of curve. Split curve into two.

◆ TruncateCurve()

bool MbSurfaceIntersectionCurve::TruncateCurve ( double  t1,
double  t2,
const MbSurface surface 
)

Trim a curve.

Trim a curve by the given parameters.

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
Returns
Returns true if there was a curve trimming.

◆ MergeCurves()

bool MbSurfaceIntersectionCurve::MergeCurves ( const MbSurfaceIntersectionCurve addCurve,
bool  toBegin,
bool  fromBegin,
bool  allowCntr,
const VERSION  version,
bool  insertInterimPoints = true,
double  eps = PARAM_NEAR 
)

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.

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

Returns
Returns true if there was a curve joining.

◆ ProlongCurve()

bool MbSurfaceIntersectionCurve::ProlongCurve ( double &  t,
bool  beg,
double  sag,
const VERSION  version 
)

Extend curve.

Extend curve to a point with a given parameter.

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

Returns
Returns true if there was an extension.

◆ GetMoveVector()

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.


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