0024428: Implementation of LGPL license
[occt.git] / src / BRepBlend / BRepBlend_SurfRstConstRad.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 SurfRstConstRad from BRepBlend
18 inherits SurfRstFunction 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
44
45 is
46
47     Create(Surf    : HSurface from Adaptor3d;
48            SurfRst : HSurface from Adaptor3d;
49            Rst     : HCurve2d from Adaptor2d; 
50            CGuide  : HCurve   from Adaptor3d)
51     returns SurfRstConstRad from BRepBlend;
52
53     NbVariables(me)
54     ---Purpose: Returns 3.
55     returns Integer from Standard;
56
57     NbEquations(me)
58     ---Purpose: Returns 3.
59     returns Integer from Standard;
60
61     Value(me: in out; X: Vector; F: out Vector)
62     ---Purpose: computes the values <F> of the Functions for the 
63     --          variable <X>.
64     --          Returns True if the computation was done successfully, 
65     --          False otherwise.
66     returns Boolean from Standard;
67     
68     Derivatives(me: in out; X: Vector; D: out Matrix)
69     ---Purpose: returns the values <D> of the derivatives for the 
70     --          variable <X>.
71     --          Returns True if the computation was done successfully, 
72     --          False otherwise.
73     returns Boolean from Standard;
74     
75     Values(me: in out; X: Vector; F: out Vector; D: out Matrix)
76     ---Purpose: returns the values <F> of the functions and the derivatives
77     --          <D> for the variable <X>.
78     --          Returns True if the computation was done successfully, 
79     --          False otherwise.
80     returns Boolean from Standard;
81
82     Set(me      : in out; 
83         SurfRef : HSurface from Adaptor3d;
84         RstRef  : HCurve2d from Adaptor2d);
85            
86     Set(me: in out; Param: Real from Standard);
87
88     Set(me: in out; First, Last: Real from Standard);
89     ---Purpose: Sets the bounds of the parametric interval on 
90     --          the guide line.
91     --          This determines the derivatives in these values if the
92     --          function is not Cn.
93
94     GetTolerance(me; Tolerance: out Vector from math; Tol: Real from Standard);
95
96     GetBounds(me; InfBound,SupBound: out Vector from math);
97
98     IsSolution(me: in out; Sol: Vector from math; Tol: Real from Standard)
99     returns Boolean from Standard;
100
101      GetMinimalDistance(me) 
102         ---Purpose: Returns   the    minimal  Distance  beetween   two
103         --          extremitys of calculed sections.          
104         returns  Real  from  Standard 
105         is redefined;
106
107 --- TheFollowing methods are called only when 
108 --  IsSolution returns Standard_True.
109
110     PointOnS(me)
111     ---C++: return const&
112     returns Pnt from gp;
113
114     PointOnRst(me)
115     ---C++: return const&
116     returns Pnt from gp;
117
118     Pnt2dOnS(me)
119     ---Purpose: Returns U,V coordinates of the point on the surface.
120     ---C++: return const&
121     returns Pnt2d from gp;
122
123     Pnt2dOnRst(me)
124     ---Purpose: Returns  U,V coordinates of the point  on the curve on
125     --          surface.
126     ---C++: return const&
127     returns Pnt2d from gp;
128
129     ParameterOnRst(me)
130     ---Purpose: Returns parameter of the point on the curve.
131     returns Real from Standard;
132
133     IsTangencyPoint(me)
134     returns Boolean from Standard;
135
136     TangentOnS(me)
137     ---C++: return const&
138     returns Vec from gp;
139
140     Tangent2dOnS(me)
141     ---C++: return const&
142     returns Vec2d from gp;
143
144     TangentOnRst(me)
145     ---C++: return const&
146     returns Vec from gp;
147
148     Tangent2dOnRst(me)
149     ---C++: return const&
150     returns Vec2d from gp;
151
152     Decroch(me; 
153             Sol    : Vector from math;
154             NS,TgS : out Vec from gp)
155     ---Purpose: Enables  implementation  of  a criterion of  decrochage
156     --          specific to  the function. 
157     --  Warning: Can  be  called  without  previous  call  of  issolution
158     --          but the values  calculated can  be  senseless.    
159     returns Boolean from Standard
160     is static;
161
162 -- methodes hors template (en plus du create)
163
164     Set(me     : in out; 
165         Radius : Real from Standard; 
166         Choix  : Integer from Standard)
167     is static;
168
169     Set(me: in out; TypeSection: SectionShape from BlendFunc)
170     ---Purpose: Sets  the  type  of   section generation   for the
171     --          approximations. 
172     is static;
173
174     Section(me        : in out; 
175             Param     : Real from Standard;
176             U,V,W     : Real from Standard;
177             Pdeb,Pfin : out Real from Standard;
178             C         : out Circ from gp)
179     is static;
180
181 -- Methods for the approximation
182 -- 
183     IsRational(me) returns Boolean
184     ---Purpose: Returns  if the section is rationnal
185     is static;
186
187     GetSectionSize(me) returns Real
188     ---Purpose:  Returns the length of the maximum section
189     is static;
190     
191     GetMinimalWeight(me; Weigths  : out Array1OfReal  from TColStd)
192     ---Purpose: Compute the minimal value of weight for each poles
193     --          of all sections.
194     is static;
195
196     NbIntervals(me; S : Shape from GeomAbs) returns Integer
197     ---Purpose: Returns  the number  of  intervals for  continuity
198     --          <S>. May be one if Continuity(me) >= <S>
199     is static;
200     
201     Intervals(me; T : in out Array1OfReal from TColStd; 
202                   S : Shape from GeomAbs)
203     ---Purpose: Stores in <T> the  parameters bounding the intervals
204     --          of continuity <S>.        
205     --          The array must provide  enough room to  accomodate
206     --          for the parameters. i.e. T.Length() > NbIntervals()
207     is static;
208
209     GetShape(me        : in out;
210              NbPoles   : out Integer from Standard;
211              NbKnots   : out Integer from Standard;
212              Degree    : out Integer from Standard;
213              NbPoles2d : out Integer from Standard)
214     is static;
215
216     GetTolerance(me; 
217                  BoundTol, SurfTol, AngleTol : Real;
218                  Tol3d : out Vector;
219                  Tol1D : out Vector )
220     ---Purpose: Returns the tolerance to reach in approximation
221     --          to respecte
222     --          BoundTol error at the Boundary
223     --          AngleTol tangent error at the Boundary
224     --          SurfTol error inside the surface.
225     is static;
226
227     Knots(me: in out; TKnots: out Array1OfReal from TColStd)
228     is static;
229
230     Mults(me: in out; TMults: out Array1OfInteger from TColStd)
231     is static;
232
233     Section(me       : in out ; 
234             P        : Point from Blend;
235             Poles    : out Array1OfPnt   from TColgp;
236             DPoles   : out Array1OfVec   from TColgp;
237             Poles2d  : out Array1OfPnt2d from TColgp;
238             DPoles2d : out Array1OfVec2d from TColgp;
239             Weigths  : out Array1OfReal  from TColStd;
240             DWeigths : out Array1OfReal  from TColStd)
241     ---Purpose: Used for the first and last section 
242     returns Boolean from Standard
243     is static;
244
245     Section(me: in out; P: Point from Blend;
246                         Poles     : out Array1OfPnt   from TColgp;
247                         DPoles    : out Array1OfVec   from TColgp;
248                         D2Poles   : out Array1OfVec   from TColgp;
249                         Poles2d   : out Array1OfPnt2d from TColgp;
250                         DPoles2d  : out Array1OfVec2d from TColgp;
251                         D2Poles2d : out Array1OfVec2d from TColgp;
252                         Weigths   : out Array1OfReal  from TColStd;
253                         DWeigths  : out Array1OfReal  from TColStd;
254                         D2Weigths : out Array1OfReal  from TColStd)
255     ---Purpose: Used for the first and last section
256     --          The method returns Standard_True if the derivatives
257     --          are computed, otherwise it returns Standard_False.
258     returns Boolean from Standard
259     is static;
260
261     Section(me       : in out ; 
262             P        : Point from Blend;
263             Poles    : out Array1OfPnt   from TColgp;
264             Poles2d  : out Array1OfPnt2d from TColgp;
265             Weigths  : out Array1OfReal  from TColStd)
266     is static;
267
268     Resolution(me; 
269                IC2d : Integer from Standard;
270                Tol  : Real from Standard;
271                TolU, TolV : out Real from Standard);
272
273 fields
274
275     surf     : HSurface             from Adaptor3d;
276     surfrst  : HSurface             from Adaptor3d;
277     rst      : HCurve2d             from Adaptor2d;
278     cons     : CurveOnSurface       from Adaptor3d;
279     guide    : HCurve               from Adaptor3d; 
280     tguide   : HCurve               from Adaptor3d; 
281     pts      : Pnt                  from gp;
282     ptrst    : Pnt                  from gp;
283     pt2ds    : Pnt2d                from gp;
284     pt2drst  : Pnt2d                from gp;
285     prmrst   : Real                 from Standard;
286     istangent: Boolean              from Standard;
287     tgs      : Vec                  from gp;
288     tg2ds    : Vec2d                from gp;
289     tgrst    : Vec                  from gp;
290     tg2drst  : Vec2d                from gp;
291
292     ray      : Real                 from Standard;
293     choix    : Integer              from Standard;
294     ptgui    : Pnt                  from gp;
295     d1gui    : Vec                  from gp;
296     d2gui    : Vec                  from gp;
297     nplan    : Vec                  from gp;
298     normtg   : Real                 from Standard;
299     theD     : Real                 from Standard;
300        
301     surfref  : HSurface             from Adaptor3d;
302     rstref   : HCurve2d             from Adaptor2d;
303
304     maxang   : Real                 from Standard;
305     minang   : Real                 from Standard;   
306     distmin  : Real                 from Standard;   
307     mySShape : SectionShape         from BlendFunc;
308     myTConv  : ParameterisationType from Convert;
309
310 end SurfRstConstRad;