C3D Toolkit  Kernel - 109619, Vision - 2.4.0.75

Toroidal surface. More...

#include <surf_torus_surface.h>

+ Inheritance diagram for MbTorusSurface:
+ Collaboration diagram for MbTorusSurface:

Public Member Functions

 MbTorusSurface (const MbPlacement3D &pl, double initMajorR, double initMinorR)
 Constructor by local coordinate system, major and minor radii.
 
 MbTorusSurface (double initMajorR, double initMinorR, const MbPlacement3D &pl, double vin, double vax)
 Constructor by major and minor radii, local coordinate system, minimal and maximal parameters by V. More...
 
 MbTorusSurface (const MbCartPoint3D &c0, const MbCartPoint3D &c1, const MbCartPoint3D &c2)
 Constructor by three points. More...
 
 MbTorusSurface (const MbCartPoint3D &c0, const MbCartPoint3D &c1, const MbCartPoint3D &c2, double initMinorR)
 Constructor by three points and minor radius. More...
 
Initialization functions
void Init (const MbTorusSurface &)
 The initialization by toroidal surface.
 
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...
 
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 void Transform (const MbMatrix3D &matr, MbRegTransform *=NULL)
 Convert the object according to the matrix. More...
 
virtual void GetProperties (MbProperties &properties)
 Outstanding properties of the object. More...
 
virtual void SetProperties (const MbProperties &properties)
 Change the properties of an object. More...
 
Functions for surface domain description
virtual double GetUMin () const
 Get the minimum value of u.
 
virtual double GetVMin () const
 Get the minimum value of v.
 
virtual double GetUMax () const
 Get the maximum value of u.
 
virtual double GetVMax () const
 Get the maximum value of v.
 
virtual bool IsUClosed () const
 Determine whether a surface is closed in u-parameter direction. More...
 
virtual bool IsVClosed () const
 Determine whether a surface is closed in v-parameter direction. More...
 
virtual double GetUPeriod () const
 Return period for smoothly closed surface or 0.
 
virtual double GetVPeriod () const
 Return period for smoothly closed surface or 0.
 
Functions for working at surface domain

Functions PointOn, Derive... correct parameters when getting out of rectangular domain bounds.

virtual void PointOn (double &u, double &v, MbCartPoint3D &) const
 Calculate a point on the surface. More...
 
virtual void DeriveU (double &u, double &v, MbVector3D &) const
 Calculate first derivative with respect to u.
 
virtual void DeriveV (double &u, double &v, MbVector3D &) const
 Calculate first derivative with respect to v.
 
virtual void DeriveUU (double &u, double &v, MbVector3D &) const
 Calculate second derivative with respect to u.
 
virtual void DeriveVV (double &u, double &v, MbVector3D &) const
 Calculate second derivative with respect to v.
 
virtual void DeriveUV (double &u, double &v, MbVector3D &) const
 Calculate second derivative.
 
virtual void DeriveUUU (double &u, double &v, MbVector3D &) const
 Calculate third derivative.
 
virtual void DeriveUUV (double &u, double &v, MbVector3D &) const
 Calculate third derivative.
 
virtual void DeriveUVV (double &u, double &v, MbVector3D &) const
 Calculate third derivative.
 
virtual void DeriveVVV (double &u, double &v, MbVector3D &) const
 Calculate third derivative.
 
virtual void Normal (double &u, double &v, MbVector3D &) const
 Calculate normal.
 
virtual void NormalU (double &u, double &v, MbVector3D &) const
 Calculate derivative of normal with respect to U.
 
virtual void NormalV (double &u, double &v, MbVector3D &) const
 Calculate derivative of normal with respect to V.
 
Functions for working inside and outside the surface domain.

functions _PointOn, _Derive... of surfaces don't correct parameters when getting out of rectangular domain bounds.

virtual void _PointOn (double u, double v, MbCartPoint3D &) const
 Calculate a point on the surface. More...
 
virtual void _DeriveU (double u, double v, MbVector3D &) const
 Calculate first derivative with respect to u on extended surface.
 
virtual void _DeriveV (double u, double v, MbVector3D &) const
 Calculate first derivative with respect to v on extended surface.
 
virtual void _DeriveUU (double u, double v, MbVector3D &) const
 Calculate second derivative with respect to u on extended surface.
 
virtual void _DeriveVV (double u, double v, MbVector3D &) const
 Calculate second derivative with respect to v on extended surface.
 
virtual void _DeriveUV (double u, double v, MbVector3D &) const
 Calculate second derivative on extended surface.
 
virtual void _DeriveUUU (double u, double v, MbVector3D &) const
 Calculate third derivative on extended surface.
 
virtual void _DeriveUUV (double u, double v, MbVector3D &) const
 Calculate third derivative on extended surface.
 
virtual void _DeriveUVV (double u, double v, MbVector3D &) const
 Calculate third derivative on extended surface.
 
virtual void _DeriveVVV (double u, double v, MbVector3D &) const
 Calculate third derivative on extended surface.
 
virtual void _Normal (double u, double v, MbVector3D &) const
 Calculate a normal on extended surface.
 
virtual void _NormalU (double u, double v, MbVector3D &) const
 Calculate derivative of normal vector on extended surface.
 
virtual void _NormalV (double u, double v, MbVector3D &) const
 Calculate derivative of normal vector on extended surface.
 
