C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Lofted surface passing through given family of curves. More...
#include <surf_lofted_surface.h>
Classes | |
class | MbLoftedSurfaceAuxiliaryData |
Auxiliary data. More... | |
Public Member Functions | |
MbLoftedSurface (const RPArray< MbCurve3D > &initCurves, bool vc, const MbVector3D &v1, const MbVector3D &v2, bool same, VERSION version=Math::DefaultMathVersion()) | |
Constructor of surface. More... | |
MbLoftedSurface (const RPArray< MbCurve3D > &initCurves, const SArray< double > &initParams, bool vc, const MbVector3D &v1, const MbVector3D &v2, bool setNormal1, bool setNormal2, double derFactor1, double derFactor2, const MbVector3D &directSurf1, const MbVector3D &directSurf2, bool same, VERSION version=Math::DefaultMathVersion()) | |
Constructor of surface. More... | |
Common functions of a geometric object | |
MbeSpaceType | IsA () const override |
Get the type of the object. | |
MbeSpaceType | Type () const override |
Get the group object type. | |
MbSpaceItem & | Duplicate (MbRegDuplicate *=nullptr) const override |
Create a copy of the object. More... | |
bool | IsSame (const MbSpaceItem &other, double accuracy=LENGTH_EPSILON) const override |
Determine whether an object is equal. More... | |
bool | SetEqual (const MbSpaceItem &) override |
Make objects equal if they are similar. More... | |
bool | IsSimilar (const MbSpaceItem &) const override |
Determine whether an object is similar. More... | |
void | Transform (const MbMatrix3D &, MbRegTransform *=nullptr) override |
Convert the object according to the matrix. More... | |
void | Move (const MbVector3D &, MbRegTransform *=nullptr) override |
Move an object along a vector. More... | |
void | Rotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr) override |
Rotate an object around an axis at a given angle. More... | |
void | Refresh () override |
Translate all the time (mutable) data objects in an inconsistent (initial) state. | |
void | GetProperties (MbProperties &properties) override |
Outstanding properties of the object. More... | |
void | SetProperties (const MbProperties &properties) override |
Change the properties of an object. More... | |
void | GetBasisItems (RPArray< MbSpaceItem > &s) override |
Outstanding reference objects in a container sent. | |
void | GetBasisPoints (MbControlData3D &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData3D &) override |
Change the object by control points. | |
Functions for surface domain description | |
double | GetUMin () const override |
Get the minimum value of u. | |
double | GetVMin () const override |
Get the minimum value of v. | |
double | GetUMax () const override |
Get the maximum value of u. | |
double | GetVMax () const override |
Get the maximum value of v. | |
bool | IsUClosed () const override |
Determine whether a surface is closed in u-parameter direction. More... | |
bool | IsVClosed () const override |
Determine whether a surface is closed in v-parameter direction. More... | |
double | GetUPeriod () const override |
Return period for smoothly closed surface or 0. | |
size_t | GetUCount () const override |
The number of splittings by u-parameter for a check of events. | |
size_t | GetVCount () const override |
The number of splittings by v-parameter for a check of events. | |
bool | GetPoleUMin () const override |
Whether a pole exists on parametric region boundary. | |
bool | GetPoleUMax () const override |
Whether a pole exists on parametric region boundary. | |
bool | GetPoleVMin () const override |
Whether a pole exists on parametric region boundary. | |
bool | GetPoleVMax () const override |
Whether a pole exists on parametric region boundary. | |
bool | IsPole (double u, double v, double paramPrecision=PARAM_PRECISION) const override |
Whether the point is a pole. | |
Functions for working at surface domain | |
Functions PointOn, Derive... of surfaces correct parameters when they are out of bounds of rectangular domain of parameters. | |
void | PointOn (double &u, double &v, MbCartPoint3D &) const override |
Calculate a point on the surface. More... | |
void | DeriveU (double &u, double &v, MbVector3D &) const override |
Calculate first derivative with respect to u. | |
void | DeriveV (double &u, double &v, MbVector3D &) const override |
Calculate first derivative with respect to v. | |
void | DeriveUU (double &u, double &v, MbVector3D &) const override |
Calculate second derivative with respect to u. | |
void | DeriveVV (double &u, double &v, MbVector3D &) const override |
Calculate second derivative with respect to v. | |
void | DeriveUV (double &u, double &v, MbVector3D &) const override |
Calculate second derivative. | |
void | DeriveUUU (double &u, double &v, MbVector3D &) const override |
Calculate third derivative. | |
void | DeriveUUV (double &u, double &v, MbVector3D &) const override |
Calculate third derivative. | |
void | DeriveUVV (double &u, double &v, MbVector3D &) const override |
Calculate third derivative. | |
void | DeriveVVV (double &u, double &v, MbVector3D &) const override |
Calculate third derivative. | |
Functions for working inside and outside the surface's domain | |
functions _PointOn, _Derive... of surfaces don't correct parameters when they are out of bounds of rectangular domain of parameters. | |
void | _PointOn (double u, double v, MbCartPoint3D &) const override |
Calculate a point on the surface. More... | |
void | _DeriveU (double u, double v, MbVector3D &) const override |
Calculate first derivative with respect to u on extended surface. | |
void | _DeriveV (double u, double v, MbVector3D &) const override |
Calculate first derivative with respect to v on extended surface. | |
void | _DeriveUU (double u, double v, MbVector3D &) const override |
Calculate second derivative with respect to u on extended surface. | |
void | _DeriveVV (double u, double v, MbVector3D &) const override |
Calculate second derivative with respect to v on extended surface. | |
void | _DeriveUV (double u, double v, MbVector3D &) const override |
Calculate second derivative on extended surface. | |
void | _DeriveUUU (double u, double v, MbVector3D &) const override |
Calculate third derivative on extended surface. | |
void | _DeriveUUV (double u, double v, MbVector3D &) const override |
Calculate third derivative on extended surface. | |
void | _DeriveUVV (double u, double v, MbVector3D &) const override |
Calculate third derivative on extended surface. | |
void | _DeriveVVV (double u, double v, MbVector3D &) const override |
Calculate third derivative on extended surface. | |
Functions for get of the group of data inside and outside the surface's domain of parameters. | |
void | Explore (double &u, double &v, bool ext, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer, MbVector3D *uuDer, MbVector3D *vvDer, MbVector3D *uvDer, MbVector3D *nor) const override |
Calculate point and derivatives of object for given parameters. More... | |
Functions of moving along the surface | |
double | StepU (double u, double v, double sag) const override |
Calculate parameter step. More... | |
double | StepV (double u, double v, double sag) const override |
Calculate parameter step. More... | |
double | DeviationStepU (double u, double v, double sag) const override |
Calculate parameter step. More... | |
double | DeviationStepV (double u, double v, double sag) const override |
Calculate parameter step. More... | |
Common functions of surface | |
bool | IsPlanar (double accuracy=METRIC_EPSILON) const override |
Whether a surface is planar. | |
void | ChangeCarrier (const MbSpaceItem &item, MbSpaceItem &init) override |
Changing of carrier. More... | |
void | CalculateGabarit (MbCube &) const override |
Calculate bounding box of surface. It is recommended to use GetGabarit. | |
bool | IsSpecialSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const override |
Whether the surfaces are similar to merge. Special case. For internal use only. | |
bool | CreateNormalPlacements (const MbVector3D &axisZ, double angle, SArray< MbPlacement3D > &places, VERSION version=Math::DefaultMathVersion()) const override |
Construct normal placements of constructive planes. | |
bool | CreateTangentPlacements (const MbVector3D &axisZ, SArray< MbPlacement3D > &places) const override |
Construct tangent placements of constructive planes. | |
bool | GetCylinderAxis (MbAxis3D &axis) const override |
Get rotation axis of a surface. | |
MbSplineSurface * | NurbsSurface (double, double, double, double, bool bmatch=false) const override |
Construct a NURBS copy of trimmed surface. More... | |
MbSurface * | Offset (double d, bool same) const override |
Create an offset surface. More... | |
MbCurve3D * | CurveU (double v, MbRect1D *pRgn, bool bApprox=true) const override |
Construct spatial copy of the line v = const. More... | |
MbCurve3D * | CurveV (double u, MbRect1D *pRgn, bool bApprox=true) const override |
Construct spatial copy of the line u = const. More... | |
size_t | GetUMeshCount () const override |
The the number of splittings in u-direction. | |
size_t | GetVMeshCount () const override |
The the number of splittings in v-direction. | |
void | GetTesselation (const MbStepData &stepData, double u1, double u2, double v1, double v2, SArray< double > &uu, SArray< double > &vv) const override |
Determine a splitting of parametric region of a surface by verticals and horizontals. More... | |
bool | NearPointProjection (const MbCartPoint3D &pnt, double &u, double &v, bool ext, MbRect2D *uvRange=nullptr) const override |
Find the projection of a point onto the surface. More... | |
void | DirectPointProjection (const MbCartPoint3D &pnt, const MbVector3D &vect, SArray< MbCartPoint > &uv, bool ext, MbRect2D *uvRange=nullptr) const override |
Find all a point projection onto the surface along a vector in either of two directions. More... | |
bool | IsLineU () const override |
Check that all derivatives of surface with respect to u which have more than first order are equal to null. | |
bool | IsLineV () const override |
Check that all derivatives of surface with respect to v which have more than first order are equal to null. | |
void | CheckSurfParams (double &u, double &v) const override |
Check parameters. Analogue of the global function _CheckParams, optimized for caches usage. More... | |
ptrdiff_t | CurvesCount () const |
Get count of curves which the surface is constructed by. | |
const MbCurve3D * | GetCurve (ptrdiff_t ind) const |
Get curve by an index. More... | |
MbCurve3D * | SetCurve (ptrdiff_t ind) |
Get curve for editing by an index. More... | |
double | GetParam (ptrdiff_t ind) const |
Get parameter by an index. More... | |
void | GetParams (SArray< double > ¶ms) const |
Fill an array by parameters. More... | |
void | GetLabels (SArray< ptrdiff_t > &labels) const |
Fill array of attributes of similar curves. More... | |
const MbVector3D & | GetDerive1 () const |
The direction of derivative at the beginning of the open surface. If it isn't set, then its length is zero. More... | |
const MbVector3D & | GetDerive2 () const |
bool | IsEqualLabels () const |
Determine whether there are similar curves. | |
bool | IsEqualLabels (ptrdiff_t ind) const |
Determine whether there are curves similar to curve with 'ind' index. More... | |
bool | IsPossibleCreateThin (double h, double uLimBeg, double uLimEnd, double vLimBeg, double vLimEnd) const |
Determine whether it is possible to create an offset surface. More... | |
bool | AgreeLabels (MbLoftedSurface &surf) |
Match arrays of attributes of similarity of curves between adjacent surfaces. More... | |
bool | IsSetNormal (bool atStart) |
Is the normal set at the end. More... | |
Public Member Functions inherited from MbSurface | |
virtual | ~MbSurface () |
Destructor. | |
virtual void | Accept (Visitor &visitor) |
Implementation of a function initializing a visit of an object. | |
MbeSpaceType | Type () const override |
Get the group object type. | |
MbeSpaceType | Family () const override |
Get family of objects. | |
double | DistanceToPoint (const MbCartPoint3D &) const override |
Determine the distance to the point. More... | |
void | AddYourGabaritTo (MbCube &c) const override |
Expand sent bounding box (a.k.a. gabarit), so that it included the object. More... | |
void | Refresh () override |
Translate all the time (mutable) data objects in an inconsistent (initial) state. | |
virtual void | PrepareIntegralData (const bool forced) const |
Calculate temporary (mutable) data of an object. More... | |
void | CalculateMesh (const MbStepData &stepData, const MbFormNote ¬e, MbMesh &mesh) const override |
Build polygonal copy mesh. More... | |
MbProperty & | CreateProperty (MbePrompt name) const override |
Create your own property with the name. | |
void | GetBasisPoints (MbControlData3D &) const override |
Get control points of object. | |
void | SetBasisPoints (const MbControlData3D &) override |
Change the object by control points. | |
size_t | size () const |
Number of objects if object is interpreted as vector of objects. | |
const MbSurface * | operator[] (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 | GetVPeriod () const |
Return period for smoothly closed surface or 0. | |
virtual double | GetPeriod (ptrdiff_t i) const |
Return period. More... | |
virtual size_t | Periodicity () const |
Determine periodicity. More... | |
bool | IsPole (const MbCartPoint &uv, double paramPrecision=PARAM_PRECISION) 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 | 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. | |
virtual void | Explore (double &u, double &v, MbCartPoint3D &pnt, MbVector3D &uDer, MbVector3D &vDer) const |
Calculate point and first derivatives with respect to u and with respect to v. More... | |
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 | _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. | |
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). | |
virtual void | _NormalDD (double u, double v, double du, double dv, MbVector3D &der) const |
Calculate second derivative of normal vector at the point with the given parameters u and v along the line with the given direction (du,dv). | |
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... | |
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... | |
double | SurfaceStep (const double &u, const double &v, bool alongU, const MbStepData &stepData) const |
Calculate parameter step. More... | |
virtual const MbSurface & | GetSurface () const |
Get itself (it is overloaded only in CurveBoundedSurface). | |
virtual const MbSurface & | GetBasisSurface () const |
Get the base surface if exists or itself. | |
virtual MbSurface & | SetSurface () |
Get itself (it is overloaded only in CurveBoundedSurface). | |
virtual MbSurface & | SetBasisSurface () |
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... | |
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... | |
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... | |
bool | MainCurvatures (double u, double v, double &c1, double &c2, double &du, double &dv) 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 double | GetRadius () const |
Get the physical radius of the object or null if it impossible. More... | |
virtual double | GetFilletRadius (const MbCartPoint3D &p, double accuracy=METRIC_REGION) const |
Get fillet radius if the surface is a fillet surface with the set accuracy. More... | |
virtual MbeParamDir | GetFilletDirection (double accuracy=METRIC_REGION) const |
Direction of fillet surface with accuracy. More... | |
virtual bool | GetCentre (MbCartPoint3D &c) const |
Give the center of sphere surface. | |
virtual bool | GetCenterLines (std::vector< MbCurve3D * > &clCurves) const |
Get center lines of a surface. | |
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... | |
MbSplineSurface * | NurbsSurface (bool bmatch=false) const |
Construct a NURBS copy of a surface. More... | |
virtual MbSurface * | NurbsSurface (const MbNurbsParameters &uParam, const MbNurbsParameters &vParam) 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 > ¶ms) 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 MbCurve3D * | CurveUV (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 | 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 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=nullptr, 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 | CurveTangentNewton (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 tangency between a surface and a curve. For internal use only. | |
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 | 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 | 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 | 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 | IsSimilarToSurface (const MbSurface &surf, VERSION version, double precision=METRIC_PRECISION) const |
Define whether the surfaces are similar for merge. More... | |
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 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 ThreeStates | Salient () const |
Determine whether the surface is convex. 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... | |
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... | |
void | CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const override |
Calculate bounding box in the local coordinate system. | |
const MbCube & | GetGabarit () const |
Calculate bounding box of surface. | |
const MbCube & | Cube () 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=nullptr) |
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 MbContour & | MakeContour (bool sense) const |
Return the bounding two-dimensional contour. More... | |
virtual MbCurve & | MakeSegment (size_t i, bool sense) const |
Return a segment of the bounding two-dimensional contour. More... | |
MbCurve & | MakeCurve (size_t number1, size_t number2) const |
Return a segment of the bounding two-dimensional contour. More... | |
virtual bool | SetLimit (double u1, double v1, double u2, double v2) |
Set surface limits. For internal use only. | |
bool | SetLimit (const MbRect &) |
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. | |
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. | |
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. | |
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. | |
virtual void | GetParamsToUnit (double u, double v, double &uParam, double &vParam) const |
Get increment of parameters, 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 | IsRectangular () const |
Determine whether derivatives with respect to u and v are orthogonal. | |
virtual bool | IsShift (const MbSpaceItem &obj, MbVector3D &dir, bool &isSame, double accuracy=LENGTH_EPSILON) const |
Determine whether the object is a translation. More... | |
bool | GetPlacement (MbPlacement3D *place, bool exact=false) const |
Get a local coordinate system of planar surface (or only a possibility of getting it). | |
bool | GetPlanePlacement (MbPlacement3D &place) const |
Get a local coordinate system if a surface is a plane. | |
bool | GetControlPlacement (MbPlacement3D &place, bool sameSense=true) const |
Construct a local coordinate system of a surface with origin at the middle point of base surface parametric limits. More... | |
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... | |
MbeRefType | RefType () const override |
Get a registration type (for copying, duplication). | |
bool | IsFamilyRegistrable () const override |
Whether the object belongs to a registrable family. | |
void | CalculateWire (const MbStepData &stepData, MbMesh &mesh) const |
void | CalculateWire (double sag, MbMesh &mesh) const |
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 | |
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. | |
CommonRecursiveMutex * | GetLock () const |
Get a pointer to the mutex object. Return nullptr if no parallelism. For use in ScopedLock. | |
Protected Member Functions | |
MbLoftedSurface (const RPArray< MbCurve3D > &initCurves, bool same, VERSION version=Math::DefaultMathVersion()) | |
Constructor of surface. More... | |
MbLoftedSurface (const SArray< double > &initParams, const RPArray< MbCurve3D > &initCurves, bool same, VERSION version=Math::DefaultMathVersion()) | |
Constructor of surface. More... | |
MbLoftedSurface (const MbLoftedSurface &, MbRegDuplicate *reg) | |
Copy constructor. | |
void | LocalCoordinate (double &v, ptrdiff_t &j1, ptrdiff_t &j2, double &y1, double &y2, double &t1, double &t2) const |
Determination of local coordinates of a surface region. More... | |
void | CalculateCurve (ptrdiff_t i, double u, MbVector3D &point, bool ext, size_t numb) const |
Determination of the array of curve vectors. More... | |
void | CalculateSurface (double &u, ptrdiff_t j1, ptrdiff_t j2, double t1, double t2, bool ext, size_t numb, MbVector3D &point1, MbVector3D &point2, MbVector3D &vector1, MbVector3D &vector2, bool correctVectors=true) const |
Determination of array of vectors of u parameter for point on surface with coordinates (u, v). More... | |
bool | CheckPoles (MbLoftedSurfaceAuxiliaryData *) const |
Check poles on curves. More... | |
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 Member Functions inherited from MbRefItem | |
MbRefItem () | |
Constructor without parameters. | |
Protected Attributes | |
RPArray< MbCurve3D > | uCurves |
Set of curves of family. | |
SArray< double > | vParams |
Set of parameters v for curves. | |
SArray< ptrdiff_t > | vLabels |
Set of attributes of similar curves. | |
double | umin |
Minimal value of parameter u. | |
double | vmin |
Minimal value of parameter v. | |
double | umax |
Maximal value of parameter u. | |
double | vmax |
Maximal value of parameter v. | |
bool | uclosed |
Attribute of closedness by parameter u. | |
bool | vclosed |
Attribute of closedness by parameter v. | |
MbLoftedBorder | border1 |
The adjacency conditions of the surface to the starting curve of family. | |
MbLoftedBorder | border2 |
The adjacency conditions of the surface to the ending curve of family. | |
VERSION | surfaceVersion |
Version of coefficient calculation of surface equation. | |
Protected Attributes inherited from MbSurface | |
MbCube | cube |
Bounding box of surface. More... | |
Lofted surface passing through given family of curves.
The surface passing through given family of curves is constructed similar to MbHermit3D Hermite spline passing through given family of points. First parameter of surface is proportional to parameters of curves of family. Along the second parameter the surface changes under the law of MbHermit3D Hermite spline, which points are points of curves of family. Derivatives by second parameter at points of curves are calculated as derivatives of parabola constructed by three points and values of parameters at this points. On each region between two neighboring curves of family the surface is described by the cubic polynomial with given points and derivatives at the edges. If the first or last curves of the family are represented by points, then it is possible to define the derivative at the edges with the orthogonal direction relative to the normal of the XoY plane in the local coordinate system of the initial or final edges. The value of the derivative depends on the distance between the point curve and the one closest to it. In order to change the value of the derivative, non-negative factor are introduced by default equal to 1.0. Surface passes through curves of family for parameter values from vParams set.
MbLoftedSurface::MbLoftedSurface | ( | const RPArray< MbCurve3D > & | initCurves, |
bool | vc, | ||
const MbVector3D & | v1, | ||
const MbVector3D & | v2, | ||
bool | same, | ||
VERSION | version = Math::DefaultMathVersion() |
||
) |
Constructor of surface.
Constructor of surface by array of profile curves, guide vectors and closedness by v.
[in] | initCurves | - Set of driving curves. |
[in] | vc | - Surface closedness by v. |
[in] | v1 | - Guide vector. |
[in] | v2 | - Guide vector. |
[in] | same | - Determines whether to copy profile curves: true - use obtained curves without copying, false - use copies. |
[in] | version | - Version, last by default. |
MbLoftedSurface::MbLoftedSurface | ( | const RPArray< MbCurve3D > & | initCurves, |
const SArray< double > & | initParams, | ||
bool | vc, | ||
const MbVector3D & | v1, | ||
const MbVector3D & | v2, | ||
bool | setNormal1, | ||
bool | setNormal2, | ||
double | derFactor1, | ||
double | derFactor2, | ||
const MbVector3D & | directSurf1, | ||
const MbVector3D & | directSurf2, | ||
bool | same, | ||
VERSION | version = Math::DefaultMathVersion() |
||
) |
Constructor of surface.
Constructor of surface by array of profile curves, array of parameters, guide vectors and closedness by v.
[in] | initCurves | - Set of driving curves. |
[in] | initParams | - Set of parameters corresponding to driving curves. |
[in] | vc | - Surface closedness by v. |
[in] | v1 | - Guide vector. |
[in] | v2 | - Guide vector. |
[in] | setNormal1 | - Set the surface normal at the beginning orthogonal to the XoY plane in the local coordinate system of the first family curve, if it is point curve. |
[in] | setNormal2 | - Set the surface normal at the end orthogonal to the XoY plane in the local coordinate system of the last family curve, if it is point curve. |
[in] | derFactor1 | - The derivative length factor at the beginning, if the first family curve is point curve. The default is 1.0. |
[in] | derFactor2 | - The derivative length factor at the end, if the last family curve is point curve. The default is 1.0. |
[in] | directSurf1 | - Direction axis of the surface progress in the initial section when setting the normal. By default, it connects the centers of the end curve and the nearest curve. |
[in] | directSurf2 | - Direction axis of the surface progress in the final section when setting the normal. By default, it connects the centers of the end curve and the nearest curve. |
[in] | same | - Determines whether to copy profile curves: true - use obtained curves without copying, false - use copies. |
[in] | version | - Version, last by default. |
|
protected |
Constructor of surface.
Constructor of surface by family of profile curves.
[in] | initCurves | - Set of driving curves. |
[in] | same | - Determines whether to copy profile curves: true - use obtained curves without copying, false - use copies. |
[in] | version | - Version, last by default. |
|
protected |
Constructor of surface.
Constructor of surface by array of profile curves and array of parameters.
[in] | initParams | - Set of parameters corresponding to driving curves. |
[in] | initCurves | - Set of driving curves. |
[in] | same | - Determines whether to copy profile curves: true - use obtained curves without copying, false - use copies. |
[in] | version | - Version, last by default. |
|
overridevirtual |
Create a copy of the object.
Create a copy of an object using the registrator. Registrator is used to prevent multiple copy of the object. If the object contains references to the other objects, then nested objects are copied as well. It is allowed not to pass registrator into the function. Then new copy of object will be created. While copying of single object or set of not connected objects, it is allowed not to use registrator. Registrator should be used if it is required to copy several connected objects. It is possible, that objects connection is based on the references to common objects. Then, while copying without using of registrator, it is possible to obtain set of copies, that contain references to the different copies of the same nested object, that leads to loss of connection between copies.
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Determine whether an object is equal.
Still considered objects of the same type, all data is the same (equal).
[in] | item | - The object to compare. |
[in] | accuracy | - The accuracy to compare. |
Implements MbSpaceItem.
|
overridevirtual |
Make objects equal if they are similar.
You can still make only a similar objects.
[in] | item | - The object to initialize. |
Implements MbSpaceItem.
|
overridevirtual |
Determine whether an object is similar.
Such are considered the same objects whose data are similar.
[in] | item | - The object to compare. |
Reimplemented from MbSpaceItem.
|
overridevirtual |
Convert the object according to the matrix.
Convert the original object according to the matrix using the registrator. If object contains references to the other geometric objects, then nested objects are transformed according to the matrix. Registrator is needed to prevent multiple object copying. It is allowed to use function without registrator, if it is needed to transform single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be transformed.
[in] | matr | - Transformation matrix. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Move an object along a vector.
Move an object along a geometric vector using the registrator. If object contains references to the other geometric objects then the move operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be moved.
[in] | to | - Shift vector. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Rotate an object around an axis at a given angle.
Rotate an object around an axis at a given angle with the registrator. If object contains references to the other geometric objects then the rotation operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be rotated.
[in] | axis | - The axis of rotation. |
[in] | angle | - Rotation. |
[in] | iReg | - Registrator. |
Implements MbSpaceItem.
|
overridevirtual |
Outstanding properties of the object.
Issue internal data (properties) of the object for viewing and modification.
[in] | properties | - Container for the internal data of the object. |
Implements MbSpaceItem.
|
overridevirtual |
Change the properties of an object.
Changing the internal data (properties) of the object you are copying the corresponding values from the sent object.
[in] | properties | - Container for the internal data of the object. |
Implements MbSpaceItem.
|
overridevirtual |
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 MbSurface.
|
overridevirtual |
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 MbSurface.
|
overridevirtual |
Calculate a point on the surface.
Correct parameters when getting out of rectangular domain bounds and Calculate a point on the surface.
[in] | u | - First surface parameter. |
[in] | v | - Second surface parameter. |
[out] | p | - A point on the surface. |
Implements MbSurface.
|
overridevirtual |
Calculate a point on the surface.
Calculate a point on the surface including the outside area determination 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.
|
overridevirtual |
Calculate point and derivatives of object for given parameters.
Values of point and derivatives are calculated on parameters area and on extended surface.
[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 nullptr. |
[out] | vvDer | - Second derivative with respect to v, if not nullptr. |
[out] | uvDer | - Second derivative with respect to u and v, if not nullptr. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
|
overridevirtual |
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.
[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.
|
overridevirtual |
Create an offset surface.
[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.
|
overridevirtual |
Construct spatial copy of the line v = const.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
Construct spatial copy of the line u = const.
[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. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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.
|
overridevirtual |
Find the projection of a point onto the surface.
Find the nearest point projection to the surface or its extension by the given initial approximation. 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. The Newton method is used.
[in] | pnt | - A given point. |
[in,out] | u | - Input - initial approximation, output - parameter of a surface, corresponding to the nearest projection. |
[in,out] | v | - Input - initial approximation, output - parameter of a surface, corresponding to the nearest projection. |
[in] | ext | - A flag defining whether to seek projection on the extension of the surface. |
[in] | uvRange | - A range of parameters changing in which the solution should be found. |
Reimplemented from MbSurface.
|
overridevirtual |
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.
[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.
|
overridevirtual |
Check parameters. Analogue of the global function _CheckParams, optimized for caches usage.
Check parameters and move them inside domain if parameter is out of pole.
[in] | surface | - Surface. |
[in] | u | - First parameter. |
[in] | v | - Second parameter. |
Reimplemented from MbSurface.
|
inline |
Get curve by an index.
Get curve by an index.
[in] | ind | - Index of curve in uCurves array of curves. |
|
inline |
Get curve for editing by an index.
Get curve for editing by an index.
[in] | ind | - Index of curve in uCurves array of curves. |
|
inline |
Get parameter by an index.
Get parameter by an index.
[in] | ind | - Index of parameter in vParams array of parameters. |
Fill an array by parameters.
Fill an array by parameters.
[in,out] | params | - A set to fill by parameters. |
Fill array of attributes of similar curves.
Fill array of attributes of similar curves.
[in,out] | labels | - A set to fill. |
|
inline |
The direction of derivative at the beginning of the open surface. If it isn't set, then its length is zero.
The direction of derivative at the end of the open surface. If it isn't set, then its length is zero.
bool MbLoftedSurface::IsEqualLabels | ( | ptrdiff_t | ind | ) | const |
Determine whether there are curves similar to curve with 'ind' index.
Determine whether there are curves similar to curve with 'ind' index.
[in] | ind | - An index of curve for comparison. |
bool MbLoftedSurface::IsPossibleCreateThin | ( | double | h, |
double | uLimBeg, | ||
double | uLimEnd, | ||
double | vLimBeg, | ||
double | vLimEnd | ||
) | const |
Determine whether it is possible to create an offset surface.
Determine whether it is possible to create an offset surface.
[in] | h | - The offset distance. |
[in] | uLimBeg | - Lower bound of region by u which offset surface is necessary to construct to. |
[in] | uLimEnd | - Upper bound of region by u which offset surface is necessary to construct to. |
[in] | vLimBeg | - Lower bound of region by v which offset surface is necessary to construct to. |
[in] | vLimEnd | - Upper bound of region by v which offset surface is necessary to construct to. |
bool MbLoftedSurface::AgreeLabels | ( | MbLoftedSurface & | surf | ) |
Match arrays of attributes of similarity of curves between adjacent surfaces.
Match arrays of attributes of similarity of curves between adjacent surfaces.
[in] | surf | - Adjacent surface. |
|
inline |
Is the normal set at the end.
Is the normal set at the end.
[in] | atStart | - Check at the beginning otherwise at the end. |
|
inlineprotected |
Determination of local coordinates of a surface region.
Determination of local coordinates of a surface region.
[in] | v | - V coordinate on the surface. |
[in,out] | j1 | - Index of nearest curve with parameter less than v. |
[in,out] | j2 | - Index of nearest curve with parameter greater than v. |
[in,out] | y1 | - Parametric distance from point with v coordinate to j1 curve provided that distance between j1 and j2 curves is equal to 1. |
[in,out] | y2 | - Parametric distance from point with v coordinate to j2 curve provided that distance between j1 and j2 curves is equal to 1. |
[in,out] | t1 | - Value of parameter for j1 curve. |
[in,out] | t2 | - Value of parameter for j2 curve. |
|
protected |
Determination of the array of curve vectors.
Determination of the array of curve vectors.
[in] | i | - Index of curve. |
[in] | u | - U coordinate on the surface. |
[in] | der | - Reference to array of vectors to store calculated point and derivatives. |
[in] | ext | - Whether it is possible to extend curve out of its parametric domain bounds. |
|
protected |
Determination of array of vectors of u parameter for point on surface with coordinates (u, v).
Determination of array of vectors of u parameter for point on surface with coordinates (u, v).
[in] | u | - U coordinate on the surface. |
[in] | j1 | - Index of nearest curve with parameter less than v. |
[in] | j2 | - Index of nearest curve with parameter greater than v. |
[in] | t1 | - Value of parameter for j1 curve. |
[in] | t2 | - Value of parameter for j2 curve. |
[in] | ext | - Whether it is possible to extend surface out of its parametric domain bounds. |
|
protected |
Check poles on curves.
Determines whether the pole at domain boundary by curve length determining boundary.
Result of calculations can be obtained with help of GetPoleUMin, GetPoleUMax, GetPoleVMin, GetPoleVMax functions.