7fd59977 |
1 | -- File: ElSLib.cdl |
2 | -- Created: Mon Sep 9 16:39:42 1991 |
3 | -- Author: Michel Chauvat |
4 | ---Copyright: Matra Datavision 1991 |
5 | |
6 | |
7 | |
8 | |
9 | package ElSLib |
10 | |
11 | --- Purpose : Provides functions for basic geometric computation on |
12 | -- elementary surfaces. |
13 | -- This includes: |
14 | -- - calculation of a point or derived vector on a surface |
15 | -- where the surface is provided by the gp package, or |
16 | -- defined in canonical form (as in the gp package), and |
17 | -- the point is defined with a parameter, |
18 | -- - evaluation of the parameters corresponding to a |
19 | -- point on an elementary surface from gp, |
20 | -- - calculation of isoparametric curves on an elementary |
21 | -- surface defined in canonical form (as in the gp package). |
22 | -- Notes: |
23 | -- - ElSLib stands for Elementary Surfaces Library. |
24 | -- - If the surfaces provided by the gp package are not |
25 | -- explicitly parameterized, they still have an implicit |
26 | -- parameterization, similar to that which they infer on |
27 | -- the equivalent Geom surfaces. |
28 | -- Note: ElSLib stands for Elementary Surfaces Library. |
29 | |
30 | uses gp |
31 | |
32 | is |
33 | |
34 | Value (U, V : Real; Pl : Pln from gp) |
35 | returns Pnt from gp; |
36 | ---Purpose: For elementary surfaces from the gp package (planes, |
37 | -- cones, cylinders, spheres and tori), computes the point |
38 | -- of parameters (U, V). |
39 | |
40 | Value (U, V : Real; C : Cone from gp) |
41 | returns Pnt from gp; |
42 | ---C++: inline |
43 | |
44 | Value (U, V : Real; C : Cylinder from gp) |
45 | returns Pnt from gp; |
46 | ---C++: inline |
47 | |
48 | Value (U, V : Real; S : Sphere from gp) |
49 | returns Pnt from gp; |
50 | ---C++: inline |
51 | |
52 | Value (U,V : Real; T : Torus from gp) |
53 | returns Pnt from gp; |
54 | ---C++: inline |
55 | |
56 | DN (U, V : Real; Pl : Pln from gp; Nu, Nv : Integer) |
57 | returns Vec from gp; |
58 | ---Purpose: For elementary surfaces from the gp package (planes, |
59 | -- cones, cylinders, spheres and tori), computes the |
60 | -- derivative vector of order Nu and Nv in the u and v |
61 | -- parametric directions respectively, at the point of |
62 | -- parameters (U, V). |
63 | |
64 | DN (U, V : Real; C : Cone from gp; Nu, Nv : Integer) |
65 | returns Vec from gp; |
66 | ---C++: inline |
67 | |
68 | DN (U, V : Real; C : Cylinder from gp; Nu, Nv : Integer) |
69 | returns Vec from gp; |
70 | ---C++: inline |
71 | |
72 | DN (U, V : Real; S : Sphere from gp; Nu, Nv : Integer) |
73 | returns Vec from gp; |
74 | ---C++: inline |
75 | |
76 | DN (U, V : Real; T : Torus from gp; Nu, Nv : Integer) |
77 | returns Vec from gp; |
78 | ---C++: inline |
79 | |
80 | D0 (U, V : Real; Pl : Pln from gp; P : out Pnt from gp); |
81 | ---Purpose: For elementary surfaces from the gp package (planes, |
82 | -- cones, cylinders, spheres and tori), computes the point P |
83 | -- of parameters (U, V).inline |
84 | |
85 | D0 (U, V : Real; C : Cone from gp; P : out Pnt from gp); |
86 | ---C++: inline |
87 | |
88 | D0 (U, V : Real; C : Cylinder from gp; P : out Pnt from gp); |
89 | ---C++: inline |
90 | |
91 | D0 (U, V : Real; S : Sphere from gp; P : out Pnt from gp); |
92 | ---C++: inline |
93 | |
94 | D0 (U, V : Real; T : Torus from gp; P : out Pnt from gp); |
95 | ---C++: inline |
96 | |
97 | D1 (U, V : Real; Pl : Pln from gp; P : out Pnt from gp; |
98 | Vu, Vv : out Vec from gp); |
99 | ---Purpose: |
100 | -- For elementary surfaces from the gp package (planes, |
101 | -- cones, cylinders, spheres and tori), computes: |
102 | -- - the point P of parameters (U, V), and |
103 | -- - the first derivative vectors Vu and Vv at this point in |
104 | -- the u and v parametric directions respectively. |
105 | |
106 | D1 (U, V : Real; C : Cone from gp; P : out Pnt from gp; |
107 | Vu, Vv : out Vec from gp); |
108 | ---C++: inline |
109 | |
110 | D1 (U, V : Real; C : Cylinder from gp; P : out Pnt from gp; |
111 | Vu, Vv : out Vec from gp); |
112 | ---C++: inline |
113 | |
114 | D1 (U, V : Real; S : Sphere from gp; P : out Pnt from gp; |
115 | Vu, Vv : out Vec from gp); |
116 | ---C++: inline |
117 | |
118 | D1 (U, V : Real; T : Torus from gp; P : out Pnt from gp; |
119 | Vu, Vv : out Vec from gp); |
120 | ---C++: inline |
121 | |
122 | D2 (U, V : Real; C : Cone from gp; P : out Pnt from gp; |
123 | Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
124 | ---Purpose: |
125 | -- For elementary surfaces from the gp package (cones, |
126 | -- cylinders, spheres and tori), computes: |
127 | -- - the point P of parameters (U, V), and |
128 | -- - the first derivative vectors Vu and Vv at this point in |
129 | -- the u and v parametric directions respectively, and |
130 | -- - the second derivative vectors Vuu, Vvv and Vuv at this point. |
131 | |
132 | D2 (U, V : Real; C : Cylinder from gp; P : out Pnt from gp; |
133 | Vu,Vv,Vuu,Vvv,Vuv : out Vec from gp); |
134 | ---C++: inline |
135 | |
136 | D2 (U, V : Real; S : Sphere from gp; P : out Pnt from gp; |
137 | Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
138 | ---C++: inline |
139 | |
140 | D2 (U, V : Real; T : Torus from gp; P : out Pnt from gp; |
141 | Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
142 | ---C++: inline |
143 | |
144 | D3 (U, V : Real; C : Cone from gp; P : out Pnt from gp; |
145 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
146 | ---Purpose: |
147 | -- For elementary surfaces from the gp package (cones, |
148 | -- cylinders, spheres and tori), computes: |
149 | -- - the point P of parameters (U,V), and |
150 | -- - the first derivative vectors Vu and Vv at this point in |
151 | -- the u and v parametric directions respectively, and |
152 | -- - the second derivative vectors Vuu, Vvv and Vuv at |
153 | -- this point, and |
154 | -- - the third derivative vectors Vuuu, Vvvv, Vuuv and |
155 | -- Vuvv at this point. |
156 | |
157 | D3 (U, V : Real; C : Cylinder from gp; P : out Pnt from gp; |
158 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
159 | ---C++: inline |
160 | |
161 | D3 (U, V : Real; S : Sphere from gp; P : out Pnt from gp; |
162 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
163 | ---C++: inline |
164 | |
165 | D3 (U, V : Real; T : Torus from gp; P : out Pnt from gp; |
166 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
167 | ---C++: inline |
168 | |
169 | |
170 | |
171 | --- Purpose : Surface evaluation |
172 | -- The following functions compute the point and the |
173 | -- derivatives on elementary surfaces defined with their |
174 | -- geometric characterisitics. |
175 | -- You don't need to create the surface to use these functions. |
176 | -- These functions are called by the previous ones. |
177 | --- Example : |
178 | -- A cylinder is defined with its position and its radius. |
179 | |
180 | |
181 | |
182 | PlaneValue (U, V : Real; Pos : Ax3 from gp) |
183 | returns Pnt from gp; |
184 | |
185 | CylinderValue (U, V : Real; Pos : Ax3 from gp; Radius : Real) |
186 | returns Pnt from gp; |
187 | |
188 | ConeValue (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real) |
189 | returns Pnt from gp; |
190 | |
191 | SphereValue (U, V : Real; Pos : Ax3 from gp; Radius : Real) |
192 | returns Pnt from gp; |
193 | |
194 | TorusValue (U, V : Real; Pos : Ax3 from gp; MajorRadius, MinorRadius : Real) |
195 | returns Pnt from gp; |
196 | |
197 | PlaneDN (U, V : Real; Pos : Ax3 from gp; Nu, Nv : Integer) |
198 | returns Vec from gp; |
199 | |
200 | CylinderDN (U, V : Real; Pos: Ax3 from gp; Radius : Real; Nu, Nv : Integer) |
201 | returns Vec from gp; |
202 | |
203 | ConeDN (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real; |
204 | Nu, Nv : Integer) |
205 | returns Vec from gp; |
206 | |
207 | SphereDN (U, V : Real; Pos: Ax3 from gp; Radius : Real; Nu, Nv : Integer) |
208 | returns Vec from gp; |
209 | |
210 | TorusDN (U, V : Real; Pos: Ax3 from gp; MajorRadius, MinorRadius : Real; |
211 | Nu, Nv : Integer) |
212 | returns Vec from gp; |
213 | |
214 | PlaneD0 (U, V : Real; Pos : Ax3 from gp; P : out Pnt from gp); |
215 | |
216 | ConeD0 (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real; |
217 | P : out Pnt from gp); |
218 | |
219 | CylinderD0 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
220 | P : out Pnt from gp); |
221 | |
222 | SphereD0 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
223 | P : out Pnt from gp); |
224 | |
225 | TorusD0 (U, V : Real; Pos : Ax3 from gp; MajorRadius, MinorRadius : Real; |
226 | P : out Pnt from gp); |
227 | |
228 | PlaneD1 (U, V : Real; Pos : Ax3 from gp; P : out Pnt from gp; |
229 | Vu, Vv : out Vec from gp); |
230 | |
231 | ConeD1 (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real; |
232 | P : out Pnt from gp; Vu, Vv : out Vec from gp); |
233 | |
234 | CylinderD1 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
235 | P : out Pnt from gp; Vu, Vv : out Vec from gp); |
236 | |
237 | SphereD1 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
238 | P : out Pnt from gp; Vu, Vv : out Vec from gp); |
239 | |
240 | TorusD1 (U, V : Real; Pos : Ax3 from gp; MajorRadius, MinorRadius : Real; |
241 | P : out Pnt from gp; Vu, Vv : out Vec from gp); |
242 | |
243 | ConeD2 (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real; |
244 | P : out Pnt from gp; Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
245 | |
246 | CylinderD2 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
247 | P : out Pnt from gp; Vu,Vv,Vuu,Vvv,Vuv : out Vec from gp); |
248 | |
249 | SphereD2 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
250 | P : out Pnt from gp; Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
251 | |
252 | TorusD2 (U, V : Real; Pos : Ax3 from gp; MajorRadius, MinorRadius : Real; |
253 | P : out Pnt from gp; Vu, Vv, Vuu, Vvv, Vuv : out Vec from gp); |
254 | |
255 | ConeD3 (U, V : Real; Pos : Ax3 from gp; Radius, SAngle : Real; |
256 | P : out Pnt from gp; |
257 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
258 | |
259 | CylinderD3 (U, V : Real; Pos : Ax3 from gp; Radius : Real; |
260 | P : out Pnt from gp; |
261 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
262 | |
263 | SphereD3 (U, V : Real; Pos : Ax3 from gp; Radius : Real; P : out Pnt from gp; |
264 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
265 | |
266 | TorusD3 (U, V : Real; Pos : Ax3 from gp; MajorRadius, MinorRadius : Real; |
267 | P : out Pnt from gp; |
268 | Vu, Vv, Vuu, Vvv, Vuv, Vuuu, Vvvv, Vuuv, Vuvv : out Vec from gp); |
269 | |
270 | |
271 | |
272 | --- Purpose : |
273 | -- The following functions compute the parametric values |
274 | -- corresponding to a given point on a elementary surface. |
275 | -- The point should be on the surface. |
276 | |
277 | |
278 | Parameters (Pl : Pln from gp; P : Pnt from gp; U, V : out Real); |
279 | --- Purpose : parametrization |
280 | -- P (U, V) = |
281 | -- Pl.Location() + U * Pl.XDirection() + V * Pl.YDirection() |
282 | ---C++: inline |
283 | |
284 | |
285 | Parameters (C : Cylinder from gp; P : Pnt from gp; U, V : out Real); |
286 | --- Purpose : parametrization |
287 | -- P (U, V) = Location + V * ZDirection + |
288 | -- Radius * (Cos(U) * XDirection + Sin (U) * YDirection) |
289 | ---C++: inline |
290 | |
291 | |
292 | Parameters (C : Cone from gp; P : Pnt from gp; U, V : out Real); |
293 | --- Purpose : parametrization |
294 | -- P (U, V) = Location + V * ZDirection + |
295 | -- (Radius + V * Tan (SemiAngle)) * |
296 | -- (Cos(U) * XDirection + Sin(U) * YDirection) |
297 | ---C++: inline |
298 | |
299 | |
300 | Parameters (S : Sphere from gp; P : Pnt from gp; U, V : out Real); |
301 | --- Purpose : parametrization |
302 | -- P (U, V) = Location + |
303 | -- Radius * Cos (V) * (Cos (U) * XDirection + Sin (U) * YDirection) + |
304 | -- Radius * Sin (V) * ZDirection |
305 | ---C++: inline |
306 | |
307 | |
308 | Parameters (T : Torus from gp; P : Pnt from gp; U, V : out Real); |
309 | --- Purpose : parametrization |
310 | -- P (U, V) = Location + |
311 | -- (MajorRadius + MinorRadius * Cos(U)) * |
312 | -- (Cos(V) * XDirection - Sin(V) * YDirection) + |
313 | -- MinorRadius * Sin(U) * ZDirection |
314 | ---C++: inline |
315 | |
316 | |
317 | PlaneParameters (Pos: Ax3 from gp; P: Pnt from gp; U, V: out Real); |
318 | --- Purpose : parametrization |
319 | -- P (U, V) = |
320 | -- Pl.Location() + U * Pl.XDirection() + V * Pl.YDirection() |
321 | |
322 | |
323 | CylinderParameters (Pos: Ax3 from gp; Radius : Real; P: Pnt from gp; |
324 | U, V: out Real); |
325 | --- Purpose : parametrization |
326 | -- P (U, V) = Location + V * ZDirection + |
327 | -- Radius * (Cos(U) * XDirection + Sin (U) * YDirection) |
328 | |
329 | |
330 | ConeParameters (Pos: Ax3 from gp; Radius, SAngle: Real; P: Pnt from gp; |
331 | U, V: out Real); |
332 | --- Purpose : parametrization |
333 | -- P (U, V) = Location + V * ZDirection + |
334 | -- (Radius + V * Tan (SemiAngle)) * |
335 | -- (Cos(U) * XDirection + Sin(U) * YDirection) |
336 | |
337 | |
338 | SphereParameters (Pos: Ax3 from gp; Radius: Real; P: Pnt from gp; |
339 | U, V: out Real); |
340 | --- Purpose : parametrization |
341 | -- P (U, V) = Location + |
342 | -- Radius * Cos (V) * (Cos (U) * XDirection + Sin (U) * YDirection) + |
343 | -- Radius * Sin (V) * ZDirection |
344 | |
345 | |
346 | TorusParameters (Pos: Ax3 from gp; MajorRadius, MinorRadius: Real; |
347 | P : Pnt from gp; U, V : out Real); |
348 | --- Purpose : parametrization |
349 | -- P (U, V) = Location + |
350 | -- (MajorRadius + MinorRadius * Cos(U)) * |
351 | -- (Cos(V) * XDirection - Sin(V) * YDirection) + |
352 | -- MinorRadius * Sin(U) * ZDirection |
353 | |
354 | |
355 | PlaneUIso (Pos: Ax3 from gp; U : Real) |
356 | --- Purpose : compute the U Isoparametric gp_Lin of the plane. |
357 | returns Lin from gp; |
358 | |
359 | |
360 | CylinderUIso (Pos: Ax3 from gp; Radius, U : Real) |
361 | --- Purpose : compute the U Isoparametric gp_Lin of the cylinder. |
362 | returns Lin from gp; |
363 | |
364 | |
365 | ConeUIso (Pos: Ax3 from gp; Radius, SAngle, U: Real) |
366 | --- Purpose : compute the U Isoparametric gp_Lin of the cone. |
367 | returns Lin from gp; |
368 | |
369 | |
370 | SphereUIso (Pos: Ax3 from gp; Radius, U : Real) |
371 | --- Purpose : compute the U Isoparametric gp_Circ of the sphere, |
372 | -- (the meridian is not trimmed). |
373 | returns Circ from gp; |
374 | |
375 | |
376 | TorusUIso (Pos: Ax3 from gp; MajorRadius, MinorRadius, U: Real) |
377 | --- Purpose : compute the U Isoparametric gp_Circ of the torus. |
378 | returns Circ from gp; |
379 | |
380 | |
381 | PlaneVIso (Pos: Ax3 from gp; V : Real) |
382 | --- Purpose : compute the V Isoparametric gp_Lin of the plane. |
383 | returns Lin from gp; |
384 | |
385 | |
386 | CylinderVIso (Pos: Ax3 from gp; Radius, V : Real) |
387 | --- Purpose : compute the V Isoparametric gp_Circ of the cylinder. |
388 | returns Circ from gp; |
389 | |
390 | |
391 | ConeVIso (Pos: Ax3 from gp; Radius, SAngle, V : Real) |
392 | --- Purpose : compute the V Isoparametric gp_Circ of the cone. |
393 | returns Circ from gp; |
394 | |
395 | |
396 | SphereVIso (Pos: Ax3 from gp; Radius, V : Real) |
397 | --- Purpose : compute the V Isoparametric gp_Circ of the sphere, |
398 | -- (the meridian is not trimmed). |
399 | returns Circ from gp; |
400 | |
401 | |
402 | TorusVIso (Pos: Ax3 from gp; MajorRadius, MinorRadius, V : Real) |
403 | --- Purpose : compute the V Isoparametric gp_Circ of the torus. |
404 | returns Circ from gp; |
405 | |
406 | |
407 | end ElSLib; |
408 | |