virtual void _NormalUU (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
virtual void _NormalUV (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
virtual void _NormalVV (double u, double v, MbVector3D &) const
 Calculate second derivative of normal vector on extended surface.
 
Functions for get of the group of data inside and outside the surface's domain of parameters.
virtual void Explore (double &u, double &v, bool ext, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D *uuDer, MbVector3D *vvDer, MbVector3D *uvDer, MbVector3D *nor) const
 Calculate point and derivatives of object for given parameters. More...
 
virtual void _PointNormal (double u, double v, MbCartPoint3D &pnt, MbVector3D &deru, MbVector3D &derv, MbVector3D &norm, MbVector3D &noru, MbVector3D &norv, MbVector3D &deruu, MbVector3D &dervv, MbVector3D &deruv) const
 Calculate all derivatives at point. More...
 
Functions of moving on surface
virtual double StepU (double u, double v, double sag) const
 Calculate parameter step. More...
 
virtual double StepV (double u, double v, double sag) const
 Calculate parameter step. More...
 
virtual double DeviationStepU (double u, double v, double angle) const
 Calculate parameter step. More...
 
virtual double DeviationStepV (double u, double v, double angle) const
 Calculate parameter step. More...
 
virtual double MetricStepU (double u, double v, double length) const
 Calculate parameter step. More...
 
virtual double MetricStepV (double u, double v, double length) const
 Calculate parameter step. More...
 
virtual size_t GetUCount () const
 The number of splittings by u-parameter for a check of events.
 
virtual size_t GetVCount () const
 The number of splittings by v-parameter for a check of events.
 
Common functions of surface
virtual double CurvatureU (double u, double v) const
 Calculate line curvature along the direction of u. More...
 
virtual double CurvatureV (double u, double v) const
 Calculate line curvature along the direction of v. More...
 
virtual MbSplineSurfaceNurbsSurface (double, double, double, double, bool bmatch=false) const
 Construct a NURBS copy of trimmed surface. More...
 
virtual MbSurfaceNurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) const
 Construct a NURBS copy of a surface. More...
 
virtual MbSurfaceOffset (double d, bool same) const
 Create an offset surface. More...
 
virtual MbCurve3DCurveU (double v, MbRect1D *pRgn, bool bApprox=true) const
 Construct spatial copy of the line v = const. More...
 
virtual MbCurve3DCurveV (double u, MbRect1D *pRgn, bool bApprox=true) const
 Construct spatial copy of the line u = const.
More...
 
virtual void DirectPointProjection (const MbCartPoint3D &p, const MbVector3D &vect, SArray< MbCartPoint > &uv, bool ext, MbRect2D *uvRange=NULL) const
 Find all a point projection onto the surface along a vector in either of two directions. More...
 
virtual void CurveIntersection (const MbCurve3D &curv, SArray< MbCartPoint > &uv, SArray< double > &tt, bool ext0, bool ext, bool touchInclude=false) const
 Determine points of intersection between a surface and a curve. More...
 
virtual MbeNewtonResult SurfaceTangentNewton (const MbSurface &surf1, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const
 Solution of equation system for determination of surfaces tangency. For internal use only.
 
virtual MbeNewtonResult CurveTangentNewton (const MbCurve3D &curv, double funcEpsilon, size_t iterLimit, double &u, double &v, double &t, bool ext0, bool ext1) const
 Solution of equation system for determination of tangency between a surface and a curve. For internal use only.
 
virtual bool GetCylinderAxis (MbAxis3D &axis) const
 Get rotation axis of a surface.
 
virtual bool GetCenterLines (std::vector< MbCurve3D *> &clCurves) const
 Get center lines of a surface.
 
virtual bool IsSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const
 Define whether the surfaces are similar for merge. More...
 
virtual bool GetMatrixToSurface (const MbSurface &surf, MbMatrix &matr, VERSION version, double precision=METRIC_PRECISION) const
 Get two-dimensional matrix of transformation from its parametric region to the parametric region of 'surf'. More...
 
virtual double GetFilletRadius (const MbCartPoint3D &p) const
 Get fillet radius if the surface is a fillet surface.
 
virtual ThreeStates Salient () const
 Determine whether the surface is convex.
 
virtual void GetTesselation (const MbStepData &stepData, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const
 Determine a splitting of parametric region of a surface by verticals and horizontals. More...
 
virtual void SetLimit (double u1, double v1, double u2, double v2)
 Set surface limits. For internal use only.
 
virtual void SetExtendedParamRegion (double u1, double v1, double u2, double v2)
 Set extended limits of surface. For internal use only.
 
virtual void IncludePoint (double u, double v)
 Include a point into domain. For internal use only.
 
virtual bool GetPoleVMin () const
 Whether a pole exists on parametric region boundary.
 
virtual bool GetPoleVMax () const
 Whether a pole exists on parametric region boundary.
 
virtual bool IsPole (double u, double v) const
 Whether the point is a pole.
 
virtual size_t GetUMeshCount () const
 The the number of splittings in u-direction.
 
virtual size_t GetVMeshCount () const
 The the number of splittings in v-direction.
 
virtual double GetUParamToUnit () const
 Get increment of u-parameter, corresponding to the unit length in space.
 
virtual double GetVParamToUnit () const
 Get increment of v-parameter, corresponding to the unit length in space.
 
virtual double GetUParamToUnit (double u, double v) const
 Get increment of u-parameter, corresponding to the unit length in space.
 
virtual double GetVParamToUnit (double u, double v) const
 Get increment of v-parameter, corresponding to the unit length in space.
 
virtual void GetParamsToUnit (double u, double v, double &uParam, double &vParam) const
 Get increment of parameters, corresponding to the unit length in space.
 
virtual bool IsShift (const MbSpaceItem &, MbVector3D &, bool &isSame, double accuracy=LENGTH_EPSILON) const
 Determine whether the object is a translation. More...
 
virtual double GetRadius () const
 Get the physical radius of the object or null if it impossible.
More...
 
Functions of elementary surfaces.
virtual bool GetPointProjection (const MbCartPoint3D &p, bool init, double &u, double &v, bool ext, MbRect2D *uvRange=NULL) const
 The nearest point projection onto the surface. More...
 
- Public Member Functions inherited from MbElementarySurface
virtual MbeSpaceType Type () const
 Get the group object type.
 
virtual void Move (const MbVector3D &to, MbRegTransform *=NULL)
 Move an object along a vector. More...
 
virtual void Rotate (const MbAxis3D &axis, double angle, MbRegTransform *=NULL)
 Rotate an object around an axis at a given angle. More...
 
virtual double DistanceToPoint (const MbCartPoint3D &to) const
 Determine the distance to the point. More...
 
virtual void GetBasisItems (RPArray< MbSpaceItem > &s)
 Get the base objects.
 
virtual void GetBasisPoints (MbControlData3D &) const
 Get control points of object.
 
virtual void SetBasisPoints (const MbControlData3D &)
 Change the object by control points.
 
virtual MbeNewtonResult PointProjectionNewton (const MbCartPoint3D &p, size_t iterLimit, double &u, double &v, bool ext) const
 Finding of point projection on surface. For internal use only.
 
virtual bool NearPointProjection (const MbCartPoint3D &p, double &u, double &v, bool ext, MbRect2D *uvRange=NULL) const
 Find the projection of a point onto the surface. More...
 
virtual bool IsRectangular () const
 Determine whether derivatives with respect to u and v are orthogonal.
 
void AddTesselation (double step, size_t maxCount, double w1, double w2, SArray< double > &ww) const
 Add parameters to the array with given step. More...
 
const MbPlacement3DGetPlacement () const
 A local coordinate system.
 
void InitPlacement (MbPlacement3D &p)
 Set the local coordinate system.
 
bool IsPositionNormal () const
 Whether the coordinate system is orthonormalized.
 
bool IsPositionIsotropic () const
 Whether the coordinate system is orthogonal and isotropic by the axes.
 
bool IsPositionCircular () const
 Whether the coordinate system is orthogonal with X and Y axes equal by length.
 
- Public Member Functions inherited from MbSurface
virtual ~MbSurface ()
 Destructor.
 
 VISITING_CLASS (MbSurface)
 Implementation of a function initializing a visit of an object.
 
virtual MbeSpaceType Family () const
 Get family of objects.
 
virtual void AddYourGabaritTo (MbCube &c) const
 Expand sent bounding box (a.k.a. gabarit), so that it included the object. 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 CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const
 Build polygonal copy mesh. More...
 
virtual MbPropertyCreateProperty (MbePrompt name) const
 Create your own property with the name.
 
size_t size () const
 Number of objects if object is interpreted as vector of objects.
 
const MbSurfaceoperator[] (size_t) const
 An access operator.
 
virtual bool IsUTouch () const
 Determine whether a surface is closed in u-parameter direction regardless of the smoothness of the closure. More...
 
virtual bool IsVTouch () const
 Determine whether a surface is closed in v-parameter direction regardless of the smoothness of the closure. More...
 
virtual bool IsUPeriodic () const
 Determine whether a surface is closed in u-parameter direction. More...
 
virtual bool IsVPeriodic () const
 Determine whether a surface is closed in v-parameter direction. More...
 
virtual double GetPeriod (ptrdiff_t i) const
 Return period. More...
 
virtual size_t Periodicity () const
 Determine periodicity. More...
 
virtual bool GetPoleUMin () const
 Whether a pole exists on parametric region boundary.
 
virtual bool GetPoleUMax () const
 Whether a pole exists on parametric region boundary.
 
bool IsPole (const MbCartPoint &uv) const
 Whether the point is a pole.
 
virtual void TangentU (double &u, double &v, MbVector3D &) const
 Calculate tangent vector in u.
 
virtual void TangentV (double &u, double &v, MbVector3D &) const
 Calculate tangent vector in v.
 
virtual void _TangentU (double u, double v, MbVector3D &) const
 Calculate tangent vector in u direction on extended surface.
 
virtual void _TangentV (double u, double v, MbVector3D &) const
 Calculate tangent vector in v direction on extended surface.
 
virtual void _NormalD (double u, double v, double du, double dv, MbVector3D &der) const
 Calculate derivative of normal vector at the point with the given parameters u and v along the line with the given direction (du,dv).
 
double SurfaceStep (const double &u, const double &v, bool alongU, const MbStepData &stepData) const
 Calculate parameter step. More...
 
virtual const MbSurfaceGetSurface () const
 Get itself (it is overloaded only in CurveBoundedSurface).
 
virtual const MbSurfaceGetBasisSurface () const
 Get the base surface if exists or itself.
 
virtual MbSurfaceSetSurface ()
 Get itself (it is overloaded only in CurveBoundedSurface).
 
virtual MbSurfaceSetBasisSurface ()
 Get the base surface if exists or itself.
 
virtual void GetLimitPoint (ptrdiff_t number, MbCartPoint3D &pnt) const
 Calculate the boundary point. More...
 
virtual void GetLimitPoint (ptrdiff_t number, MbCartPoint &pnt) const
 Calculate the boundary two-dimensional point. More...
 
MbCartPoint3D GetLimitPoint (ptrdiff_t number) const
 Calculate the boundary point. More...
 
double NormalCurvatureU (double u, double v) const
 Calculate a normal curvature of line along the direction of u. More...
 
double NormalCurvatureV (double u, double v) const
 Calculate a normal curvature of line along the direction of v. More...
 
double NormalCurvature (double u, double v, double du, double dv) const
 Calculate a normal curvature of surface. More...
 
bool MeanGaussCurvature (double u, double v, double &mean, double &gauss) const
 Calculate the mean and the Gaussian curvature.
More...
 
virtual bool IsSameBase (const MbSurface &) const
 Whether a base surface is a copy of the base surface of the given object.
 
virtual bool IsPlanar () const
 Whether a surface is planar.
 
virtual MbeParamDir GetFilletDirection () const
 Direction of fillet surface.
 
virtual bool GetCentre (MbCartPoint3D &c) const
 Give the center of sphere surface.
 
virtual void ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init)
 Changing of carrier. More...
 
virtual bool ChangeCarrierBorne (const MbSurface &item, MbSurface &init, const MbMatrix &matr)
 Changing of carrier elements. More...
 
virtual bool IsSpinePeriodic () const
 Periodicity of the guide. More...
 
MbSplineSurfaceNurbsSurface (bool bmatch=false) const
 Construct a NURBS copy of a surface. More...
 
bool NurbsParam (const MbNurbsParameters &tParam, bool uParam, double op1, double op2, bool &isClosedNurbs, double &epsilon, SArray< double > &params) const
 Prepare parameters for the transformation to NURBS surface. More...
 
void CheckApproxPointParamsOpen (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const
 Chose points for approximation along the parameter. More...
 
void CheckApproxPointParamsClosed (bool isU, double par, size_t degree, size_t pCount, SArray< double > &tList, SArray< double > &aKnots) const
 Chose points for approximation along the parameter. More...
 
virtual MbCurve3DCurveUV (const MbLineSegment &segm, bool bApprox=true) const
 Construct spatial copy of line by parametric line. More...
 
virtual MbeItemLocation PointRelative (const MbCartPoint3D &pnt, double eps=ANGLE_REGION) const
 Get point location relative to the surface. More...
 
virtual MbeItemLocation PointClassification (const MbCartPoint &pnt, bool ignoreClosed=false) const
 A point is located inside the region on a surface. More...
 
virtual double DistanceToBorder (const MbCartPoint &point, double &epsilon) const
 Calculate the parametric distance to the nearest boundary. More...
 
virtual size_t CurveClassification (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const
 Determine points of intersections between the curve and the surface contours. More...
 
size_t SurfaceBorderIntersection (const MbCurve &curve, SArray< double > &tcurv, SArray< MbVector > &dir) const
 Determine points of intersections between the curve and the surface contours. More...
 
virtual MbeNewtonResult DirectPointProjectionNewton (const MbCartPoint3D &p, const MbVector3D &vect, size_t iterLimit, double &u, double &v, double &w, bool ext) const
 Finding of point projections to the surface in direction of the vector. For internal use only.
 
virtual bool NearDirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, double &u, double &v, bool ext, MbRect2D *uvRange=NULL, bool onlyPositiveDirection=false) const
 Find the nearest point projection to the surface in the vector direction. More...
 
virtual MbeNewtonResult CurveIntersectNewton (const MbCurve3D &curv1, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &t1, bool ext0, bool ext1) const
 Solution of equation system for determination of intersections between a surface and a curve. For internal use only.
 
virtual MbeNewtonResult SurfaceIntersectNewton (const MbSurface &surf1, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u0, double &v0, double &u1, double &v1, bool ext0, bool ext1) const
 Solution of equation system for determination of surfaces intersections. For internal use only.
 
virtual MbeNewtonResult SilhouetteNewton (const MbVector3D &eye, bool perspective, const MbAxis3D *axis, MbeParamDir switchPar, double funcEpsilon, size_t iterLimit, double &u, double &v, bool ext) const
 Solution of equation system for determination of surface silhouette points. For internal use only.
 
virtual bool IsSpecialSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const
 Whether the surfaces are similar to merge. Special case. For internal use only.
 
virtual bool ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, MbCurve *&curveNew) const
 Construction of projection of a surface curve on coincident surface. More...
 
bool ProjectCurveOnSimilarSurface (const MbCurve3D &spaceCurve, const MbCurve &curve, const MbSurface &surfNew, SPtr< MbCurve > &curveNew) const
 Construction of projection of a surface curve on coincident surface. More...
 
virtual double DistanceToCurve (const MbCurve3D &curve, double &u, double &v, double &t, bool tCalc=false) const
 Calculate the nearest distance to a curve. More...
 
virtual double DistanceToSurface (const MbSurface &surf1, double &u0, double &v0, double &u1, double &v1) const
 Calculate the nearest distance to a surface. More...
 
virtual bool CreateNormalPlacements (const MbVector3D &axisZ, double angle, SArray< MbPlacement3D > &places) const
 Construct normal placements of constructive planes.
 
virtual bool CreateTangentPlacements (const MbVector3D &axisZ, SArray< MbPlacement3D > &places) const
 Construct tangent placements of constructive planes.
 
MbeNewtonResult PlacementNewton (const MbVector3D &vec, double angle, MbeParamDir switchPar, size_t iterLimit, double &u, double &v) const
 Construct tangent placements of constructive planes. For internal use only.
 
bool CreateVconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const
 Construct the normal or tangent placements on v-lines.
 
bool CreateUconstPlacements (const MbVector3D &axisZ, double angle, bool normalPlace, SArray< MbPlacement3D > &places) const
 Construct the normal or tangent placements on u-lines.
 
virtual double ParamArea () const
 Calculate the area of parameters domain.
 
virtual size_t GetUPairs (double v, SArray< double > &u) const
 Calculate U-pairs by V. More...
 
virtual size_t GetVPairs (double u, SArray< double > &v) const
 Calculate V-pairs by U. More...
 
MbeNewtonResult IsoclinalNewton (const MbVector3D &dir, size_t iterLimit, double &u, double &v) const
 Determination of parameters of a surface isocline point. For internal use only.
 
virtual void GetIsoclinal (const MbVector3D &nor, SArray< MbCartPoint > &uv) const
 Find all isoclines of a surface. More...
 
virtual void CalculateGabarit (MbCube &cube) const
 Calculate bounding box of surface. It is recommended to use GetGabarit.
 
virtual void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const
 Calculate bounding box in the local coordinate system.
 
const MbCubeGetGabarit () const
 Calculate bounding box of surface.
 
const MbCubeCube () const
 Return saved bounding box. It should be empty. It is recommended to use GetGabarit.
 
void SetDirtyGabarit () const
 Make the bounding box empty. For internal use only.
 
void CopyGabarit (const MbSurface &s, const MbVector3D *to=NULL)
 Copy the bounding box from the copy. More...
 
double GetGabDiagonal () const
 Calculate the diagonal of the bounding box.
 
void CalculateRect (const MbPlacement3D &place, MbRect &rect) const
 Calculate the rectangular bounding box of a surface in the given plane. More...
 
virtual MbContourMakeContour (bool sense) const
 Return the bounding two-dimensional contour. More...
 
virtual MbCurveMakeSegment (size_t i, bool sense) const
 Return a segment of the bounding two-dimensional contour. More...
 
MbCurveMakeCurve (size_t number1, size_t number2) const
 Return a segment of the bounding two-dimensional contour. More...
 
void SetLimit (const MbRect &)
 Set surface limits. For internal use only.
 
double GetMaxParamDeltaU () const
 Get the maximum increment of U-parameter.
 
double GetMaxParamDeltaV () const
 Get the maximum increment of V-parameter.
 
virtual double GetParamDelta () const
 Get the maximum increment of parameter.
 
virtual double GetParamPrice () const
 Get the minimum distinguishable value of parameter.
 
double GetUParamToUnit (const MbCartPoint &uv) const
 Get increment of u-parameter, corresponding to the unit length in space.
 
double GetVParamToUnit (const MbCartPoint &uv) const
 Get increment of v-parameter, corresponding to the unit length in space.
 
double GetUEpsilon () const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetVEpsilon () const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetUEpsilon (double u, double v) const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetVEpsilon (double u, double v) const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricEpsilon in space.
 
double GetURegion () const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetVRegion () const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetURegion (double u, double v) const
 Get the minimum distinguishable value of u-parameter. It corresponds to the length Math::metricRegion in space.
 
double GetVRegion (double u, double v) const
 Get the minimum distinguishable value of v-parameter. It corresponds to the length Math::metricRegion in space.
 
void CalculatePolygon (double minPar, double maxPar, double constPar, MbeParamDir dir, const MbStepData &stepData, MbPolygon3D &polygon) const
 Calculate polygon by u or v. More...
 
virtual void CalculateSurfaceWire (const MbStepData &stepData, size_t beg, MbMesh &mesh, size_t uMeshCount=c3d::WIRE_MAX, size_t vMeshCount=c3d::WIRE_MAX) const
 Calculate mesh. More...
 
void AddTesselation (const MbStepData &stepData, MbeParamDir dir, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const
 Determine splitting of the surface parametric region according to direction. More...
 
virtual void CalculateSurfaceGrid (const MbStepData &stepData, bool sense, MbGrid &grid) const
 Approximate a surface by triangular plates. More...
 
virtual bool IsLineU () const
 Check that all derivatives of surface with respect to u which have more than first order are equal to null.
 
virtual bool IsLineV () const
 Check that all derivatives of surface with respect to v which have more than first order are equal to null.
 
virtual void CheckSurfParams (double &u, double &v) const
 Check parameters. Analogue of the global function _CheckParams, optimized for caches usage. More...
 
bool GetPlacement (MbPlacement3D *place, bool exact=false) const
 Get a plane (or only a possibility of getting a plane)
 
bool GetPlanePlacement (MbPlacement3D &place) const
 Get a plane.
 
bool GetControlPlacement (MbPlacement3D &place, bool sameSense=true) const
 Get a placement of a surface at the middle point.
 
bool OrientPlacement (MbPlacement3D &place, bool normalSense=true) const
 Orient an axis X of a placement along the line of its intersection with surface.
 
bool IsPointOn (const MbCartPoint3D &, double eps=METRIC_PRECISION) const
 Determine whether a point is located on a surface or not.
 
void PointOn (MbCartPoint &uv, MbCartPoint3D &p) const
 Calculate the point on a surface inside the domain of surface.
 
void _PointOn (const MbCartPoint &uv, MbCartPoint3D &p) const
 Calculate a point on a surface extension.
 
void Normal (MbCartPoint &uv, MbVector3D &v) const
 Calculate the normal vector to a surface inside the domain of surface.
 
bool GetMatrix (double xMin, double xMax, double yMin, double yMax, MbMatrix &matr) const
 Find a matrix of transformation for the curves on a surface when the parameterization is changed. More...
 
double GetUMid () const
 The middle value of u.
 
double GetVMid () const
 The middle value of v.
 
double GetURange () const
 Parametric length by u.
 
double GetVRange () const
 Parametric length by v.
 
void GetRect (MbRect &r) const
 Get parametric bounding box.
 
void GetRect (MbRect2D &r) const
 Get parametric bounding box.
 
- 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.
 
virtual bool IsSimilar (const MbSpaceItem &item) const
 Determine whether an object is similar. More...
 
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.
 

Functions of toroidal surface

double GetMajorRadius () const
 Get physical major radius.
 
double GetMinorRadius () const
 Get physical minor radius.
 
void SetMajorR (double r)
 Changing of major radius.
 
void SetMinorR (double r)
 Changing of minor radius.
 
double GetMajorR () const
 Major radius.
 
double GetMinorR () const
 Minor radius.
 
double GetR (double v) const
 Radius of v-parallel.
 
void GetMinorCentre (double u, MbCartPoint3D &c) const
 Get center of torus u-line.
 
double MinorCentreProjection (MbCartPoint3D &p) const
 Get projection of the point to the line of centers of minor radius.
 
bool GetVPoles (double &poleVMin, double &poleVMax) const
 Define position of the poles. More...
 

Additional Inherited Members

- Protected Member Functions inherited from MbSurface
 MbSurface ()
 Constructor.
 
 MbSurface (const MbSurface &)
 Copy-constructor.
 
void MoveGabarit (const MbVector3D &v)
 Move bounding box.
 
void NormalCalculation (const MbVector3D &uDer, const MbVector3D &vDer, double u, double v, bool ext, MbVector3D &nor) const
 Normal calculation by derivatives uDer and vDer on point with parameters u, v.
 
double StepAlong (double u, double v, double sag, bool alongU, double stepMinCoeff, const MbVector3D &der, const MbVector3D &sec) const
 Step calculation by sag.
 
double DeviationStepAlong (double u, double v, double angle, bool alongU, const MbVector3D &der, const MbVector3D &sec) const
 Step calculation by normal deviation.
 
- Protected Member Functions inherited from MbSpaceItem
 MbSpaceItem ()
 Default constructor.
 
- Protected Attributes inherited from MbElementarySurface
MbPlacement3D position
 Local coordinate system.
 
double umin
 Minimal value of first parameter.
 
double vmin
 Minimal value of second parameter.
 
double umax
 Maximal value of first parameter.
 
double vmax
 Maximal value of second parameter.
 
- Protected Attributes inherited from MbSurface
MbCube cube
 Bounding box of surface. More...
 

Detailed Description

Toroidal surface.

A surface of torus is described by the radius of centers 'majorRadius' and the radius of tube 'minorRadius', which are set in the local coordinate system.
The first parameter of a surface is measured by an arc from the axis 'position.axisX' in direction of the axis 'position.axisY'. The first parameter of a surface u takes values on the segment: umin<=u<=umax. Values u=0 and u=2pi correspond to the point on the plane XZ of a local coordinate system. A surface may be closed in direction of the first parameter. If a surface is closed, then umax-umin=2pi, otherwise umax-umin<2pi.
The second parameter of a surface is measured by an arc from the plane XY of the surface local coordinate system in direction of the axis 'position.axisZ'. The second parameter of a surface v takes values on the segment: vmin<=v<=vmax. The values v=0 and v=2pi correspond to a point on the plane XY of the surface local coordinate system. A surface may be closed in direction of the second parameter if majorRadius>minorRadius. If a surface is closed, then vmax-vmin=2pi, otherwise vmax-vmin<2pi.
Radius-vector of line surface is described by the vector function
r(u,v) = position.origin + ((majorRadius + (minorRadius cos(v)) (cos(u) position.axisX + sin(u) position.axisY)) + (minorRadius sin(v) position.axisZ).
Radius of tube must be positive: minorRadius>0. Radius of centers must be not less than the radius of tube with the opposite sign: majorRadius>-minorRadius. If majorRadius<minorRadius, then the surface has a pole for the parameter v=arccos(majorRadius/minorRadius) and v=2pi-arccos(majorRadius/minorRadius).
The following inequalities must be satisfied for the parameters of surface boundary: umin<umax, vmin<vmax.
Local coordinate system 'position' can be both right and left. If the local coordinate system is right then the normal is directed outside the tube of a surface, if the local coordinate system is left then the normal is directed inside the tube of a surface.

Constructor & Destructor Documentation

◆ MbTorusSurface() [1/3]

MbTorusSurface::MbTorusSurface ( double  initMajorR,
double  initMinorR,
const MbPlacement3D pl,
double  vin,
double  vax 
)

Constructor by major and minor radii, local coordinate system, minimal and maximal parameters by V.

Constructor by major and minor radii, local coordinate system, minimal and maximal parameters by V.

Warning
This is used only in converters.

◆ MbTorusSurface() [2/3]

MbTorusSurface::MbTorusSurface ( const MbCartPoint3D c0,
const MbCartPoint3D c1,
const MbCartPoint3D c2 
)

Constructor by three points.

The first point is the center of the surface local coordinate system.
A length of a vector directed from the first point to the second point is equal to the major radius,
its direction coincides with the direction of the axis X.
A length of a vector directed from the second point to the third point is equal to the minor radius,
The axis Z lies on the plane of the points and directed to the side of the vector from the first point to the third point.

◆ MbTorusSurface() [3/3]

MbTorusSurface::MbTorusSurface ( const MbCartPoint3D c0,
const MbCartPoint3D c1,
const MbCartPoint3D c2,
double  initMinorR 
)

Constructor by three points and minor radius.

Constructor by three points and minor radius.
The first point is the center of the toroidal surface local coordinate system.
A vector from the first point to the second point - direction of the axis Z. Major radius is equal to the length of the projection to the axis Z of the vector directed from the first point to the third point.

Member Function Documentation

◆ Duplicate()

virtual MbSpaceItem& MbTorusSurface::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 MbElementarySurface.

◆ IsSame()

virtual bool MbTorusSurface::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 MbElementarySurface.

◆ SetEqual()

virtual bool MbTorusSurface::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 MbElementarySurface.

◆ Transform()

virtual void MbTorusSurface::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.

Reimplemented from MbElementarySurface.

◆ GetProperties()

virtual void MbTorusSurface::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 MbElementarySurface.

◆ SetProperties()

virtual void MbTorusSurface::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 MbElementarySurface.

◆ IsUClosed()

virtual bool MbTorusSurface::IsUClosed ( ) const
virtual

Determine whether a surface is closed in u-parameter direction.

Determine whether a surface is closed smoothly in u-parameter direction without regard to the boundary contour. It is always false for MbCurveBoundSurface. It is recommended to use IsUPeriodic.

Implements MbElementarySurface.

◆ IsVClosed()

virtual bool MbTorusSurface::IsVClosed ( ) const
virtual

Determine whether a surface is closed in v-parameter direction.

Determine whether a surface is closed smoothly in v-parameter direction without regard to the boundary contour. It is always false for MbCurveBoundSurface. It is recommended to use IsVPeriodic.

Implements MbElementarySurface.

◆ PointOn()

virtual void MbTorusSurface::PointOn ( double &  u,
double &  v,
MbCartPoint3D p 
) const
virtual

Calculate a point on the surface.

Correct parameters when getting out of rectangular domain bounds and Calculate a point on the surface.

Parameters
[in]u- First surface parameter.
[in]v- Second surface parameter.
[out]p- A point on the surface.

Implements MbElementarySurface.

◆ _PointOn()

virtual void MbTorusSurface::_PointOn ( double  u,
double  v,
MbCartPoint3D p 
) const
virtual

Calculate a point on the surface.

Calculate a point on the surface including the outside area determination parameters.

Parameters
[in]u- First surface parameter.
[in]v- Second surface parameter.
[out]p- A point on the surface or on extended surface.

Reimplemented from MbSurface.

◆ Explore()

virtual void MbTorusSurface::Explore ( double &  u,
double &  v,
bool  ext,
MbCartPoint3D pnt,
MbVector3D uDer,
MbVector3D vDer,
MbVector3D uuDer,
MbVector3D vvDer,
MbVector3D uvDer,
MbVector3D nor 
) const
virtual

Calculate point and derivatives of object for given parameters.

Values of point and derivatives are calculated on parameters area and on extended surface.

Parameters
[in]u- Parameter.
[in]v- Parameter.
[in]ext- On parameters area (false), on extended surface (true).
[out]pnt- Point.
[out]uDer- Derivative with respect to u.
[out]vDer- Derivative with respect to v.
[out]uuDer- Second derivative with respect to u, if not NULL.
[out]vvDer- Second derivative with respect to v, if not NULL.
[out]uvDer- Second derivative with respect to u and v, if not NULL.

Implements MbElementarySurface.

◆ _PointNormal()

virtual void MbTorusSurface::_PointNormal ( double  u,
double  v,
MbCartPoint3D pnt,
MbVector3D deru,
MbVector3D derv,
MbVector3D norm,
MbVector3D noru,
MbVector3D norv,
MbVector3D deruu,
MbVector3D dervv,
MbVector3D deruv 
) const
virtual

Calculate all derivatives at point.

Values of point and derivatives are calculated an extended surface.

Parameters
[in]u- Parameter.
[in]v- Parameter.
[out]pnt- Point.
[out]deru- Derivative with respect to u.
[out]derv- Derivative with respect to v.
[out]norm- Normal.
[out]noru- Derivative of normal vector with respect to u.
[out]norv- Derivative of normal vector with respect to v.
[out]deruu- Second derivative with respect to u.
[out]dervv- Second derivative with respect to v.
[out]deruv- Second derivative with respect to u and v.

Reimplemented from MbSurface.

◆ StepU()

virtual double MbTorusSurface::StepU ( double  u,
double  v,
double  sag 
) const
virtual

Calculate parameter step.

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

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]sag- Maximum feasible sag value.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ StepV()

virtual double MbTorusSurface::StepV ( double  u,
double  v,
double  sag 
) const
virtual

Calculate parameter step.

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

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]sag- Maximum feasible sag value.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ DeviationStepU()

virtual double MbTorusSurface::DeviationStepU ( double  u,
double  v,
double  angle 
) const
virtual

Calculate parameter step.

Calculate parameter step for the surface approximation by the deviation angle of the tangent vector along a line with a constant value of u. A step of surface approximation along a curve is chosen in such way, that angular deviation of the tangent to the curve at the next point does not exceed the given value ang.

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]ang- The maximum feasible deviation angle of tangent.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ DeviationStepV()

virtual double MbTorusSurface::DeviationStepV ( double  u,
double  v,
double  angle 
) const
virtual

Calculate parameter step.

Calculate parameter step for the surface approximation by the deviation angle of the tangent vector along a line with a constant value of v. A step of surface approximation along a curve is chosen in such way, that angular deviation of the tangent to the curve at the next point does not exceed the given value ang.

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]ang- The maximum feasible deviation angle of tangent.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ MetricStepU()

