0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / BRepGProp / BRepGProp_VinertGK.hxx
1 // Created on: 2005-12-21
2 // Created by: Sergey KHROMOV
3 // Copyright (c) 2005-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _BRepGProp_VinertGK_HeaderFile
17 #define _BRepGProp_VinertGK_HeaderFile
18
19 #include <Standard.hxx>
20 #include <Standard_DefineAlloc.hxx>
21 #include <Standard_Handle.hxx>
22
23 #include <Standard_Real.hxx>
24 #include <GProp_GProps.hxx>
25 #include <Standard_Boolean.hxx>
26 #include <Standard_Address.hxx>
27 class BRepGProp_Face;
28 class gp_Pnt;
29 class BRepGProp_Domain;
30 class gp_Pln;
31
32
33 //! Computes the global properties of a geometric solid
34 //! (3D closed region of space) delimited with :
35 //! -  a point and a surface
36 //! -  a plane and a surface
37 //!
38 //! The surface can be :
39 //! -  a surface limited with its parametric values U-V,
40 //! (naturally restricted)
41 //! -  a surface limited in U-V space with its boundary
42 //! curves.
43 //!
44 //! The surface's requirements to evaluate the global
45 //! properties are defined in the template FaceTool class from
46 //! the package GProp.
47 //!
48 //! The adaptive 2D algorithm of Gauss-Kronrod integration of
49 //! double integral is used.
50 //!
51 //! The inner integral is computed along U parameter of
52 //! surface. The integrand function is encapsulated in the
53 //! support class UFunction that is defined below.
54 //!
55 //! The outer integral is computed along T parameter of a
56 //! bounding curve. The integrand function is encapsulated in
57 //! the support class TFunction that is defined below.
58 class BRepGProp_VinertGK  : public GProp_GProps
59 {
60 public:
61
62   DEFINE_STANDARD_ALLOC
63
64   
65   //! Empty constructor.
66   Standard_EXPORT BRepGProp_VinertGK();
67   
68   //! Constructor. Computes the global properties of a region of
69   //! 3D space delimited with the naturally restricted surface
70   //! and the point VLocation.
71   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
72   
73   //! Constructor. Computes the global properties of a region of
74   //! 3D space delimited with the naturally restricted surface
75   //! and the point VLocation. The inertia is computed with
76   //! respect to thePoint.
77   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, const gp_Pnt& thePoint, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
78   
79   //! Constructor. Computes the global properties of a region of
80   //! 3D space delimited with the surface bounded by the domain
81   //! and the point VLocation.
82   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
83   
84   //! Constructor. Computes the global properties of a region of
85   //! 3D space delimited with the surface bounded by the domain
86   //! and the point VLocation. The inertia is computed with
87   //! respect to thePoint.
88   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const gp_Pnt& thePoint, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
89   
90   //! Constructor. Computes the global properties of a region of
91   //! 3D space delimited with the naturally restricted surface
92   //! and the plane.
93   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, const gp_Pln& thePlane, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
94   
95   //! Constructor. Computes the global properties of a region of
96   //! 3D space delimited with the surface bounded by the domain
97   //! and the plane.
98   Standard_EXPORT BRepGProp_VinertGK(BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const gp_Pln& thePlane, const gp_Pnt& theLocation, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
99   
100   //! Sets the vertex that delimit 3D closed region of space.
101     void SetLocation (const gp_Pnt& theLocation);
102   
103   //! Computes the global properties of a region of 3D space
104   //! delimited with the naturally restricted surface and the
105   //! point VLocation.
106   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
107   
108   //! Computes the global properties of a region of 3D space
109   //! delimited with the naturally restricted surface and the
110   //! point VLocation. The inertia is computed with respect to
111   //! thePoint.
112   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, const gp_Pnt& thePoint, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
113   
114   //! Computes the global properties of a region of 3D space
115   //! delimited with the surface bounded by the domain and the
116   //! point VLocation.
117   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
118   
119   //! Computes the global properties of a region of 3D space
120   //! delimited with the surface bounded by the domain and the
121   //! point VLocation. The inertia is computed with respect to
122   //! thePoint.
123   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const gp_Pnt& thePoint, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
124   
125   //! Computes the global properties of a region of 3D space
126   //! delimited with the naturally restricted surface and the
127   //! plane.
128   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, const gp_Pln& thePlane, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
129   
130   //! Computes the global properties of a region of 3D space
131   //! delimited with the surface bounded by the domain and the
132   //! plane.
133   Standard_EXPORT Standard_Real Perform (BRepGProp_Face& theSurface, BRepGProp_Domain& theDomain, const gp_Pln& thePlane, const Standard_Real theTolerance = 0.001, const Standard_Boolean theCGFlag = Standard_False, const Standard_Boolean theIFlag = Standard_False);
134   
135   //! Returns the relative reached computation error.
136     Standard_Real GetErrorReached() const;
137   
138   //! Returns the absolut reached computation error.
139     Standard_Real GetAbsolutError() const;
140
141
142
143
144 protected:
145
146
147
148
149
150 private:
151
152   
153   //! Main method for computation of the global properties that
154   //! is invoked by each Perform method.
155   Standard_EXPORT Standard_Real PrivatePerform (BRepGProp_Face& theSurface, const Standard_Address thePtrDomain, const Standard_Boolean IsByPoint, const Standard_Address theCoeffs, const Standard_Real theTolerance, const Standard_Boolean theCGFlag, const Standard_Boolean theIFlag);
156
157
158   Standard_Real myErrorReached;
159   Standard_Real myAbsolutError;
160
161
162 };
163
164
165 #include <BRepGProp_VinertGK.lxx>
166
167
168
169
170
171 #endif // _BRepGProp_VinertGK_HeaderFile