File indexing completed on 2025-01-18 10:03:38
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef _GeomEvaluator_OffsetSurface_HeaderFile
0016 #define _GeomEvaluator_OffsetSurface_HeaderFile
0017
0018 #include <GeomAdaptor_Surface.hxx>
0019 #include <GeomEvaluator_Surface.hxx>
0020 #include <Geom_OsculatingSurface.hxx>
0021 #include <Geom_Surface.hxx>
0022
0023
0024 class GeomEvaluator_OffsetSurface : public GeomEvaluator_Surface
0025 {
0026 public:
0027
0028 Standard_EXPORT GeomEvaluator_OffsetSurface(
0029 const Handle(Geom_Surface)& theBase,
0030 const Standard_Real theOffset,
0031 const Handle(Geom_OsculatingSurface)& theOscSurf = Handle(Geom_OsculatingSurface)());
0032
0033 Standard_EXPORT GeomEvaluator_OffsetSurface(
0034 const Handle(GeomAdaptor_Surface)& theBase,
0035 const Standard_Real theOffset,
0036 const Handle(Geom_OsculatingSurface)& theOscSurf = Handle(Geom_OsculatingSurface)());
0037
0038
0039 void SetOffsetValue(Standard_Real theOffset)
0040 { myOffset = theOffset; }
0041
0042
0043 Standard_EXPORT void D0(const Standard_Real theU, const Standard_Real theV,
0044 gp_Pnt& theValue) const Standard_OVERRIDE;
0045
0046 Standard_EXPORT void D1(const Standard_Real theU, const Standard_Real theV,
0047 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V) const Standard_OVERRIDE;
0048
0049 Standard_EXPORT void D2(const Standard_Real theU, const Standard_Real theV,
0050 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0051 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV) const Standard_OVERRIDE;
0052
0053 Standard_EXPORT void D3(const Standard_Real theU, const Standard_Real theV,
0054 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0055 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV,
0056 gp_Vec& theD3U, gp_Vec& theD3V,
0057 gp_Vec& theD3UUV, gp_Vec& theD3UVV) const Standard_OVERRIDE;
0058
0059
0060
0061 Standard_EXPORT gp_Vec DN(const Standard_Real theU,
0062 const Standard_Real theV,
0063 const Standard_Integer theDerU,
0064 const Standard_Integer theDerV) const Standard_OVERRIDE;
0065
0066 Standard_EXPORT Handle(GeomEvaluator_Surface) ShallowCopy() const Standard_OVERRIDE;
0067
0068 DEFINE_STANDARD_RTTIEXT(GeomEvaluator_OffsetSurface,GeomEvaluator_Surface)
0069
0070 private:
0071
0072 void Bounds(Standard_Real& theUMin, Standard_Real& theUMax,
0073 Standard_Real& theVMin, Standard_Real& theVMax) const;
0074
0075
0076 void CalculateD0(const Standard_Real theU, const Standard_Real theV,
0077 gp_Pnt& theValue,
0078 const gp_Vec& theD1U, const gp_Vec& theD1V) const;
0079
0080 void CalculateD1(const Standard_Real theU, const Standard_Real theV,
0081 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0082 const gp_Vec& theD2U, const gp_Vec& theD2V, const gp_Vec& theD2UV) const;
0083
0084 void CalculateD2(const Standard_Real theU, const Standard_Real theV,
0085 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0086 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV,
0087 const gp_Vec& theD3U, const gp_Vec& theD3V,
0088 const gp_Vec& theD3UUV, const gp_Vec& theD3UVV) const;
0089
0090 void CalculateD3(const Standard_Real theU, const Standard_Real theV,
0091 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0092 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV,
0093 gp_Vec& theD3U, gp_Vec& theD3V, gp_Vec& theD3UUV, gp_Vec& theD3UVV) const;
0094
0095 gp_Vec CalculateDN(const Standard_Real theU, const Standard_Real theV,
0096 const Standard_Integer theNu, const Standard_Integer theNv,
0097 const gp_Vec& theD1U, const gp_Vec& theD1V) const;
0098
0099
0100 void BaseD0(const Standard_Real theU, const Standard_Real theV, gp_Pnt& theValue) const;
0101
0102 void BaseD1(const Standard_Real theU, const Standard_Real theV,
0103 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V) const;
0104
0105 void BaseD2(const Standard_Real theU, const Standard_Real theV,
0106 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0107 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV) const;
0108
0109 void BaseD3(const Standard_Real theU, const Standard_Real theV,
0110 gp_Pnt& theValue, gp_Vec& theD1U, gp_Vec& theD1V,
0111 gp_Vec& theD2U, gp_Vec& theD2V, gp_Vec& theD2UV,
0112 gp_Vec& theD3U, gp_Vec& theD3V, gp_Vec& theD3UUV, gp_Vec& theD3UVV) const;
0113
0114
0115
0116 Standard_Boolean ReplaceDerivative(const Standard_Real theU, const Standard_Real theV,
0117 gp_Vec& theDU, gp_Vec& theDV,
0118 const Standard_Real theSquareTol) const;
0119
0120 private:
0121 Handle(Geom_Surface) myBaseSurf;
0122 Handle(GeomAdaptor_Surface) myBaseAdaptor;
0123
0124 Standard_Real myOffset;
0125 Handle(Geom_OsculatingSurface) myOscSurf;
0126 };
0127
0128 DEFINE_STANDARD_HANDLE(GeomEvaluator_OffsetSurface, GeomEvaluator_Surface)
0129
0130
0131 #endif