virtual double MbTorusSurface::MetricStepU ( double  u,
double  v,
double  length 
) const
virtual

Calculate parameter step.

Calculate the parameter step for approximation of a surface by the given metric length of a step along a line with a constant value of u.

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]len- The given metric length.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ MetricStepV()

virtual double MbTorusSurface::MetricStepV ( double  u,
double  v,
double  length 
) const
virtual

Calculate parameter step.

Calculate the parameter step for approximation of a surface by the given metric length of a step along a line with a constant value of v.

Parameters
[in]u- A parameter defining a point on the surface.
[in]v- A parameter defining a point on the surface.
[in]len- The given metric length.
Returns
A sag value by parameter at given point.

Implements MbElementarySurface.

◆ CurvatureU()

virtual double MbTorusSurface::CurvatureU ( double  u,
double  v 
) const
virtual

Calculate line curvature along the direction of u.

There is calculated a line curvature along the direction of u when v = const.

Parameters
[in]u- Parameter.
[in]v- Parameter.
Returns
Curvature.

Reimplemented from MbSurface.

◆ CurvatureV()

virtual double MbTorusSurface::CurvatureV ( double  u,
double  v 
) const
virtual

Calculate line curvature along the direction of v.

There is calculated a line curvature along the direction of v when u = const.

