7fd59977 |
1 | -- File: GeomPlate_Surface.cdl |
2 | -- Created: Thu Nov 21 13:47:59 1996 |
3 | -- Author: Joelle CHAUVET |
4 | -- <jct@sgi38> |
5 | -- Modified: Wed Mar 5 09:45:42 1997 |
6 | -- by: Joelle CHAUVET |
7 | -- G1134 : new methods RealBounds and Constraints |
8 | ---Copyright: Matra Datavision 1996 |
9 | |
10 | class Surface from GeomPlate inherits Surface from Geom |
11 | |
12 | ---Purpose: |
13 | -- Describes the characteristics of plate surface objects |
14 | -- returned by BuildPlateSurface::Surface. These can be |
15 | -- used to verify the quality of the resulting surface before |
16 | -- approximating it to a Geom_BSpline surface generated |
17 | -- by MakeApprox. This proves necessary in cases where |
18 | -- you want to use the resulting surface as the support for |
19 | -- a shape. The algorithmically generated surface cannot |
20 | -- fill this function as is, and as a result must be converted first. |
21 | |
22 | uses Pnt from gp, |
23 | Vec from gp, |
24 | Trsf from gp, |
25 | GTrsf2d from gp, |
26 | Shape from GeomAbs, |
27 | Curve from Geom, |
28 | Surface from Geom, |
29 | Plate from Plate, |
30 | Array2OfPnt2d from TColgp, |
31 | Array2OfPnt from TColgp, |
32 | SequenceOfXY from TColgp |
33 | |
34 | raises RangeError from Standard, |
35 | NoSuchObject from Standard, |
36 | UndefinedDerivative from Geom, |
37 | UndefinedValue from Geom |
38 | |
39 | is |
40 | |
41 | |
42 | |
43 | Create ( Surfinit : Surface from Geom; Surfinter : Plate from Plate) |
44 | returns mutable Surface from GeomPlate ; |
45 | |
46 | UReverse (me : mutable) |
47 | ---Purpose : |
48 | -- Reverses the U direction of parametrization of <me>. |
49 | -- The bounds of the surface are not modified. |
50 | ; |
51 | |
52 | |
53 | |
54 | |
55 | UReversedParameter (me; U : Real) returns Real |
56 | ---Purpose: Return the parameter on the Ureversed surface for |
57 | -- the point of parameter U on <me>. |
58 | -- |
59 | -- me->UReversed()->Value(me->UReversedParameter(U),V) |
60 | -- |
61 | -- is the same point as |
62 | -- |
63 | -- me->Value(U,V) |
64 | ; |
65 | |
66 | VReverse (me : mutable) |
67 | ---Purpose : |
68 | -- Reverses the V direction of parametrization of <me>. |
69 | -- The bounds of the surface are not modified. |
70 | ; |
71 | |
72 | |
73 | VReversedParameter (me; V : Real) returns Real |
74 | ---Purpose: Return the parameter on the Vreversed surface for |
75 | -- the point of parameter V on <me>. |
76 | -- |
77 | -- me->VReversed()->Value(U,me->VReversedParameter(V)) |
78 | -- |
79 | -- is the same point as |
80 | -- |
81 | -- me->Value(U,V) |
82 | ; |
83 | |
84 | TransformParameters(me; U,V : in out Real; T : Trsf from gp) |
85 | ---Purpose: Computes the parameters on the transformed surface for |
86 | -- the transform of the point of parameters U,V on <me>. |
87 | -- |
88 | -- me->Transformed(T)->Value(U',V') |
89 | -- |
90 | -- is the same point as |
91 | -- |
92 | -- me->Value(U,V).Transformed(T) |
93 | -- |
94 | -- Where U',V' are the new values of U,V after calling |
95 | -- |
96 | -- me->TranformParameters(U,V,T) |
97 | -- |
98 | -- This methods does not change <U> and <V> |
99 | -- |
100 | -- It can be redefined. For example on the Plane, |
101 | -- Cylinder, Cone, Revolved and Extruded surfaces. |
102 | is redefined; |
103 | |
104 | ParametricTransformation(me; T : Trsf from gp) returns GTrsf2d from gp |
105 | ---Purpose: Returns a 2d transformation used to find the new |
106 | -- parameters of a point on the transformed surface. |
107 | -- |
108 | -- me->Transformed(T)->Value(U',V') |
109 | -- |
110 | -- is the same point as |
111 | -- |
112 | -- me->Value(U,V).Transformed(T) |
113 | -- |
114 | -- Where U',V' are obtained by transforming U,V with |
115 | -- th 2d transformation returned by |
116 | -- |
117 | -- me->ParametricTransformation(T) |
118 | -- |
119 | -- This methods returns an identity transformation |
120 | -- |
121 | -- It can be redefined. For example on the Plane, |
122 | -- Cylinder, Cone, Revolved and Extruded surfaces. |
123 | -- |
124 | is redefined; |
125 | |
126 | Bounds(me; U1, U2, V1, V2 : out Real) |
127 | -- To get the parametric bounds of the surface. |
128 | -- Returned values can be RealFirst or RealLast if the surface is |
129 | -- infinite. |
130 | ; |
131 | |
132 | IsUClosed (me) returns Boolean |
133 | ---Purpose : |
134 | -- Is the surface closed in the parametric direction U ? |
135 | -- Returns True if for each parameter V the distance |
136 | -- between the point P (UFirst, V) and P (ULast, V) is |
137 | -- lower or equal to Resolution from gp. UFirst and ULast |
138 | -- are the parametric bounds in the U direction. |
139 | ; |
140 | |
141 | IsVClosed (me) returns Boolean |
142 | ---Purpose : |
143 | -- Is the surface closed in the parametric direction V ? |
144 | -- Returns True if for each parameter U the distance |
145 | -- between the point P (U, VFirst) and P (U, VLast) is |
146 | -- lower or equal to Resolution from gp. VFirst and VLast |
147 | -- are the parametric bounds in the V direction. |
148 | ; |
149 | |
150 | IsUPeriodic (me) returns Boolean |
151 | ---Purpose : |
152 | -- Is the parametrization of a surface periodic in the |
153 | -- direction U ? |
154 | -- It is possible only if the surface is closed in this |
155 | -- parametric direction and if the following relation is |
156 | -- satisfied : |
157 | -- for each parameter V the distance between the point |
158 | -- P (U, V) and the point P (U + T, V) is lower or equal |
159 | -- to Resolution from package gp. T is the parametric period |
160 | -- and must be a constant. |
161 | ; |
162 | |
163 | UPeriod (me) returns Real from Standard |
164 | ---Purpose: returns the Uperiod. |
165 | raises |
166 | NoSuchObject from Standard |
167 | ---Purpose: raises if the surface is not uperiodic. |
168 | is redefined; |
169 | |
170 | IsVPeriodic (me) returns Boolean |
171 | ---Purpose : |
172 | -- Is the parametrization of a surface periodic in the |
173 | -- direction U ? |
174 | -- It is possible only if the surface is closed in this |
175 | -- parametric direction and if the following relation is |
176 | -- satisfied : |
177 | -- for each parameter V the distance between the point |
178 | -- P (U, V) and the point P (U + T, V) is lower or equal |
179 | -- to Resolution from package gp. T is the parametric period |
180 | -- and must be a constant. |
181 | ; |
182 | |
183 | VPeriod (me) returns Real from Standard |
184 | ---Purpose: returns the Vperiod. |
185 | raises |
186 | NoSuchObject from Standard |
187 | ---Purpose: raises if the surface is not vperiodic. |
188 | is redefined; |
189 | |
190 | UIso (me; U : Real) returns mutable Curve |
191 | ---Purpose : Computes the U isoparametric curve. |
192 | ; |
193 | |
194 | VIso (me; V : Real) returns mutable Curve |
195 | ---Purpose : Computes the V isoparametric curve. |
196 | ; |
197 | |
198 | Continuity (me) returns Shape from GeomAbs |
199 | ---Purpose : |
200 | -- Global Continuity of the surface in direction U and V : |
201 | -- C0 : only geometric continuity, |
202 | -- C1 : continuity of the first derivative all along the surface, |
203 | -- C2 : continuity of the second derivative all along the surface, |
204 | -- C3 : continuity of the third derivative all along the surface, |
205 | -- G1 : tangency continuity all along the surface, |
206 | -- G2 : curvature continuity all along the surface, |
207 | -- CN : the order of continuity is infinite. |
208 | --- Example : |
209 | -- If the surface is C1 in the V parametric direction and C2 |
210 | -- in the U parametric direction Shape = C1. |
211 | ; |
212 | |
213 | IsCNu (me; N : Integer) returns Boolean |
214 | ---Purpose : |
215 | --- Returns the order of continuity of the surface in the |
216 | -- U parametric direction. |
217 | raises RangeError |
218 | ---Purpose : Raised if N < 0. |
219 | ; |
220 | |
221 | IsCNv (me; N : Integer) returns Boolean |
222 | ---Purpose : |
223 | --- Returns the order of continuity of the surface in the |
224 | -- V parametric direction. |
225 | raises RangeError |
226 | ---Purpose : Raised if N < 0. |
227 | ; |
228 | |
229 | D0 (me; U, V : Real; P : out Pnt) |
230 | ---Purpose : |
231 | -- Computes the point of parameter U,V on the surface. |
232 | raises UndefinedValue |
233 | ---Purpose : |
234 | -- Raised only for an "OffsetSurface" if it is not possible to |
235 | -- compute the current point. |
236 | ; |
237 | |
238 | D1 (me; U, V : Real; P : out Pnt; D1U, D1V : out Vec) |
239 | ---Purpose : |
240 | -- Computes the point P and the first derivatives in the |
241 | -- directions U and V at this point. |
242 | raises UndefinedDerivative |
243 | ---Purpose : Raised if the continuity of the surface is not C1. |
244 | ; |
245 | |
246 | D2 (me; U, V : Real; P : out Pnt; D1U, D1V, D2U, D2V, D2UV : out Vec) |
247 | ---Purpose : |
248 | -- Computes the point P, the first and the second derivatives in |
249 | -- the directions U and V at this point. |
250 | raises UndefinedDerivative |
251 | ---Purpose : Raised if the continuity of the surface is not C2. |
252 | ; |
253 | |
254 | D3 (me; U, V : Real; P : out Pnt; |
255 | D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV :out Vec) |
256 | ---Purpose : |
257 | -- Computes the point P, the first,the second and the third |
258 | -- derivatives in the directions U and V at this point. |
259 | raises UndefinedDerivative |
260 | ---Purpose : Raised if the continuity of the surface is not C2. |
261 | ; |
262 | |
263 | DN (me; U, V : Real; Nu, Nv : Integer) returns Vec |
264 | ---Purpose ; |
265 | -- Computes the derivative of order Nu in the direction U and Nv |
266 | -- in the direction V at the point P(U, V). |
267 | raises UndefinedDerivative, |
268 | ---Purpose : |
269 | -- Raised if the continuity of the surface is not CNu in the U |
270 | -- direction or not CNv in the V direction. |
271 | RangeError |
272 | ---Purpose : Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0. |
273 | ; |
274 | |
275 | Copy (me) returns mutable like me; |
276 | |
277 | Transform (me : mutable; T : Trsf) ; |
278 | ---Purpose : |
279 | -- Transformation of a geometric object. This tansformation |
280 | -- can be a translation, a rotation, a symmetry, a scaling |
281 | -- or a complex transformation obtained by combination of |
282 | -- the previous elementaries transformations. |
283 | -- (see class Transformation of the package Geom). |
284 | |
285 | CallSurfinit (me) returns Surface from Geom; |
286 | |
287 | SetBounds (me : mutable ; Umin,Umax,Vmin,Vmax : in Real from Standard ); |
288 | |
289 | RealBounds(me; U1, U2, V1, V2 : out Real); |
290 | -- To get the real parametric bounds of the surface. |
291 | |
292 | Constraints(me; Seq : out SequenceOfXY); |
293 | -- To get the 2d constraints used by Plate |
294 | |
295 | |
296 | fields |
297 | mySurfinter : Plate from Plate; |
298 | mySurfinit : Surface from Geom; |
299 | myUmin,myUmax,myVmin,myVmax : Real from Standard; |
300 | |
301 | end; |