4c7aeb86d8115088c2559462a18ccf2992aad2ee
[occt.git] / src / Approx / Approx_CurvlinFunc.cdl
1 -- Created on: 1998-05-12
2 -- Created by: Roman BORISOV
3 -- Copyright (c) 1998-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
23 class CurvlinFunc from Approx  inherits TShared from MMgt
24
25         ---Purpose: defines an abstract curve with 
26         --          curvilinear parametrization
27         --          
28         --          
29         --          
30         --          
31
32 uses
33     HCurve from Adaptor3d,  
34     Curve  from Adaptor3d,
35     HCurve2d from Adaptor2d, 
36     HSurface from Adaptor3d, 
37     Shape from GeomAbs, 
38     Array1OfReal  from  TColStd,  
39     HArray1OfReal  from  TColStd,
40     Pnt  from  gp, 
41     Vec  from  gp
42
43 raises
44     OutOfRange from Standard, 
45     DomainError from Standard,
46     ConstructionError  from  Standard 
47
48 is 
49     Create(C:  HCurve from Adaptor3d; Tol: Real) 
50     returns  mutable  CurvlinFunc;
51     
52     Create(C2D:  HCurve2d from Adaptor2d;  S:  HSurface from Adaptor3d; Tol: Real) 
53     returns  mutable  CurvlinFunc;
54      
55     Create(C2D1,  C2D2:  HCurve2d from Adaptor2d;  S1,  S2:  HSurface from Adaptor3d; Tol: Real)
56     returns  mutable  CurvlinFunc; 
57      
58     SetTol(me:  mutable;  Tol: Real) 
59     ---Purpose Update the tolerance to used            
60     is  static;
61
62     Init(me:  mutable) 
63     is  private;
64  
65     Init(me; C: in out Curve from Adaptor3d;   
66              Si: out HArray1OfReal from  TColStd;   
67              Ui: out HArray1OfReal from  TColStd) 
68     is  private;
69
70     FirstParameter(me) returns Real;
71
72     LastParameter(me) returns Real;
73
74     NbIntervals(me; S : Shape from GeomAbs) returns Integer;
75         ---Purpose: Returns  the number  of  intervals for  continuity
76         --          <S>. May be one if Continuity(me) >= <S>
77     
78     Intervals(me; T : in out Array1OfReal from TColStd; 
79                   S : Shape from GeomAbs);
80         ---Purpose: Stores in <T> the  parameters bounding the intervals
81         --          of continuity <S>.
82         --          
83         --          The array must provide  enough room to  accomodate
84         --          for the parameters. i.e. T.Length() > NbIntervals()
85
86     Trim(me:  mutable;  First,  Last,  Tol:  Real  from  Standard) 
87     raises  OutOfRange  from  Standard; 
88         --- Purpose : if First < 0 or Last > 1
89
90     Length(me:  mutable)       
91          --- Purpose : Computes length of the curve.
92     is  static;
93
94     Length(me; C:  in out Curve  from  Adaptor3d;  
95                           FirstU,  LasrU:  Real) returns  Real      
96          --- Purpose : Computes length of the curve segment.
97   
98     is  static;
99     GetLength(me)  returns  Real; 
100
101     GetUParameter(me;  C: in out Curve  from  Adaptor3d;  S:  Real;  NumberOfCurve:  Integer)  returns  Real;        
102          --- Purpose : returns  original parameter correponding S.  if
103          --  Case == 1 computation is performed on myC2D1 and mySurf1,
104          --  otherwise it is done on myC2D2 and mySurf2.
105
106     GetSParameter(me;  U:  Real)  returns  Real;             
107          --- Purpose : returns original parameter correponding S.
108
109     GetSParameter(me;  C:  in out Curve  from  Adaptor3d;  U,  Length:  Real)  returns  Real         
110          --- Purpose : returns curvilinear parameter correponding U.
111     is  private;
112
113     EvalCase1(me; S:  Real; Order: Integer; 
114               Result: out Array1OfReal  from  TColStd) --  dim(Result) = 3 
115     returns  Boolean  from  Standard 
116
117     raises 
118         ConstructionError  from  Standard; 
119         --- Purpose : if myCase != 1
120     
121     EvalCase2(me; S:  Real; Order: Integer;
122               Result: out Array1OfReal  from  TColStd) --  dim(Result) = 5 
123     returns  Boolean  from  Standard
124     raises 
125         ConstructionError  from  Standard; 
126         --- Purpose : if myCase != 2
127
128     EvalCase3(me:  mutable; S:  Real; Order: Integer;
129               Result: out Array1OfReal  from  TColStd)  --  dim(Result) = 7 
130     returns  Boolean  from  Standard
131     raises 
132         ConstructionError  from  Standard; 
133         --- Purpose : if myCase != 3
134
135     EvalCurOnSur(me; S: Real; Order: Integer;
136                 Result: out Array1OfReal  from  TColStd; 
137                 NumberOfCurve: Integer) 
138     returns  Boolean  from  Standard            
139     is private;
140                  
141 fields
142  
143     myC3D    :  HCurve    from  Adaptor3d; 
144     myC2D1   :  HCurve2d  from  Adaptor2d;
145     myC2D2   :  HCurve2d  from  Adaptor2d; 
146     mySurf1  :  HSurface  from  Adaptor3d; 
147     mySurf2  :  HSurface  from  Adaptor3d; 
148     myCase   :  Integer   from  Standard;  --  [1..3]
149     myFirstS :  Real      from  Standard;
150     myLastS  :  Real      from  Standard; 
151     myFirstU1:  Real      from  Standard;
152     myLastU1 :  Real      from  Standard; 
153     myFirstU2:  Real      from  Standard;
154     myLastU2 :  Real      from  Standard; 
155     myLength :  Real      from  Standard; 
156     myLength1:  Real      from  Standard;
157     myLength2:  Real      from  Standard;
158     myTolLen :  Real      from  Standard;
159     myPrevS  :  Real      from  Standard; -- should be mutable
160     myPrevU  :  Real      from  Standard; -- should be mutable
161
162     myUi_1   :  HArray1OfReal  from  TColStd;
163     mySi_1   :  HArray1OfReal  from  TColStd;
164     myUi_2   :  HArray1OfReal  from  TColStd;
165     mySi_2   :  HArray1OfReal  from  TColStd;
166 end CurvlinFunc;