0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / BRepGProp / BRepGProp_Vinert.hxx
1 // Created on: 1991-04-12
2 // Created by: Michel CHAUVAT
3 // Copyright (c) 1991-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _BRepGProp_Vinert_HeaderFile
18 #define _BRepGProp_Vinert_HeaderFile
19
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
23
24 #include <Standard_Real.hxx>
25 #include <GProp_GProps.hxx>
26 class BRepGProp_Face;
27 class gp_Pnt;
28 class gp_Pln;
29 class BRepGProp_Domain;
30
31
32
33 //! Computes the global properties of a geometric solid
34 //! (3D closed region of space) delimited with :
35 //! . a surface
36 //! . a point and a surface
37 //! . a plane and a surface
38 //!
39 //! The surface can be :
40 //! . a surface limited with its parametric values U-V,
41 //! . a surface limited in U-V space with its curves of restriction,
42 //!
43 //! The surface 's requirements to evaluate the global properties
44 //! are defined in the template SurfaceTool from package GProp.
45 class BRepGProp_Vinert  : public GProp_GProps
46 {
47 public:
48
49   DEFINE_STANDARD_ALLOC
50
51   
52   Standard_EXPORT BRepGProp_Vinert();
53   
54
55   //! Computes the global properties of a region of 3D space
56   //! delimited with the surface <S> and the point VLocation. S can be closed
57   //! The method is quick and its precision is enough for many cases of analytical
58   //! surfaces.
59   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
60   //! is used. Numbers of points depend on types of surfaces and  curves.
61   //! Errror of the computation is not calculated.
62   Standard_EXPORT BRepGProp_Vinert(const BRepGProp_Face& S, const gp_Pnt& VLocation);
63   
64
65   //! Computes the global properties of a region of 3D space
66   //! delimited with the surface <S> and the point VLocation. S can be closed
67   //! Adaptive 2D Gauss integration is used.
68   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
69   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
70   //! for two successive steps of adaptive integration.
71   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, const gp_Pnt& VLocation, const Standard_Real Eps);
72   
73
74   //! Computes the global properties of the region of 3D space
75   //! delimited with the surface <S> and the point VLocation.
76   //! The method is quick and its precision is enough for many cases of analytical
77   //! surfaces.
78   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
79   //! is used. Numbers of points depend on types of surfaces and  curves.
80   //! Error of the computation is not calculated.
81   Standard_EXPORT BRepGProp_Vinert(const BRepGProp_Face& S, const gp_Pnt& O, const gp_Pnt& VLocation);
82   
83
84   //! Computes the global properties of the region of 3D space
85   //! delimited with the surface <S> and the point VLocation.
86   //! Adaptive 2D Gauss integration is used.
87   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
88   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
89   //! for two successive steps of adaptive integration.
90   //! WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
91   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, const gp_Pnt& O, const gp_Pnt& VLocation, const Standard_Real Eps);
92   
93
94   //! Computes the global properties of the region of 3D space
95   //! delimited with the surface <S> and the plane Pln.
96   //! The method is quick and its precision is enough for many cases of analytical
97   //! surfaces.
98   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
99   //! is used. Numbers of points depend on types of surfaces and  curves.
100   //! Error of the computation is not calculated.
101   Standard_EXPORT BRepGProp_Vinert(const BRepGProp_Face& S, const gp_Pln& Pl, const gp_Pnt& VLocation);
102   
103
104   //! Computes the global properties of the region of 3D space
105   //! delimited with the surface <S> and the plane Pln.
106   //! Adaptive 2D Gauss integration is used.
107   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
108   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
109   //! for two successive steps of adaptive integration.
110   //! WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
111   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, const gp_Pln& Pl, const gp_Pnt& VLocation, const Standard_Real Eps);
112   
113
114   //! Computes the global properties of a region of 3D space
115   //! delimited with the surface <S> and the point VLocation. S can be closed
116   //! The method is quick and its precision is enough for many cases of analytical
117   //! surfaces.
118   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
119   //! is used. Numbers of points depend on types of surfaces and  curves.
120   //! Errror of the computation is not calculated.
121   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& VLocation);
122   
123
124   //! Computes the global properties of a region of 3D space
125   //! delimited with the surface <S> and the point VLocation. S can be closed
126   //! Adaptive 2D Gauss integration is used.
127   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
128   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
129   //! for two successive steps of adaptive integration.
130   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& VLocation, const Standard_Real Eps);
131   
132
133   //! Computes the global properties of the region of 3D space
134   //! delimited with the surface <S> and the point VLocation.
135   //! The method is quick and its precision is enough for many cases of analytical
136   //! surfaces.
137   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
138   //! is used. Numbers of points depend on types of surfaces and  curves.
139   //! Error of the computation is not calculated.
140   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& O, const gp_Pnt& VLocation);
141   
142
143   //! Computes the global properties of the region of 3D space
144   //! delimited with the surface <S> and the point VLocation.
145   //! Adaptive 2D Gauss integration is used.
146   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
147   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
148   //! for two successive steps of adaptive integration.
149   //! WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
150   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& O, const gp_Pnt& VLocation, const Standard_Real Eps);
151   
152
153   //! Computes the global properties of the region of 3D space
154   //! delimited with the surface <S> and the plane Pln.
155   //! The method is quick and its precision is enough for many cases of analytical
156   //! surfaces.
157   //! Non-adaptive 2D Gauss integration with predefined numbers of Gauss points
158   //! is used. Numbers of points depend on types of surfaces and  curves.
159   //! Error of the computation is not calculated.
160   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pln& Pl, const gp_Pnt& VLocation);
161   
162
163   //! Computes the global properties of the region of 3D space
164   //! delimited with the surface <S> and the plane Pln.
165   //! Adaptive 2D Gauss integration is used.
166   //! Parameter Eps sets maximal relative error of computed mass (volume) for face.
167   //! Error is calculated as Abs((M(i+1)-M(i))/M(i+1)), M(i+1) and M(i) are values
168   //! for two successive steps of adaptive integration.
169   //! WARNING: if Eps > 0.001 algorithm performs non-adaptive integration.
170   Standard_EXPORT BRepGProp_Vinert(BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pln& Pl, const gp_Pnt& VLocation, const Standard_Real Eps);
171   
172   Standard_EXPORT void SetLocation (const gp_Pnt& VLocation);
173   
174   Standard_EXPORT void Perform (const BRepGProp_Face& S);
175   
176   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, const Standard_Real Eps);
177   
178   Standard_EXPORT void Perform (const BRepGProp_Face& S, const gp_Pnt& O);
179   
180   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, const gp_Pnt& O, const Standard_Real Eps);
181   
182   Standard_EXPORT void Perform (const BRepGProp_Face& S, const gp_Pln& Pl);
183   
184   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, const gp_Pln& Pl, const Standard_Real Eps);
185   
186   Standard_EXPORT void Perform (BRepGProp_Face& S, BRepGProp_Domain& D);
187   
188   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, BRepGProp_Domain& D, const Standard_Real Eps);
189   
190   Standard_EXPORT void Perform (BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& O);
191   
192   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pnt& O, const Standard_Real Eps);
193   
194   Standard_EXPORT void Perform (BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pln& Pl);
195   
196   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& S, BRepGProp_Domain& D, const gp_Pln& Pl, const Standard_Real Eps);
197   
198
199   //! If previously used methods containe Eps parameter
200   //! gets actual relative error of the computation, else returns  1.0.
201   Standard_EXPORT Standard_Real GetEpsilon();
202
203
204
205
206 protected:
207
208
209
210
211
212 private:
213
214
215
216   Standard_Real myEpsilon;
217
218
219 };
220
221
222
223
224
225
226
227 #endif // _BRepGProp_Vinert_HeaderFile