0024428: Implementation of LGPL license
[occt.git] / src / BRepBlend / BRepBlend_RstRstEvolRad.cdl
1 -- Created on: 1997-02-06
2 -- Created by: Laurent BOURESCHE
3 -- Copyright (c) 1997-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
9 -- under the terms of the GNU Lesser General Public 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 class RstRstEvolRad from BRepBlend
18 inherits RstRstFunction from Blend
19
20
21 uses Vector               from math,
22      Matrix               from math,
23      Ax1                  from gp,
24      Vec                  from gp,
25      Vec2d                from gp,
26      Pnt                  from gp,
27      Pnt2d                from gp,
28      Circ                 from gp,
29      Array1OfPnt          from TColgp,
30      Array1OfVec          from TColgp,
31      Array1OfPnt2d        from TColgp,
32      Array1OfVec2d        from TColgp,
33      Array1OfReal         from TColStd,
34      Array1OfInteger      from TColStd,
35      Shape                from GeomAbs,
36      Point                from Blend,
37      SectionShape         from BlendFunc,
38      HSurface             from Adaptor3d,
39      HCurve               from Adaptor3d,
40      HCurve2d             from Adaptor2d,
41      CurveOnSurface       from Adaptor3d,
42      ParameterisationType from Convert,
43      DecrochStatus        from Blend,
44      Function             from Law 
45
46 is
47
48     Create(Surf1    : HSurface from Adaptor3d;
49            Rst1     : HCurve2d from Adaptor2d;
50            Surf2    : HSurface from Adaptor3d;
51            Rst2     : HCurve2d from Adaptor2d; 
52            CGuide   : HCurve   from Adaptor3d;
53            Evol     : Function from Law)
54     returns RstRstEvolRad from BRepBlend;
55
56     NbVariables(me)
57     ---Purpose: Returns 2.
58     returns Integer from Standard;
59
60     NbEquations(me)
61     ---Purpose: Returns 2.
62     returns Integer from Standard;
63
64     Value(me: in out; X: Vector; F: out Vector)
65     ---Purpose: computes the values <F> of the Functions for the 
66     --          variable <X>.
67     --          Returns True if the computation was done successfully, 
68     --          False otherwise.
69     returns Boolean from Standard;
70     
71     Derivatives(me: in out; X: Vector; D: out Matrix)
72     ---Purpose: returns the values <D> of the derivatives for the 
73     --          variable <X>.
74     --          Returns True if the computation was done successfully, 
75     --          False otherwise.
76     returns Boolean from Standard;
77     
78     Values(me: in out; X: Vector; F: out Vector; D: out Matrix)
79     ---Purpose: returns the values <F> of the functions and the derivatives
80     --          <D> for the variable <X>.
81     --          Returns True if the computation was done successfully, 
82     --          False otherwise.
83     returns Boolean from Standard;
84
85     Set(me      : in out; 
86         SurfRef1 : HSurface from Adaptor3d;
87         RstRef1  : HCurve2d from Adaptor2d;
88         SurfRef2 : HSurface from Adaptor3d;
89         RstRef2  : HCurve2d from Adaptor2d);
90            
91     Set(me: in out; Param: Real from Standard);
92
93     Set(me: in out; First, Last: Real from Standard);
94     ---Purpose: Sets the bounds of the parametric interval on 
95     --          the guide line.
96     --          This determines the derivatives in these values if the
97     --          function is not Cn.
98
99     GetTolerance(me; Tolerance: out Vector from math; Tol: Real from Standard);
100
101     GetBounds(me; InfBound,SupBound: out Vector from math);
102
103     IsSolution(me: in out; Sol: Vector from math; Tol: Real from Standard)
104     returns Boolean from Standard;
105
106      GetMinimalDistance(me) 
107         ---Purpose: Returns   the    minimal  Distance  beetween   two
108         --          extremitys of calculed sections.          
109         returns  Real  from  Standard 
110         is redefined;
111
112 --- TheFollowing methods are called only when 
113 --  IsSolution returns Standard_True.
114
115     PointOnRst1(me)
116     ---C++: return const&
117     returns Pnt from gp;
118
119     PointOnRst2(me)
120     ---C++: return const&
121     returns Pnt from gp;
122
123     Pnt2dOnRst1(me)
124     ---Purpose: Returns U,V coordinates of the point on the surface.
125     ---C++: return const&
126     returns Pnt2d from gp;
127
128     Pnt2dOnRst2(me)
129     ---Purpose: Returns  U,V coordinates of the point  on the curve on
130     --          surface.
131     ---C++: return const&
132     returns Pnt2d from gp;
133
134     ParameterOnRst1(me)
135     ---Purpose: Returns parameter of the point on the curve.
136     returns Real from Standard;
137
138     ParameterOnRst2(me)
139     ---Purpose: Returns parameter of the point on the curve.
140     returns Real from Standard;
141
142     IsTangencyPoint(me)
143     returns Boolean from Standard;
144
145     TangentOnRst1(me)
146     ---C++: return const&
147     returns Vec from gp;
148
149     Tangent2dOnRst1(me)
150     ---C++: return const&
151     returns Vec2d from gp;
152
153     TangentOnRst2(me)
154     ---C++: return const&
155     returns Vec from gp;
156
157     Tangent2dOnRst2(me)
158     ---C++: return const&
159     returns Vec2d from gp;
160
161     Decroch(me; 
162             Sol    : Vector from math;
163             NRst1, TgRst1 : out Vec from gp;
164             NRst2, TgRst2 : out Vec from gp)
165
166     ---Purpose: Enables  implementation of a criterion  of  decrochage
167     --          specific to the function. 
168      ---Warning: Can be  called without  previous  call  of  issolution
169     --          but  the calculated  values risquent  de ne pas  avoir
170     --          grand  sens.       
171     returns DecrochStatus from Blend
172     is static;
173
174 -- methodes hors template (en plus du create)
175
176     Set(me     : in out; 
177         Choix  : Integer from Standard)
178     is static;
179
180     Set(me: in out; TypeSection: SectionShape from BlendFunc)
181     ---Purpose: Sets  the  type  of   section generation   for the
182     --          approximations. 
183     is static;
184
185     CenterCircleRst1Rst2(me;
186                          PtRst1 : Pnt      from gp;
187                          PtRst2 : Pnt      from gp;
188                          np     : Vec      from gp;
189                          Center : out Pnt  from gp;
190                          VdMed  : out Vec  from gp)                
191     ---Purpose: Gives the center of circle defined   by PtRst1, PtRst2 and
192     --          radius ray.
193     returns Boolean from Standard         
194     is static;             
195                    
196     Section(me        : in out; 
197             Param     : Real from Standard;
198             U,V       : Real from Standard;
199             Pdeb,Pfin : out Real from Standard;
200             C         : out Circ from gp)
201     is static;
202
203 -- Methods for the approximation
204 -- 
205     IsRational(me) returns Boolean
206     ---Purpose: Returns  if the section is rationnal
207     is static;
208
209     GetSectionSize(me) returns Real
210     ---Purpose:  Returns the length of the maximum section
211     is static;
212     
213     GetMinimalWeight(me; Weigths  : out Array1OfReal  from TColStd)
214     ---Purpose: Compute the minimal value of weight for each poles
215     --          of all sections.
216     is static;
217
218     NbIntervals(me; S : Shape from GeomAbs) returns Integer
219     ---Purpose: Returns  the number  of  intervals for  continuity
220     --          <S>. May be one if Continuity(me) >= <S>
221     is static;
222     
223     Intervals(me; T : in out Array1OfReal from TColStd; 
224                   S : Shape from GeomAbs)
225     ---Purpose: Stores in <T> the  parameters bounding the intervals
226     --          of continuity <S>.        
227     --          The array must provide  enough room to  accomodate
228     --          for the parameters. i.e. T.Length() > NbIntervals()
229     is static;
230
231     GetShape(me        : in out;
232              NbPoles   : out Integer from Standard;
233              NbKnots   : out Integer from Standard;
234              Degree    : out Integer from Standard;
235              NbPoles2d : out Integer from Standard)
236     is static;
237
238     GetTolerance(me; 
239                  BoundTol, SurfTol, AngleTol : Real;
240                  Tol3d : out Vector;
241                  Tol1D : out Vector )
242     ---Purpose: Returns the tolerance to reach in approximation
243     --          to respecte
244     --          BoundTol error at the Boundary
245     --          AngleTol tangent error at the Boundary
246     --          SurfTol error inside the surface.
247     is static;
248
249     Knots(me: in out; TKnots: out Array1OfReal from TColStd)
250     is static;
251
252     Mults(me: in out; TMults: out Array1OfInteger from TColStd)
253     is static;
254
255     Section(me       : in out ; 
256             P        : Point from Blend;
257             Poles    : out Array1OfPnt   from TColgp;
258             DPoles   : out Array1OfVec   from TColgp;
259             Poles2d  : out Array1OfPnt2d from TColgp;
260             DPoles2d : out Array1OfVec2d from TColgp;
261             Weigths  : out Array1OfReal  from TColStd;
262             DWeigths : out Array1OfReal  from TColStd)
263     ---Purpose: Used for the first and last section 
264     returns Boolean from Standard
265     is static;
266
267     Section(me       : in out ; 
268             P        : Point from Blend;
269             Poles    : out Array1OfPnt   from TColgp;
270             Poles2d  : out Array1OfPnt2d from TColgp;
271             Weigths  : out Array1OfReal  from TColStd)
272     is static;
273
274
275     Section(me: in out; P: Point from Blend;
276                         Poles     : out Array1OfPnt   from TColgp;
277                         DPoles    : out Array1OfVec   from TColgp;
278                         D2Poles   : out Array1OfVec   from TColgp;
279                         Poles2d   : out Array1OfPnt2d from TColgp;
280                         DPoles2d  : out Array1OfVec2d from TColgp;
281                         D2Poles2d : out Array1OfVec2d from TColgp;
282                         Weigths   : out Array1OfReal  from TColStd;
283                         DWeigths  : out Array1OfReal  from TColStd;
284                         D2Weigths : out Array1OfReal  from TColStd)
285     ---Purpose: Used for the first and last section
286     --          The method returns Standard_True if the derivatives
287     --          are computed, otherwise it returns Standard_False.
288     returns Boolean from Standard
289     is static;
290
291     Resolution(me; 
292                IC2d : Integer from Standard;
293                Tol  : Real from Standard;
294                TolU, TolV : out Real from Standard);
295
296 fields
297
298     surf1    : HSurface             from Adaptor3d;
299     surf2    : HSurface             from Adaptor3d;
300     rst1     : HCurve2d             from Adaptor2d;
301     rst2     : HCurve2d             from Adaptor2d;    
302     cons1    : CurveOnSurface       from Adaptor3d;
303     cons2    : CurveOnSurface       from Adaptor3d;    
304     guide    : HCurve               from Adaptor3d; 
305     tguide   : HCurve               from Adaptor3d; 
306     ptrst1   : Pnt                  from gp;
307     ptrst2   : Pnt                  from gp;
308     pt2drst1 : Pnt2d                from gp;
309     pt2drst2 : Pnt2d                from gp;
310     prmrst1  : Real                 from Standard;
311     prmrst2  : Real                 from Standard;    
312     istangent: Boolean              from Standard;
313     tgrst1   : Vec                  from gp;
314     tg2drst1 : Vec2d                from gp;
315     tgrst2   : Vec                  from gp;
316     tg2drst2 : Vec2d                from gp;
317
318     ray      : Real                 from Standard;
319     dray     : Real                 from Standard;
320     choix    : Integer              from Standard;
321     ptgui    : Pnt                  from gp;
322     d1gui    : Vec                  from gp;
323     d2gui    : Vec                  from gp;
324     nplan    : Vec                  from gp;
325     normtg   : Real                 from Standard;
326     theD     : Real                 from Standard;
327        
328     surfref1 : HSurface             from Adaptor3d;
329     rstref1  : HCurve2d             from Adaptor2d;
330     surfref2 : HSurface             from Adaptor3d;
331     rstref2  : HCurve2d             from Adaptor2d;
332     maxang   : Real                 from Standard;
333     minang   : Real                 from Standard;   
334     distmin  : Real                 from Standard;   
335     mySShape : SectionShape         from BlendFunc;
336     myTConv  : ParameterisationType from Convert;
337     tevol    : Function             from Law ;
338     fevol    : Function             from Law ;    
339
340 end RstRstEvolRad;
341
342
343
344
345
346
347
348
349