Parameters
[in]u- Parameter.
[in]v- Parameter.
Returns
Curvature.

Reimplemented from MbSurface.

◆ NurbsSurface() [1/2]

virtual MbSplineSurface* MbTorusSurface::NurbsSurface ( double  u1,
double  u2,
double  v1,
double  v2,
bool  bmatch = false 
) const
virtual

Construct a NURBS copy of trimmed surface.

An obtained surface is always unclosed in u and in v. The exception is the NURBS surface itself. If the surface does not require recalculation, then a copy of it is returned. Parameters u1, u2, v1 and v2 are the bounds of surface trimming.

Parameters
[in]u1- Minimum parameter in U.
[in]u2- Maximum parameter in U.
[in]v1- Minimum parameter in V.
[in]v2- Maximum parameter in V.
[in]bmatch- true, if it is required to keep one-to-one correspondence of parametric regions in mapping.

Reimplemented from MbSurface.

◆ NurbsSurface() [2/2]

virtual MbSurface* MbTorusSurface::NurbsSurface ( const MbNurbsParameters uParam,
const MbNurbsParameters vParam 
) const
virtual

Construct a NURBS copy of a surface.

Constructs a NURBS surface which approximates a given surface with the given parameters in each direction. In parameters the degree and the number of knots of a spline and the range of curve's parameters changing may be set. If the flag of accurate approximation is not set in parameters then NURBS without multiple knots is constructed.

