File indexing completed on 2026-06-06 08:35:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef _BRepMesh_DefaultRangeSplitter_HeaderFile
0017 #define _BRepMesh_DefaultRangeSplitter_HeaderFile
0018
0019 #include <IMeshData_Face.hxx>
0020
0021 struct IMeshTools_Parameters;
0022
0023
0024
0025 class BRepMesh_DefaultRangeSplitter
0026 {
0027 public:
0028
0029 BRepMesh_DefaultRangeSplitter()
0030 : myIsValid(Standard_True)
0031 {
0032 }
0033
0034
0035 virtual ~BRepMesh_DefaultRangeSplitter() {}
0036
0037
0038 Standard_EXPORT virtual void Reset(const IMeshData::IFaceHandle& theDFace,
0039 const IMeshTools_Parameters& theParameters);
0040
0041
0042 Standard_EXPORT virtual void AddPoint(const gp_Pnt2d& thePoint);
0043
0044
0045 Standard_EXPORT virtual void AdjustRange();
0046
0047
0048 Standard_EXPORT virtual Standard_Boolean IsValid();
0049
0050
0051
0052
0053
0054
0055
0056 Standard_EXPORT gp_Pnt2d Scale(const gp_Pnt2d& thePoint,
0057 const Standard_Boolean isToFaceBasis) const;
0058
0059
0060
0061 Standard_EXPORT virtual Handle(IMeshData::ListOfPnt2d) GenerateSurfaceNodes(
0062 const IMeshTools_Parameters& theParameters) const;
0063
0064
0065
0066 gp_Pnt Point(const gp_Pnt2d& thePoint2d) const
0067 {
0068 return GetSurface()->Value(thePoint2d.X(), thePoint2d.Y());
0069 }
0070
0071 protected:
0072
0073 Standard_EXPORT virtual void computeTolerance(const Standard_Real theLenU,
0074 const Standard_Real theLenV);
0075
0076
0077 Standard_EXPORT virtual void computeDelta(const Standard_Real theLengthU,
0078 const Standard_Real theLengthV);
0079
0080 public:
0081
0082 const IMeshData::IFaceHandle& GetDFace() const { return myDFace; }
0083
0084
0085 const Handle(BRepAdaptor_Surface)& GetSurface() const { return myDFace->GetSurface(); }
0086
0087
0088 const std::pair<Standard_Real, Standard_Real>& GetRangeU() const { return myRangeU; }
0089
0090
0091 const std::pair<Standard_Real, Standard_Real>& GetRangeV() const { return myRangeV; }
0092
0093
0094 const std::pair<Standard_Real, Standard_Real>& GetDelta() const { return myDelta; }
0095
0096 const std::pair<Standard_Real, Standard_Real>& GetToleranceUV() const { return myTolerance; }
0097
0098 private:
0099
0100 Standard_Real computeLengthU();
0101
0102
0103 Standard_Real computeLengthV();
0104
0105
0106 void updateRange(const Standard_Real theGeomFirst,
0107 const Standard_Real theGeomLast,
0108 const Standard_Boolean isPeriodic,
0109 Standard_Real& theDiscreteFirst,
0110 Standard_Real& theDiscreteLast);
0111
0112 protected:
0113 IMeshData::IFaceHandle myDFace;
0114 std::pair<Standard_Real, Standard_Real> myRangeU;
0115 std::pair<Standard_Real, Standard_Real> myRangeV;
0116 std::pair<Standard_Real, Standard_Real> myDelta;
0117 std::pair<Standard_Real, Standard_Real> myTolerance;
0118 Standard_Boolean myIsValid;
0119 };
0120
0121 #endif