ae0919143bab445bbc5fa00d6b5d77dc6cf50d64
[occt.git] / src / GProp / GProp.cdl
1 -- Created on: 1991-03-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 --              JCV - January 1992
18
19
20
21 package GProp
22
23         --- Purpose: 
24         --  This package defines algorithmes to compute the global properties 
25         --  of a set of points, a curve, a surface, a solid (non infinite 
26         --  region of space delimited with geometric entities), a compound
27         --  geometric system (heterogeneous composition of the previous 
28         --  entities).
29         --    
30         --  Global properties are :
31         --  . length, area, volume,
32         --  . centre of mass,
33         --  . axis of inertia,
34         --  . moments of inertia,
35         --  . radius of gyration.
36         --  
37         --  It provides  also a class to  compile the average point or
38         --  line of a set of points.
39
40 uses 
41     Standard, 
42     TColStd, 
43     TColgp, 
44     gp, 
45     math, 
46     GeomAbs
47
48 is
49
50 exception UndefinedAxis inherits DomainError;
51         --- Purpose :  
52         --  This exception is raised when a method makes reference to
53         --  an undefined inertia axis of symmetry.
54         
55
56 enumeration EquaType
57     is      Plane, Line, Point, Space, None end;
58
59 enumeration ValueType
60     is      Mass,  
61             CenterMassX, CenterMassY, CenterMassZ, 
62             InertiaXX, InertiaYY, InertiaZZ, 
63             InertiaXY, InertiaXZ, InertiaYZ, 
64             Unknown 
65     end;
66
67
68
69         --- Purpose : Algorithmes :
70
71
72   class GProps;
73         --- Purpose :
74         --  Computes the global properties of a compound geometric 
75         --  system in 3d space.  It gives facilities to compose the
76         --  properties of hetegogeneous elements of the system 
77         --  (PGProps, CGProps, SGProps, VGProps or GProps). A density 
78         --  can be associated with each component of the system.
79
80
81        class PGProps;
82            --- Purpose :
83            --  Computes the global properties of a set of points in 3d.
84            --  This class inherits GProps.
85        
86          
87        generic class CGProps;
88            ---Purpose :
89            --   Computes the global properties  of a bounded
90            --   curve in 3d. This class inherits GProps.
91
92        class CelGProps;
93            ---Purpose :
94            --   Computes the global properties  of a gp curve in 3d 
95            --   This class inherits GProps.
96
97        generic class SGProps;
98            ---Purpose :
99            --   Computes the global properties and the area of a bounded
100            --   surface in 3d. This class inherits GProps.
101
102
103        class SelGProps;
104            ---Purpose :
105            --   Computes the global properties and the area of a bounded
106            --   elementary surface in 3d. This class inherits GProps.
107        
108        generic class VGProps;
109            ---Purpose :
110            --   Computes the global properties and the volume of a region
111            --   of space. This class inherits GProps.
112
113        generic class VGPropsGK, UFunction, TFunction;
114            ---Purpose :
115            --   Computes the global properties and the volume of a region
116            --   of space by adaptive Gauss-Kronrod integration.  
117            --   This class inherits GProps.
118
119
120        class VelGProps;
121            ---Purpose :
122            --   Computes the global properties and the volume of a region
123            --   of space. the region of space is defined by an elementary 
124            --   surface. This class inherits GProps.
125
126
127   class PrincipalProps;
128         ---Purpose :
129         --  Returns the principal inertia properties of a GProps. 
130
131
132
133
134         --- Purpose :  
135         --  The following abstract classes define templates
136         --  with the minimum of methods required to implement 
137         --  the computation of the global properties for a curve
138         --  or a surface.
139   
140   
141   --
142   --   Class to compute the average plane or line of a set of points.
143   --   
144   
145   class PEquation;
146     
147         --- Purpose : methods of package
148  
149   HOperator (G, Q : Pnt from gp; Mass : Real; Operator : out Mat from gp);
150         --- Purpose : Computes the matrix Operator, referred to as the
151 -- "Huyghens Operator" of a geometric system at the
152 -- point Q of the space, using the following data :
153 -- - Mass, i.e. the mass of the system,
154 -- - G, the center of mass of the system.
155 --   The "Huyghens Operator" is used to compute
156 -- Inertia/Q, the matrix of inertia of the system at
157 -- the point Q using Huyghens' theorem :
158 --    Inertia/Q = Inertia/G + HOperator (Q, G, Mass)
159 -- where Inertia/G is the matrix of inertia of the
160 -- system relative to its center of mass as returned by
161 -- the function MatrixOfInertia on any GProp_GProps object.
162
163
164 end GProp;