1fb4f7dd13f408e9594cba19cee9aae9db65e198
[occt.git] / src / GeomFill / GeomFill_CorrectedFrenet.cdl
1 -- Created on: 1997-12-19
2 -- Created by: Philippe MANGIN
3 -- Copyright (c) 1997-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 CorrectedFrenet from GeomFill  
24     inherits TrihedronLaw  from  GeomFill 
25
26         ---Purpose:  Defined an Corrected Frenet  Trihedron  Law It is
27         --          like Frenet with an Torsion's minimization          
28
29 uses 
30  Frenet from  GeomFill,
31  HCurve from  Adaptor3d, 
32  Shape  from  GeomAbs, 
33  Array1OfReal   from TColStd, 
34  Function  from  Law, 
35  Vec    from  gp,
36  ---OCC78
37  HArray1OfReal  from TColStd, 
38  SequenceOfReal from TColStd, 
39  HArray1OfVec   from TColgp, 
40  SequenceOfVec  from TColgp
41  
42 raises
43  OutOfRange,  ConstructionError
44 is  
45
46    Create returns CorrectedFrenet from GeomFill;
47
48    Copy(me)   
49    returns  TrihedronLaw  from  GeomFill          
50    is  redefined;
51  
52    Init(me: mutable)   
53    is  static  private; 
54  
55    InitInterval(me; First, Last, Step: Real;   
56                 startAng: in out Real;  
57                 prevTangent, prevNormal, aT, aN: out Vec from gp;  
58                 FuncInt: out Function from Law; 
59                 SeqPoles:   out SequenceOfReal from TColStd; 
60                 SeqAngle:   out SequenceOfReal from TColStd; 
61                 SeqTangent: out SequenceOfVec from TColgp; 
62                 SeqNormal:  out SequenceOfVec from TColgp) 
63    returns Boolean 
64    --- Purpose:  Computes BSpline representation of Normal evolution at one  
65    --- interval of continuity of Frenet. Returns True if FuncInt = 0
66    is private;
67      
68    --- OCC78 
69    CalcAngleAT(me; Tangent, Normal, prevTangent, prevNormal: in Vec from gp)
70    returns Real
71    --- Purpose:  Computes angle of Normal evolution of Frenet between any two points on the curve.
72    is private;
73    GetAngleAT(me; P: in Real) 
74    returns Real
75    --- Purpose:  Get corrected value of angle of Normal evolution of Frenet
76    is private;
77
78    SetCurve(me : mutable;  C  :  HCurve  from  Adaptor3d) 
79    is  redefined;
80  
81    SetInterval(me: mutable; First, Last: Real) 
82    is  redefined;   
83 -- 
84 -- 
85 --========== To compute Location and derivatives Location
86 --              
87    D0(me : mutable; 
88       Param: Real; 
89       Tangent    : out  Vec  from  gp; 
90       Normal     : out  Vec  from  gp; 
91       BiNormal   : out  Vec  from  gp)
92       ---Purpose: compute Triedrhon on curve at parameter <Param>         
93    returns Boolean  is  redefined;
94         
95    D1(me : mutable;
96       Param: Real;       
97       Tangent    : out  Vec  from  gp;  
98       DTangent   : out  Vec  from  gp; 
99       Normal     : out  Vec  from  gp; 
100       DNormal    : out  Vec  from  gp;                 
101       BiNormal   : out  Vec  from  gp; 
102       DBiNormal  : out  Vec  from  gp)
103       ---Purpose: compute Triedrhon and  derivative Trihedron  on curve
104       --          at parameter <Param>                
105       --  Warning : It used only for C1 or C2 aproximation
106    returns Boolean  
107    is  redefined; 
108    
109    D2(me : mutable;
110       Param: Real;       
111       Tangent    : out  Vec  from  gp;  
112       DTangent   : out  Vec  from  gp; 
113       D2Tangent  : out  Vec  from  gp; 
114       Normal     : out  Vec  from  gp; 
115       DNormal    : out  Vec  from  gp;                 
116       D2Normal   : out  Vec  from  gp; 
117       BiNormal   : out  Vec  from  gp; 
118       DBiNormal  : out  Vec  from  gp; 
119       D2BiNormal : out  Vec  from  gp)    
120       ---Purpose: compute  Trihedron on curve          
121       --          first and seconde  derivatives.
122       --  Warning : It used only for C2 aproximation
123    returns Boolean
124    is  redefined; 
125 --
126 --  =================== Management  of  continuity  ===================
127 --                 
128    NbIntervals(me; S : Shape from GeomAbs) 
129         ---Purpose: Returns  the number  of  intervals for  continuity
130         --          <S>. 
131         --          May be one if Continuity(me) >= <S>
132    returns Integer  is  redefined;
133
134    Intervals(me; T : in out Array1OfReal from TColStd; 
135                  S : Shape from GeomAbs)
136         ---Purpose: Stores in <T> the  parameters bounding the intervals
137         --          of continuity <S>.
138         --          
139         --          The array must provide  enough room to  accomodate
140         --          for the parameters. i.e. T.Length() > NbIntervals()
141     raises
142         OutOfRange from Standard 
143     is redefined;  
144      
145           
146 --  ===================  To help   computation of  Tolerance   ===============   
147     GetAverageLaw(me  :  mutable;
148       ATangent    : out  Vec  from  gp; 
149       ANormal     : out  Vec  from  gp; 
150       ABiNormal   : out  Vec  from  gp) 
151      ---Purpose: Get average value of Tangent(t) and Normal(t) it is usfull to 
152      --          make fast approximation of rational  surfaces.        
153   is  redefined;
154
155 --   =================== To help Particular case   ===============      
156    
157     IsConstant(me) 
158     ---Purpose: Say if the law is Constant.        
159     returns  Boolean   
160     is redefined;
161  
162    IsOnlyBy3dCurve(me) 
163      ---Purpose: Return True.       
164     returns  Boolean   
165     is redefined;
166
167 fields 
168    frenet         : Frenet           from  GeomFill; 
169    EvolAroundT    : Function         from  Law; 
170    TLaw           : Function         from  Law; 
171    AT,  AN        : Vec              from  gp;
172    isFrenet       : Boolean; 
173    ---OCC78
174    HArrPoles      : HArray1OfReal    from  TColStd;
175    HArrAngle      : HArray1OfReal    from  TColStd;
176    HArrTangent    : HArray1OfVec     from  TColgp;
177    HArrNormal     : HArray1OfVec     from  TColgp; 
178    
179 end CorrectedFrenet;