Parameters
[in]uParam- Parameters of construction in u direction.
[in]vParam- Parameters of construction in v direction.
Returns
The constructed NURBS surface or NULL in a case of failure.

Reimplemented from MbSurface.

◆ Offset()

virtual MbSurface* MbTorusSurface::Offset ( double  d,
bool  same 
) const
virtual

Create an offset surface.

Parameters
[in]d- Distance by the normal vector from the base surface to the offset surface.
[in]same- A flag showing whether to use the current surface or its copy in offset surface.

Reimplemented from MbSurface.

◆ CurveU()

virtual MbCurve3D* MbTorusSurface::CurveU ( double  v,
MbRect1D pRgn,
bool  bApprox = true 
) const
virtual

Construct spatial copy of the line v = const.

Parameters
[in]v- Parameter in V direction.
[in]pRgn- A range of u-parameters.
[in]bApprox- If false, then it returns null only in a case when the exact curve has been successfully created.
If true, then it returns null in a case when the curve is not degenerate.
Returns
Constructed curve.

Reimplemented from MbSurface.

◆ CurveV()

virtual MbCurve3D* MbTorusSurface::CurveV ( double  u,
MbRect1D pRgn,
bool  bApprox = true 
) const
virtual

Construct spatial copy of the line u = const.

Parameters
[in]u- Parameter in U direction.
[in]pRgn- A range of v-parameters.
[in]bApprox- If false, then it returns null only in a case when the exact curve has been successfully created.
If true, then it returns null in a case when the curve is not degenerate.
Returns
Constructed curve.

