Commit | Line | Data |
---|---|---|
b311480e | 1 | -- Created on: 1991-02-26 |
2 | -- Created by: Isabelle GRIGNON | |
3 | -- Copyright (c) 1991-1999 Matra Datavision | |
973c2be1 | 4 | -- Copyright (c) 1999-2014 OPEN CASCADE SAS |
b311480e | 5 | -- |
973c2be1 | 6 | -- This file is part of Open CASCADE Technology software library. |
b311480e | 7 | -- |
d5f74e42 | 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 | |
973c2be1 | 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. | |
b311480e | 13 | -- |
973c2be1 | 14 | -- Alternatively, this file may be used under the terms of Open CASCADE |
15 | -- commercial license or contractual agreement. | |
7fd59977 | 16 | |
17 | package Extrema | |
18 | ---Purpose: This package calculates the distances between | |
19 | -- points, curves and surfaces. | |
20 | -- In general case, the algorithm to find the | |
21 | -- distances is a minimization algorithm of a function | |
22 | -- of variables: F(X). It is stopped when: | |
23 | -- for X1=X+Dx, F(X) and F(X1) are the same. | |
24 | -- The value of Dx can be calculated for all the | |
25 | -- algorithms. | |
26 | ||
27 | ---Level : Public. | |
28 | -- All methods of all classes will be public. | |
29 | ||
30 | ||
31 | uses | |
32 | gp, | |
33 | math, | |
34 | TColStd, | |
35 | TColgp, | |
36 | StdFail, | |
37 | Standard, | |
38 | TCollection, | |
39 | GeomAbs, | |
40 | Adaptor3d, | |
41 | Adaptor2d, | |
42 | Geom, | |
92d1589b A |
43 | Geom2d, |
44 | Bnd | |
7fd59977 | 45 | |
46 | is | |
47 | ||
92d1589b A |
48 | enumeration ExtFlag is ExtFlag_MIN, ExtFlag_MAX, ExtFlag_MINMAX; |
49 | ||
50 | enumeration ExtAlgo is ExtAlgo_Grad, ExtAlgo_Tree; | |
6060dd1f | 51 | |
52 | enumeration ElementType is Node, UIsoEdge, VIsoEdge, Face; | |
92d1589b | 53 | |
7fd59977 | 54 | class CurveTool; |
55 | class Curve2dTool; | |
56 | ||
57 | generic class Point; | |
58 | class POnSurf; | |
6060dd1f | 59 | class POnSurfParams; |
7fd59977 | 60 | |
61 | ----------------------------------- | |
62 | -- Treatement of elementary curves | |
63 | -- and surfaces extremas: | |
64 | ----------------------------------- | |
65 | class ExtPElC; | |
66 | class ExtPElC2d; | |
67 | class ExtPElS; | |
68 | class ExtPExtS; | |
69 | class ExtPRevS; | |
70 | class ExtElC; | |
71 | class ExtElC2d; | |
72 | ||
73 | class ExtElCS; | |
74 | class ExtElSS; | |
75 | ||
76 | ----------------------------------------------- | |
77 | -- generic classes for POINT-CURVE extremas: | |
78 | ----------------------------------------------- | |
79 | private generic class FuncExtPC, SeqPC; | |
80 | generic class GenExtPC, PCF; | |
81 | generic class GenLocateExtPC, PCLocF; | |
82 | ||
83 | ------------------------------------------------- | |
84 | -- classes for POINT-SURFACE extremas: | |
85 | ------------------------------------------------- | |
86 | private class FuncExtPS; | |
87 | class GenExtPS; | |
88 | class GenLocateExtPS; | |
92d1589b | 89 | imported HUBTreeOfSphere; |
7fd59977 | 90 | |
91 | ---------------------------------------------- | |
92 | -- generic classes for CURVE-CURVE extremas: | |
93 | ---------------------------------------------- | |
94 | private generic class FuncExtCC, SeqPOnC; | |
95 | generic class GenExtCC, CCF; | |
96 | generic class GenLocateExtCC, CCLocF; | |
97 | generic class CurveCache; | |
98 | ||
99 | ||
100 | ---------------------------------------------- | |
101 | -- classes for CURVE-SURFACE extremas: | |
102 | ---------------------------------------------- | |
103 | private class FuncExtCS; | |
104 | class GenExtCS; | |
105 | class GenLocateExtCS; | |
106 | ||
107 | ---------------------------------------------- | |
108 | -- classes for SURFACE-SURFACE extremas: | |
109 | ---------------------------------------------- | |
110 | private class FuncExtSS; | |
111 | class GenExtSS; | |
112 | class GenLocateExtSS; | |
113 | ||
114 | -------------------------------------------------- | |
115 | -- the following classes switches the curve or | |
116 | -- surface types for approximate elementary curves. | |
117 | -- the tools are the tools from Adaptor3d. | |
118 | -------------------------------------------------- | |
119 | -- Point-Curve: | |
120 | generic class GExtPC, EPC; | |
121 | generic class GLocateExtPC, ELPC, LocEPC; | |
122 | ||
123 | -- Point-Surface: | |
124 | class ExtPS; | |
125 | ||
126 | -- Curve-Curve: | |
127 | -- 3d: | |
0b85f9a6 | 128 | class ExtCC; |
129 | ||
130 | class CCache instantiates CurveCache from Extrema | |
131 | (Curve from Adaptor3d, | |
132 | Pnt from gp, | |
133 | HArray1OfPnt from TColgp); | |
134 | ||
135 | class ECC instantiates GenExtCC from Extrema | |
136 | (Curve from Adaptor3d, | |
137 | CurveTool from Extrema, | |
138 | Curve from Adaptor3d, | |
139 | CurveTool from Extrema, | |
140 | CCache from Extrema, | |
141 | HArray1OfPnt from TColgp, | |
142 | POnCurv from Extrema, | |
143 | Pnt from gp, | |
144 | Vec from gp); | |
145 | ||
146 | class LocateExtCC; | |
147 | ||
148 | class LCCache instantiates CurveCache from Extrema | |
149 | (Curve from Adaptor3d, | |
150 | Pnt from gp, | |
151 | HArray1OfPnt from TColgp); | |
152 | ||
153 | class ELCC instantiates GenExtCC from Extrema | |
154 | (Curve from Adaptor3d, | |
155 | CurveTool from Extrema, | |
156 | Curve from Adaptor3d, | |
157 | CurveTool from Extrema, | |
158 | LCCache from Extrema, | |
159 | HArray1OfPnt from TColgp, | |
160 | POnCurv from Extrema, | |
161 | Pnt from gp, | |
162 | Vec from gp); | |
163 | ||
164 | class LocECC instantiates GenLocateExtCC from Extrema | |
165 | (Curve from Adaptor3d, | |
166 | CurveTool from Extrema, | |
167 | Curve from Adaptor3d, | |
168 | CurveTool from Extrema, | |
169 | POnCurv from Extrema, | |
170 | Pnt from gp, | |
171 | Vec from gp); | |
172 | ||
7fd59977 | 173 | -- 2d: |
0b85f9a6 | 174 | class ExtCC2d; |
175 | ||
176 | class CCache2d instantiates CurveCache from Extrema | |
177 | (Curve2d from Adaptor2d, | |
178 | Pnt2d from gp, | |
179 | HArray1OfPnt2d from TColgp); | |
180 | ||
181 | class ECC2d instantiates GenExtCC from Extrema | |
182 | (Curve2d from Adaptor2d, | |
183 | Curve2dTool from Extrema, | |
184 | Curve2d from Adaptor2d, | |
185 | Curve2dTool from Extrema, | |
186 | CCache2d from Extrema, | |
187 | HArray1OfPnt2d from TColgp, | |
188 | POnCurv2d from Extrema, | |
189 | Pnt2d from gp, | |
190 | Vec2d from gp); | |
191 | ||
192 | class LocateExtCC2d; | |
193 | ||
194 | class LCCache2d instantiates CurveCache from Extrema | |
195 | (Curve2d from Adaptor2d, | |
196 | Pnt2d from gp, | |
197 | HArray1OfPnt2d from TColgp); | |
198 | ||
199 | class ELCC2d instantiates GenExtCC from Extrema | |
200 | (Curve2d from Adaptor2d, | |
201 | Curve2dTool from Extrema, | |
202 | Curve2d from Adaptor2d, | |
203 | Curve2dTool from Extrema, | |
204 | LCCache2d from Extrema, | |
205 | HArray1OfPnt2d from TColgp, | |
206 | POnCurv2d from Extrema, | |
207 | Pnt2d from gp, | |
208 | Vec2d from gp); | |
209 | ||
210 | class LocECC2d instantiates GenLocateExtCC from Extrema | |
211 | (Curve2d from Adaptor2d, | |
212 | Curve2dTool from Extrema, | |
213 | Curve2d from Adaptor2d, | |
214 | Curve2dTool from Extrema, | |
215 | POnCurv2d from Extrema, | |
216 | Pnt2d from gp, | |
217 | Vec2d from gp); | |
7fd59977 | 218 | |
219 | -- Curve-Surface: | |
220 | class ExtCS; | |
221 | ||
222 | -- Surface-Surface: | |
223 | class ExtSS; | |
224 | ||
225 | ||
226 | ----------------------------------------------- | |
227 | -- the following class is used to locate | |
228 | -- a first evaluation of the possible extremas. | |
229 | ----------------------------------------------- | |
230 | generic class CurveLocator; | |
231 | ||
232 | ||
233 | -------------------------------------- | |
234 | --- instantiations of generic classes: | |
235 | -------------------------------------- | |
236 | class POnCurv instantiates Point from Extrema(Pnt from gp); | |
237 | class POnCurv2d instantiates Point from Extrema(Pnt2d from gp); | |
238 | ||
239 | class Array1OfPOnCurv instantiates | |
240 | Array1 from TCollection(POnCurv); | |
241 | ||
242 | class Array2OfPOnCurv instantiates | |
243 | Array2 from TCollection(POnCurv); | |
244 | ||
245 | class Array1OfPOnCurv2d instantiates | |
246 | Array1 from TCollection(POnCurv2d); | |
247 | ||
248 | class Array2OfPOnCurv2d instantiates | |
249 | Array2 from TCollection(POnCurv2d); | |
250 | ||
251 | class Array1OfPOnSurf instantiates | |
252 | Array1 from TCollection(POnSurf); | |
253 | ||
254 | class Array2OfPOnSurf instantiates | |
255 | Array2 from TCollection(POnSurf); | |
256 | ||
6060dd1f | 257 | class Array2OfPOnSurfParams instantiates |
258 | Array2 from TCollection(POnSurfParams); | |
259 | ||
7fd59977 | 260 | |
261 | class HArray1OfPOnCurv instantiates | |
262 | HArray1 from TCollection(POnCurv, Array1OfPOnCurv); | |
263 | ||
264 | class HArray2OfPOnCurv instantiates | |
265 | HArray2 from TCollection(POnCurv, Array2OfPOnCurv); | |
266 | ||
267 | class HArray1OfPOnCurv2d instantiates | |
268 | HArray1 from TCollection(POnCurv2d,Array1OfPOnCurv2d); | |
269 | ||
270 | class HArray2OfPOnCurv2d instantiates | |
271 | HArray2 from TCollection(POnCurv2d,Array2OfPOnCurv2d); | |
272 | ||
273 | ||
274 | class HArray1OfPOnSurf instantiates | |
275 | HArray1 from TCollection(POnSurf, Array1OfPOnSurf); | |
276 | ||
277 | class HArray2OfPOnSurf instantiates | |
278 | HArray2 from TCollection(POnSurf, Array2OfPOnSurf); | |
279 | ||
6060dd1f | 280 | class HArray2OfPOnSurfParams instantiates |
281 | HArray2 from TCollection(POnSurfParams, Array2OfPOnSurfParams); | |
282 | ||
7fd59977 | 283 | |
284 | class SequenceOfPOnCurv instantiates | |
285 | Sequence from TCollection(POnCurv); | |
286 | ||
287 | class SequenceOfPOnCurv2d instantiates | |
288 | Sequence from TCollection(POnCurv2d); | |
289 | ||
290 | class SequenceOfPOnSurf instantiates | |
291 | Sequence from TCollection(POnSurf); | |
292 | ||
293 | ||
294 | ||
295 | --- 3d instantiations: | |
296 | class ExtPC instantiates GExtPC from Extrema | |
297 | (Curve from Adaptor3d, | |
298 | CurveTool from Extrema, | |
299 | ExtPElC from Extrema, | |
300 | Pnt from gp, | |
301 | Vec from gp, | |
302 | POnCurv from Extrema, | |
303 | SequenceOfPOnCurv from Extrema); | |
304 | ||
305 | ||
306 | class LocateExtPC instantiates GLocateExtPC from Extrema | |
307 | (Curve from Adaptor3d, | |
308 | CurveTool from Extrema, | |
309 | ExtPElC from Extrema, | |
310 | Pnt from gp, | |
311 | Vec from gp, | |
312 | POnCurv from Extrema, | |
313 | SequenceOfPOnCurv from Extrema); | |
7fd59977 | 314 | |
315 | --- 2d instantiations: | |
316 | class ExtPC2d instantiates GExtPC from Extrema | |
317 | (Curve2d from Adaptor2d, | |
318 | Curve2dTool from Extrema, | |
319 | ExtPElC2d from Extrema, | |
320 | Pnt2d from gp, | |
321 | Vec2d from gp, | |
322 | POnCurv2d from Extrema, | |
323 | SequenceOfPOnCurv2d from Extrema); | |
324 | ||
325 | ||
326 | class LocateExtPC2d instantiates GLocateExtPC from Extrema | |
327 | (Curve2d from Adaptor2d, | |
328 | Curve2dTool from Extrema, | |
329 | ExtPElC2d from Extrema, | |
330 | Pnt2d from gp, | |
331 | Vec2d from gp, | |
332 | POnCurv2d from Extrema, | |
333 | SequenceOfPOnCurv2d from Extrema); | |
7fd59977 | 334 | |
335 | ||
336 | end Extrema; |