0025074: Intf_Polygon2d - add virtual destructor
[occt.git] / src / Intf / Intf_InterferencePolygonPolyhedron.cdl
1 -- Created on: 1992-09-29
2 -- Created by: Didier PIFFAULT
3 -- Copyright (c) 1992-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 generic class InterferencePolygonPolyhedron from Intf
18     (Polygon3d as any;
19      ToolPolygon3d as any;      -- as ToolPolygon(Pnt,Polygon3d,Box)
20      Polyhedron as any;
21      ToolPolyh as any)
22     inherits Interference from Intf
23
24         ---Purpose: Computes the  interference between a polygon and a
25         --          Polyhedron.
26
27 uses    Pnt               from gp,
28         Lin               from gp,
29         XYZ               from gp,
30         Array1OfLin       from Intf,
31         SectionPoint      from Intf,
32         SeqOfSectionPoint from Intf,
33         TangentZone       from Intf,
34         SeqOfTangentZone  from Intf,
35         BoundSortBox      from Bnd
36
37 is
38
39 -- Interface :
40
41     Create          returns InterferencePolygonPolyhedron from Intf;
42     ---Purpose: Constructs  an  empty   interference  between Polygon   and
43     --          Polyhedron.
44
45     Create         (thePolyg : in Polygon3d; 
46                     thePolyh : in Polyhedron) 
47                     returns InterferencePolygonPolyhedron from Intf;
48     ---Purpose: Constructs and computes an interference between the Polygon
49     --          and the Polyhedron.
50
51     Create         (theLin   : in Lin from gp;
52                     thePolyh : in Polyhedron) 
53                     returns InterferencePolygonPolyhedron from Intf;
54     ---Purpose: Constructs  and computes  an  interference   between    the
55     --          Straight Line and the Polyhedron.
56
57     Create         (theLins  : in Array1OfLin from Intf;
58                     thePolyh : in Polyhedron) 
59                     returns InterferencePolygonPolyhedron from Intf;
60     ---Purpose: Constructs   and   computes  an  interference   between the
61     --          Straight Lines and the Polyhedron.
62
63     Perform        (me        : in out;
64                     thePolyg  : in Polygon3d; 
65                     thePolyh  : in Polyhedron) 
66     ---Purpose: Computes  an interference    between the   Polygon  and the
67     --          Polyhedron.
68     is static;
69
70     Perform        (me        : in out;
71                     theLin    : in Lin from gp;
72                     thePolyh  : Polyhedron)
73     ---Purpose: Computes an interference between the Straight  Line and the
74     --          Polyhedron.
75     is static;
76
77     Perform        (me        : in out;
78                     theLins   : in Array1OfLin from Intf;
79                     thePolyh  : in Polyhedron)
80     ---Purpose: Computes an interference  between the  Straight Lines  and
81     --          the Polyhedron.
82     is static;
83
84
85
86
87     ---------------   Optimisation : On Passe le Bnd_BoundSortBox
88
89
90     Create         (thePolyg   : in Polygon3d; 
91                     thePolyh   : in Polyhedron;
92                     theBoundSB : in out BoundSortBox from Bnd) 
93                     returns InterferencePolygonPolyhedron from Intf;
94     ---Purpose: Constructs and computes an interference between the Polygon
95     --          and the Polyhedron.
96
97     Create         (theLin   : in Lin from gp;
98                     thePolyh : in Polyhedron;
99                     theBoundSB : in out BoundSortBox from Bnd) 
100                     returns InterferencePolygonPolyhedron from Intf;
101     ---Purpose: Constructs  and computes  an  interference   between    the
102     --          Straight Line and the Polyhedron.
103
104     Create         (theLins  : in Array1OfLin from Intf;
105                     thePolyh : in Polyhedron;
106                     theBoundSB : in out BoundSortBox from Bnd) 
107                     returns InterferencePolygonPolyhedron from Intf;
108     ---Purpose: Constructs   and   computes  an  interference   between the
109     --          Straight Lines and the Polyhedron.
110
111     Perform        (me        : in out;
112                     thePolyg  : in Polygon3d; 
113                     thePolyh  : in Polyhedron;
114                     theBoundSB : in out BoundSortBox from Bnd) 
115     ---Purpose: Computes  an interference    between the   Polygon  and the
116     --          Polyhedron.
117     is static;
118
119     Perform        (me        : in out;
120                     theLin    : in Lin from gp;
121                     thePolyh  : Polyhedron;
122                     theBoundSB : in out BoundSortBox from Bnd)
123     ---Purpose: Computes an interference between the Straight  Line and the
124     --          Polyhedron.
125     is static;
126
127     Perform        (me        : in out;
128                     theLins   : in Array1OfLin from Intf;
129                     thePolyh  : in Polyhedron;
130                     theBoundSB : in out BoundSortBox from Bnd)
131     ---Purpose: Computes an interference  between the  Straight Lines  and
132     --          the Polyhedron.
133     is static;
134
135
136
137     Interference   (me       : in out;
138                     thePolyg : in Polygon3d;
139                     thePolyh : in Polyhedron;
140                     theBoundSB : in out BoundSortBox from Bnd)
141                     is static;
142     ---Purpose: Compares the boundings between the segment of <thePolyg> and
143     --          the facets of <thePolyh>.
144
145
146
147
148 -- Implementation :
149
150     Interference   (me       : in out;
151                     thePolyg : in Polygon3d;
152                     thePolyh : in Polyhedron)
153                     is static;
154     ---Purpose: Compares the boundings between the segment of <thePolyg> and
155     --          the facets of <thePolyh>.
156
157
158     Intersect      (me       : in out;
159                     BegO     : in Pnt from gp;
160                     EndO     : in Pnt from gp;
161                     Infinite : Boolean from Standard;
162                     TTri     : in Integer from Standard;
163                     thePolyh : in Polyhedron)
164                     is static private;
165     ---Purpose: Computes the intersection between  the segment <BegO><EndO>
166     --          and the triangle <TTri> of <thePolyh>.
167
168     Intersect      (me       : in out;
169                     BegO     : in Pnt from gp;
170                     EndO     : in Pnt from gp;
171                     Infinite : Boolean from Standard;
172                     TTri     : in Integer from Standard;
173                     thePolyh : in Polyhedron;
174                     TriNormal: in XYZ from gp;
175                     TriDp    : in Real from Standard;
176                     dBegTri  : in Real from Standard;
177                     dEndTri  : in Real from Standard)
178                     is static private;
179     ---Purpose: Computes the intersection between  the segment <BegO><EndO>
180     --          and the triangle <TTri> of <thePolyh>.
181
182 fields
183     BeginOfClosedPolygon: Boolean from Standard;
184     iLin                : Integer from Standard;
185
186 end InterferencePolygonPolyhedron;