Reimplemented from MbSurface.

◆ DirectPointProjection()

virtual void MbTorusSurface::DirectPointProjection ( const MbCartPoint3D pnt,
const MbVector3D vect,
SArray< MbCartPoint > &  uv,
bool  ext,
MbRect2D uvRange = NULL 
) const
virtual

Find all a point projection onto the surface along a vector in either of two directions.

Calculate all points of intersection with the ray outgoing from the given point 'p' by the direction 'vect'. If the range of parameters changing 'uvRange' is set, then it is required to find a projection in the given range. A range of parameters may not belong to the domain of a surface.

Parameters
[in]pnt- A given point.
[in]vect- A direction vector.
[out]uv- A set of projection points in the area of surface definition.
[in]ext- A flag defining whether to seek projection on the extension of the surface.
[in]uvRange- A range of surface parameters changing in which the solution should be found.

Reimplemented from MbSurface.

◆ CurveIntersection()

virtual void MbTorusSurface::CurveIntersection ( const MbCurve3D curv,
SArray< MbCartPoint > &  uv,
SArray< double > &  tt,
bool  ext0,
bool  ext,
bool  touchInclude = false 
) const
virtual

Determine points of intersection between a surface and a curve.

Determine points of intersection between a surface and a curve.

Parameters
[in]curv- A given curve.
[in]uv- A set of intersection points on the surface.
[in,out]tt- A set of intersection points on the curve.
[in]ext0- A flag defining whether to seek intersections on extended surface (if it is true, then seek).
[in]ext- A flag defining whether to seek intersections on extended curve (if it is true, then seek).
[in]touchInclude- Whether to consider tangency as intersection. If true, then consider.

