7fd59977 |
1 | -- File: GeomFill_LocationGuide.cdl |
2 | -- Created: Wed Jul 8 15:11:44 1998 |
3 | -- Author: Stephanie HUMEAU |
4 | -- <shu@sun17> |
5 | ---Copyright: Matra Datavision 1998 |
6 | |
7 | class LocationGuide from GeomFill |
8 | inherits LocationLaw from GeomFill |
9 | |
10 | uses |
11 | HCurve from Adaptor3d, |
12 | Mat from gp, |
13 | Vec from gp, |
14 | Pnt from gp, |
15 | Shape from GeomAbs, |
16 | Array1OfReal from TColStd, |
17 | Array1OfVec2d from TColgp, |
18 | Array1OfPnt2d from TColgp, |
19 | HArray1OfPnt2d from TColgp, |
20 | HArray2OfPnt2d from TColgp, |
21 | HArray1OfReal from TColStd, |
22 | |
23 | HSurface from Adaptor3d, |
24 | Curve from Geom, |
25 | Curve from Adaptor3d, |
26 | |
27 | TrihedronWithGuide from GeomFill, |
28 | Dir from gp, |
29 | Line from Geom, |
30 | TrimmedCurve from Geom, |
31 | SectionLaw from GeomFill, |
32 | PipeError from GeomFill, |
33 | Vector from math |
34 | |
35 | raises |
36 | NotImplemented, ConstructionError, OutOfRange |
37 | |
38 | is |
39 | Create(Triedre : TrihedronWithGuide from GeomFill) |
40 | returns LocationGuide from GeomFill; |
41 | |
42 | Set (me : mutable; |
43 | Section : SectionLaw from GeomFill; |
44 | rotat : Boolean from Standard; |
45 | SFirst, SLast : Real; |
46 | PrecAngle : Real; |
47 | LastAngle : out Real) |
48 | is static; |
49 | |
50 | EraseRotation(me : mutable); |
51 | |
52 | SetRotation(me : mutable; |
53 | PrecAngle : Real; |
54 | LastAngle : out Real) |
55 | is private; |
56 | |
57 | SetCurve(me : mutable; C : HCurve from Adaptor3d) |
58 | is redefined; |
59 | |
60 | GetCurve(me) |
61 | returns HCurve from Adaptor3d |
62 | ---C++: return const & |
63 | is redefined; |
64 | |
65 | SetTrsf(me : mutable; Transfo : Mat from gp) |
66 | is redefined; |
67 | |
68 | Copy(me) |
69 | returns LocationLaw from GeomFill |
70 | is redefined; |
71 | |
72 | |
73 | D0(me : mutable; |
74 | Param: Real; |
75 | M : out Mat from gp; |
76 | V : out Vec from gp) |
77 | ---Purpose: compute Location |
78 | returns Boolean is redefined; |
79 | |
80 | |
81 | D0(me : mutable; |
82 | Param: Real; |
83 | M : out Mat from gp; |
84 | V : out Vec from gp; |
85 | Poles2d : out Array1OfPnt2d from TColgp) |
86 | ---Purpose: compute Location and 2d points |
87 | returns Boolean is redefined; |
88 | |
89 | |
90 | D1(me : mutable; |
91 | Param: Real; |
92 | M : out Mat from gp; |
93 | V : out Vec from gp; |
94 | DM : out Mat from gp; |
95 | DV : out Vec from gp; |
96 | Poles2d : out Array1OfPnt2d from TColgp; |
97 | DPoles2d : out Array1OfVec2d from TColgp) |
98 | ---Purpose: compute location 2d points and associated |
99 | -- first derivatives. |
100 | -- Warning : It used only for C1 or C2 aproximation |
101 | returns Boolean |
102 | is redefined; |
103 | |
104 | D2(me : mutable; |
105 | Param: Real; |
106 | M : out Mat from gp; |
107 | V : out Vec from gp; |
108 | DM : out Mat from gp; |
109 | DV : out Vec from gp; |
110 | D2M : out Mat from gp; |
111 | D2V : out Vec from gp; |
112 | Poles2d : out Array1OfPnt2d from TColgp; |
113 | DPoles2d : out Array1OfVec2d from TColgp; |
114 | D2Poles2d : out Array1OfVec2d from TColgp) |
115 | ---Purpose: compute location 2d points and associated |
116 | -- first and seconde derivatives. |
117 | -- Warning : It used only for C2 aproximation |
118 | returns Boolean |
119 | is redefined; |
120 | |
121 | |
122 | |
123 | -- ================== General Information On The Function ================== |
124 | -- |
125 | |
126 | HasFirstRestriction(me) |
127 | ---Purpose: Say if the first restriction is defined in this class. |
128 | -- If it is true the first element of poles array in |
129 | -- D0,D1,D2... Correspond to this restriction. |
130 | -- Returns Standard_False (default implementation) |
131 | returns Boolean |
132 | is redefined; |
133 | |
134 | HasLastRestriction(me) -- A FAIRE !! |
135 | ---Purpose: Say if the last restriction is defined in this class. |
136 | -- If it is true the last element of poles array in |
137 | -- D0,D1,D2... Correspond to this restriction. |
138 | -- Returns Standard_False (default implementation) |
139 | returns Boolean |
140 | is redefined; |
141 | |
142 | TraceNumber(me) |
143 | ---Purpose: Give the number of trace (Curves 2d wich are not restriction) |
144 | -- Returns 1 (default implementation) |
145 | returns Integer |
146 | is redefined; |
147 | |
148 | ErrorStatus(me) |
149 | ---Purpose:Give a status to the Law |
150 | -- Returns PipeOk (default implementation) |
151 | returns PipeError from GeomFill |
152 | is redefined; |
153 | |
154 | -- |
155 | -- =================== Management of continuity =================== |
156 | -- |
157 | NbIntervals(me; S : Shape from GeomAbs) |
158 | ---Purpose: Returns the number of intervals for continuity |
159 | -- <S>. |
160 | -- May be one if Continuity(me) >= <S> |
161 | returns Integer is redefined; |
162 | |
163 | Intervals(me; T : in out Array1OfReal from TColStd; |
164 | S : Shape from GeomAbs) |
165 | ---Purpose: Stores in <T> the parameters bounding the intervals |
166 | -- of continuity <S>. |
167 | -- |
168 | -- The array must provide enough room to accomodate |
169 | -- for the parameters. i.e. T.Length() > NbIntervals() |
170 | raises |
171 | OutOfRange from Standard |
172 | is redefined; |
173 | |
174 | |
175 | SetInterval(me: mutable; First, Last: Real from Standard) |
176 | ---Purpose: Sets the bounds of the parametric interval on |
177 | -- the function |
178 | -- This determines the derivatives in these values if the |
179 | -- function is not Cn. |
180 | is redefined; |
181 | |
182 | GetInterval(me; First, Last: out Real from Standard) |
183 | ---Purpose: Gets the bounds of the parametric interval on |
184 | -- the function |
185 | is redefined; |
186 | |
187 | GetDomain(me; First, Last: out Real from Standard) |
188 | ---Purpose: Gets the bounds of the function parametric domain. |
189 | -- Warning: This domain it is not modified by the |
190 | -- SetValue method |
191 | is redefined; |
192 | |
193 | -- =================== To help computation of Tolerance =============== |
194 | -- |
195 | -- Evaluation of error, in 2d space, or on composed function, is |
196 | -- difficult. The following methods can help the approximation to |
197 | -- make good evaluation and use good tolerances. |
198 | -- |
199 | -- It is not necessary for the following informations to be very |
200 | -- precise. A fast evaluation is sufficient. |
201 | |
202 | SetTolerance(me : mutable; Tol3d, Tol2d : Real) |
203 | ---Purpose: Is usefull, if (me) have to run numerical |
204 | -- algorithm to perform D0, D1 or D2 |
205 | -- The default implementation make nothing. |
206 | is redefined; |
207 | |
208 | Resolution(me; |
209 | Index : Integer from Standard; |
210 | Tol : Real from Standard; |
211 | TolU, TolV : out Real from Standard) |
212 | ---Purpose: Returns the resolutions in the sub-space 2d <Index> |
213 | -- This information is usfull to find an good tolerance in |
214 | -- 2d approximation. |
215 | -- Warning: Used only if Nb2dCurve > 0 |
216 | is redefined; |
217 | |
218 | |
219 | GetMaximalNorm(me : mutable) |
220 | ---Purpose: Get the maximum Norm of the matrix-location part. It |
221 | -- is usful to find an good Tolerance to approx M(t). |
222 | returns Real |
223 | is redefined; |
224 | |
225 | GetAverageLaw(me : mutable; |
226 | AM: out Mat from gp; |
227 | AV: out Vec from gp) |
228 | ---Purpose: Get average value of M(t) and V(t) it is usfull to |
229 | -- make fast approximation of rational surfaces. |
230 | is redefined; |
231 | |
232 | -- |
233 | -- To find elementary sweep |
234 | -- |
235 | IsTranslation(me; Error : out Real) |
236 | ---Purpose: Say if the Location Law, is an translation of Location |
237 | -- The default implementation is " returns False ". |
238 | returns Boolean |
239 | is redefined; |
240 | |
241 | IsRotation(me; Error : out Real ) |
242 | ---Purpose: Say if the Location Law, is a rotation of Location |
243 | -- The default implementation is " returns False ". |
244 | returns Boolean |
245 | is redefined; |
246 | |
247 | Rotation(me; Center : out Pnt from gp) |
248 | is redefined; |
249 | |
250 | |
251 | Section(me) |
252 | returns Curve from Geom; |
253 | |
254 | Guide(me) |
255 | returns HCurve from Adaptor3d; |
256 | |
257 | InitX(me; |
258 | Param : Real from Standard) |
259 | is private; |
260 | |
261 | SetOrigine(me : mutable; |
262 | Param1 : Real; |
263 | Param2 : Real) |
264 | is static; |
265 | |
266 | |
267 | fields |
268 | myLaw : TrihedronWithGuide from GeomFill; -- loi de triedre |
269 | mySec : SectionLaw from GeomFill; -- loi de section |
270 | myCurve : HCurve from Adaptor3d; -- trajectoire |
271 | myGuide : HCurve from Adaptor3d; -- guide |
272 | myTrimmed : HCurve from Adaptor3d; -- trajectoire trimme |
273 | |
274 | myPoles2d : HArray2OfPnt2d from TColgp is protected; |
275 | |
276 | myNbPts : Integer from Standard; |
277 | rotation : Boolean from Standard; -- contact ou non |
278 | OrigParam1 : Real from Standard; -- pour ACR |
279 | OrigParam2 : Real from Standard; |
280 | Uf, Ul : Real from Standard; |
281 | myFirstS : Real from Standard; |
282 | myLastS : Real from Standard; |
283 | ratio : Real from Standard; |
284 | |
285 | WithTrans: Boolean from Standard; |
286 | Trans : Mat from gp; |
287 | TolRes : Vector from math; |
288 | Inf, Sup: Vector from math; |
289 | X, R : Vector from math; |
290 | |
291 | myStatus : PipeError from GeomFill; |
292 | |
293 | end LocationGuide; |