102fdf6cecafcc2fa399e0b5e56f8d0db19ceb59
[occt.git] / src / HLRBRep / HLRBRep_Curve.cdl
1 -- Created on: 1993-04-01
2 -- Created by: Modelistation
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22 class Curve from HLRBRep
23         
24         ---Purpose: Defines a 2d curve by projection of  a 3D curve on
25         --          a    plane     with  an     optional   perspective
26         --          transformation.
27
28 uses
29     Integer         from Standard,    
30     Boolean         from Standard,    
31     ShortReal       from Standard,    
32     Real            from Standard,    
33     Address         from Standard,    
34     Pnt             from gp,
35     Vec             from gp,
36     Pnt2d           from gp,
37     Vec2d           from gp,
38     Dir2d           from gp,
39     Circ2d          from gp,
40     Elips2d         from gp,
41     Hypr2d          from gp,
42     Parab2d         from gp,
43     Lin2d           from gp,
44     Shape           from GeomAbs,
45     CurveType       from GeomAbs,
46     Array1OfPnt2d   from TColgp,
47     Array1OfReal    from TColStd,
48     Array1OfInteger from TColStd,
49     Edge            from TopoDS,
50     Curve           from BRepAdaptor
51      
52 raises
53     NoSuchObject        from Standard,
54     DomainError         from Standard,
55     OutOfRange          from Standard,
56     UndefinedDerivative from StdFail
57
58      
59 is
60     Create returns Curve from HLRBRep;
61         ---Purpose: Creates an undefined Curve.
62     
63     Projector(me : in out; Proj : Address from Standard)
64         ---C++: inline
65     is static;
66
67     Curve(me : in out) returns Curve from BRepAdaptor
68         ---Purpose: Returns the 3D curve.
69         ---C++: return &
70         ---C++: inline
71     is static;
72     
73     Curve(me : in out; E : Edge from TopoDS)
74         ---Purpose: Sets the 3D curve to be projected.
75     is static;
76     
77     Parameter2d(me; P3d : Real from Standard) returns Real from Standard
78         ---Purpose: Returns the parameter   on the 2d  curve  from the
79         --          parameter on the 3d curve.
80     is static;
81     
82     Parameter3d(me; P2d : Real from Standard) returns Real from Standard
83         ---Purpose: Returns the parameter   on the 3d  curve  from the
84         --          parameter on the 2d curve.
85     is static;
86     
87     Update(me : in out; TotMin : Address from Standard;
88                         TotMax : Address from Standard)
89     returns Real from Standard
90         ---Purpose: Update the minmax and the internal data
91     is static;
92
93     UpdateMinMax(me : in out; TotMin : Address from Standard;
94                               TotMax : Address from Standard)
95     returns Real from Standard
96         ---Purpose: Update the minmax returns tol for enlarge;
97     is static;
98
99     Z(me; U : Real from Standard) returns Real from Standard
100         --- Purpose :  Computes the Z    coordinate  of the  point  of
101         --  parameter U on the curve in the viewing coordinate system
102     is static;
103     
104     Value3D(me; U : Real from Standard) returns Pnt from gp
105         --- Purpose  :  Computes the 3D point   of parameter U  on the
106         --  curve.
107         --  
108         ---C++: inline
109     is static;
110
111     D0 (me; U :     Real from Standard;
112             P : out Pnt  from gp)
113         --- Purpose  :  Computes the 3D point   of parameter U  on the
114         --  curve.
115         --  
116         ---C++: inline
117     is static;
118
119     D1(me; U :     Real from Standard;
120            P : out Pnt  from gp ;
121            V : out Vec  from gp)
122         --- Purpose :  Computes the point of parameter  U on the curve
123         --  with its first derivative.
124         --  
125         ---C++: inline
126     is static;
127
128     Tangent(me; AtStart :     Boolean from Standard;
129                 P       : out Pnt2d   from gp;
130                 D       : out Dir2d   from gp)
131         --- Purpose : Depending on <AtStart> computes the 2D point and
132         --  tangent on the curve  at sart (or at  end).  If the  first
133         --  derivative is null look after  at start (or before at end)
134         --  with the second derivative.
135         --
136     raises
137         UndefinedDerivative from StdFail
138     is static;
139     
140     --
141     --     Global methods - Apply to the whole curve.
142     --     
143     
144     FirstParameter(me) returns Real from Standard
145         ---C++: inline
146     is static;
147
148     LastParameter(me) returns Real from Standard
149         ---C++: inline
150     is static;
151     
152     Continuity(me) returns Shape from GeomAbs
153         ---C++: inline
154     is static;
155     
156     NbIntervals(me: in out; S : Shape from GeomAbs)
157     returns Integer from Standard
158         ---Purpose: If necessary,  breaks the  curve in  intervals  of
159         --          continuity  <S>.    And  returns   the number   of
160         --          intervals.
161         ---C++: inline
162     is static;
163
164     Intervals(me: in out; T : in out Array1OfReal from TColStd; 
165                   S : Shape from GeomAbs)
166         ---Purpose: Stores in <T> the  parameters bounding the intervals
167         --          of continuity <S>.
168         --          
169         --          The array must provide  enough room to  accomodate
170         --          for the parameters. i.e. T.Length() > NbIntervals()
171     raises
172         OutOfRange from Standard
173     ---C++: inline
174     ;
175
176     IsClosed(me) returns Boolean from Standard
177         ---C++: inline
178     is static;
179     
180     IsPeriodic(me) returns Boolean from Standard
181         ---C++: inline
182     is static;
183     
184     Period(me) returns Real
185     raises
186         DomainError from Standard -- if the curve is not periodic
187         ---C++: inline
188     is static;
189      
190     Value(me; U : Real from Standard) returns Pnt2d from gp
191         --- Purpose : Computes the point of parameter U on the curve.
192         --  
193         ---C++: inline
194     is static;
195
196     D0 (me; U :     Real  from Standard;
197             P : out Pnt2d from gp)
198         --- Purpose : Computes the point of parameter U on the curve.
199     is static;
200
201     D1 (me; U :     Real  from Standard;
202             P : out Pnt2d from gp;
203             V : out Vec2d from gp)
204         --- Purpose : Computes the point  of  parameter U on the curve
205         --  with its first derivative.
206     raises 
207         DomainError from Standard
208         --- Purpose : Raised if the continuity of the current interval
209         --  is not C1.
210     is static;
211
212     D2 (me; U     :     Real  from Standard;
213             P     : out Pnt2d from gp ;
214             V1,V2 : out Vec2d from gp)
215     raises 
216         DomainError from Standard
217         --- Purpose : Raised if the continuity of the current interval
218         --  is not C2.
219     is static;
220     
221     D3 (me; U          :     Real  from Standard;
222             P          : out Pnt2d from gp;
223             V1, V2, V3 : out Vec2d from gp)
224         --- Purpose :
225         --  Returns the point P of parameter U, the first, the second 
226         --  and the third derivative.
227     raises 
228         DomainError from Standard
229         --- Purpose : Raised if the continuity of the current interval
230         --  is not C3.
231     is static;
232         
233     DN (me; U : Real    from Standard; 
234             N : Integer from Standard) returns Vec2d from gp
235         --- Purpose :
236         --  The returned vector gives the value of the derivative for the 
237         --  order of derivation N.
238     raises  
239         DomainError from Standard,
240         --- Purpose : Raised if the continuity of the current interval
241         --  is not CN.
242         OutOfRange from Standard
243         --- Purpose : Raised if N < 1.            
244     is static;
245
246     Resolution(me; R3d : Real) returns Real
247          ---Purpose :  Returns the parametric  resolution corresponding
248          --         to the real space resolution <R3d>.
249         ---C++: inline
250     is static;
251         
252     GetType(me) returns CurveType from GeomAbs
253         ---Purpose: Returns  the  type of the   curve  in the  current
254         --          interval :   Line,   Circle,   Ellipse, Hyperbola,
255         --          Parabola, BezierCurve, BSplineCurve, OtherCurve.
256         ---C++: inline
257     is static;
258
259     --
260     --     The following methods must  be called when GetType returned
261     --     the corresponding type.
262     --     
263
264     Line(me) returns Lin2d from gp
265     raises
266         NoSuchObject from Standard
267     is static;
268
269     Circle(me) returns Circ2d from gp
270     raises
271         NoSuchObject from Standard
272     is static;
273
274     Ellipse(me) returns Elips2d from gp
275     raises
276         NoSuchObject from Standard
277     is static;
278
279     Hyperbola(me) returns  Hypr2d from gp
280     raises
281         NoSuchObject from Standard
282     is static;
283
284     Parabola(me) returns Parab2d from gp
285     raises
286         NoSuchObject from Standard
287     is static;
288
289
290     IsRational(me) returns Boolean from Standard
291         ---C++:inline
292     is static;
293     
294     Degree(me) returns Integer from Standard
295         ---C++: inline
296     is static;
297
298     NbPoles(me) returns Integer from Standard
299         ---C++: inline
300     is static;
301
302     Poles(me; TP : in out Array1OfPnt2d from TColgp)
303     raises 
304         NoSuchObject from Standard, -- if rational
305         OutOfRange   from Standard  -- if TP has not length NbPoles
306     is static;
307     
308     PolesAndWeights(me; TP : in out Array1OfPnt2d from TColgp;
309                         TW : in out Array1OfReal  from TColStd)
310     raises 
311         NoSuchObject from Standard, -- if not rational
312         OutOfRange   from Standard  -- if TW has not length NbPoles
313     is static;
314     
315     NbKnots(me) returns Integer from Standard
316     raises 
317         NoSuchObject from Standard
318         ---C++: inline
319     is static;
320      
321     Knots(me; kn: out Array1OfReal from TColStd)
322     is static;
323     
324     Multiplicities(me; mu: out Array1OfInteger from TColStd)
325     is static;
326     
327
328 fields
329     myCurve : Curve     from BRepAdaptor;
330     myType  : CurveType from GeomAbs;
331     myProj  : Address   from Standard;
332     
333     -- description of the line in the plane containing the line and the eye
334
335     myOX    : Real from Standard;
336     myOZ    : Real from Standard;
337     myVX    : Real from Standard;
338     myVZ    : Real from Standard;
339     myOF    : Real from Standard;
340     
341 end Curve;