Reimplemented from MbSurface.

◆ IsSimilarToSurface()

virtual bool MbTorusSurface::IsSimilarToSurface ( const MbSurface surf,
VERSION  version,
double  precision = METRIC_PRECISION 
) const
virtual

Define whether the surfaces are similar for merge.

Surfaces are similar for merge if they coincide geometrically or one surface transits to another.

Parameters
[in]surf- A given surface.
[in]version- Version of operation.
[in]precision- Precision of calculation.
Returns
True - if surfaces are similar.

Reimplemented from MbSurface.

◆ GetMatrixToSurface()

virtual bool MbTorusSurface::GetMatrixToSurface ( const MbSurface surf,
MbMatrix matr,
VERSION  version,
double  precision = METRIC_PRECISION 
) const
virtual

Get two-dimensional matrix of transformation from its parametric region to the parametric region of 'surf'.

Calculation of matrix of transformation from one parametric region to another. it is performed for the surfaces which are similar for merge.

Parameters
[in]surf- A given surface.
[out]matr- A transformation matrix.
[in]version- Version of operation.
[in]precision- Precision of calculation.
Returns
True - matrix is calculated.

Reimplemented from MbSurface.

◆ GetTesselation()

virtual void MbTorusSurface::GetTesselation ( const MbStepData stepData,
double  u1,
double  u2,
double  v1,
double  v2,
SArray< double > &  uu,
SArray< double > &  vv 
) const
virtual

Determine a splitting of parametric region of a surface by verticals and horizontals.

Determine a splitting of parametric region of a surface by verticals and horizontals during triangulation.

Parameters
[in]stepData- Data for step calculation during triangulation.
[in]u1- Minimal value of u-parameter in the region of surface splitting.
[in]u2- Maximal value of u-parameter in the region of surface splitting.
[in]v1- Minimal value of v-parameter in the region of surface splitting.
[in]v2- Maximal value of v-parameter in the region of surface splitting.
[out]uu- A set of parameters of splitting by u.
[out]vv- A set of parameters of splitting by v.

Reimplemented from MbSurface.

◆ IsShift()

virtual bool MbTorusSurface::IsShift ( const MbSpaceItem obj,
MbVector3D dir,
bool &  isSame,
double  accuracy = LENGTH_EPSILON 
) const
virtual

Determine whether the object is a translation.

Determine whether the object is a translation of a given object.

Parameters
[in]obj- A pattern object.
[out]dir- A translation vector if the object is translation.
[out]isSame- True at the output if the current surface and the pattern object are identical.
Returns
True - if a surface is translation

Reimplemented from MbSurface.

◆ GetRadius()

virtual double MbTorusSurface::GetRadius ( ) const
virtual

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

Method returns maximum physical radius by one of the parametric direction if the corresponding parametric curve is the arc, method returns zero otherwise.

Reimplemented from MbSurface.

◆ GetPointProjection()

virtual bool MbTorusSurface::GetPointProjection ( const MbCartPoint3D p,
bool  init,
double &  u,
double &  v,
bool  ext,
MbRect2D uvRange = NULL 
) const
virtual

The nearest point projection onto the surface.

The nearest point projection onto the surface.

Parameters
[in]p- Projecting point
[in]init- If true, then input parameters u and v are considered to be initial approximations
[in,out]u- Parameter of projection onto the surface
[in,out]v- Parameter of projection onto the surface
[in]ext- Attribute of search at the extension of a surface
[in]uvRange- Region of search the projection
Returns
True if the operation succeeded

Implements MbElementarySurface.

◆ GetVPoles()

bool MbTorusSurface::GetVPoles ( double &  poleVMin,
double &  poleVMax 
) const

Define position of the poles.

Define position of the poles.

Parameters
[out]poleVMin,poleVMax- Values of the poles.
Returns
True if the poles are found.

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