Integration of OCCT 6.5.0 from SVN
[occt.git] / src / TopTrans / TopTrans_SurfaceTransition.cdl
1 -- File:        SurfaceTransition.cdl
2 -- Created:     Thu Jan 30 12:10:44 1992
3 -- Author:      Didier PIFFAULT
4 --              <dpf@sdsun1>
5 --              xpu:4/3/97 implementation       
6 ---Copyright:    Matra Datavision 1992
7
8
9 class SurfaceTransition from TopTrans 
10
11         ---Purpose: This algorithm  is used to  compute the transition
12         --          of a 3D surface intersecting a topological surfacic
13         --          boundary on a 3D curve ( intersection curve ).          
14         --          The  boundary is  described  by a  set of faces 
15         --          each face is described by 
16         --          - its support surface,
17         --          - an orientation defining its matter side.
18         --          The geometric elements are described locally at the 
19         --          intersection point by a second order development.          
20         --          A surface is described by the normal vector, the
21         --          principal directions and the principal curvatures.
22         --          A curve is described  by the  tangent, the normal
23         --          and the curvature.          
24         --          The  algorithm  keeps track of the two faces elements 
25         --          closest to the part of the curve "before" and "after"
26         --          the intersection,  these  two elements are updated 
27         --          for each new face.          
28         --          The position of the  curve can be computed when at
29         --          least  one surface  element has   been given, this
30         --          position is "In","Out" or "On" for the part of the
31         --          curve "Before" or "After" the intersection.
32
33 uses
34     Pnt from gp,
35     Dir from gp,    
36     State from TopAbs,
37     Orientation from TopAbs,
38     Array2OfReal from TColStd,
39     Array2OfOrientation from TopTrans
40 is
41
42     Create returns SurfaceTransition from TopTrans;
43         ---Purpose: Create an empty Surface Transition.
44     
45     Reset ( me     : in out;
46             Tgt    : Dir from gp;           -- curve tangent at this point
47             Norm   : Dir from gp;           -- surface normal at this point 
48             MaxD, MinD : Dir from gp;       -- surface principal directions at this point     
49             MaxCurv, MinCurv : in Real );   -- curvatures on surface at this point  
50         ---Purpose: Initialize  a  Surface Transition with the local
51         --          description of the intersection curve and of the 
52         --          reference surface.
53         --          PREQUESITORY : Norm oriented OUTSIDE "geometric matter"
54     
55     Reset ( me   : in out;
56             Tgt  : Dir from gp;    
57             Norm : Dir from gp );     
58         ---Purpose: Initialize  a  Surface Transition  with the  local
59         --          description of a straight line.
60
61     Compare(me  : in out; 
62             Tole : Real;                -- Cosine tolerance
63             Norm : Dir from gp;         -- surface normal oriented at this point 
64             MaxD, MinD : Dir from gp;   -- surface principal directions at this point    
65             MaxCurv, MinCurv : in Real; -- curvatures on surface at this point 
66             S : Orientation from TopAbs;
67             O : Orientation from TopAbs );     
68         ---Purpose: Add a face element to the boundary.
69         --          
70         --          - S defines topological orientation for the face :
71         --          S FORWARD means: along the intersection curve on the
72         --          reference surface, transition states while crossing
73         --          the face are OUT,IN.
74         --          S REVERSED means states are IN,OUT. 
75         --          S INTERNAL means states are IN,IN.
76         --          
77         --          - O defines curve's position on face :
78         --          O FORWARD means the face is before the intersection
79         --          O REVERSED means the face is AFTER
80         --          O INTERNAL means the curve intersection is in the face.
81         --          PREQUESITORY : Norm oriented OUTSIDE "geometric matter"
82
83     Compare(me : in out;
84             Tole : Real;        
85             Norm : Dir from gp;    
86             S : Orientation from TopAbs;
87             O : Orientation from TopAbs);    
88         ---Purpose: Add a plane or a cylindric face to the boundary.     
89             
90     StateBefore(me) returns State from TopAbs;
91         ---Purpose: Returns the state of the reference surface before 
92         --          the interference, this is the position relative to 
93         --          the surface of a  point very close to the intersection
94         --          on the negative side of the tangent.
95         
96     StateAfter(me) returns State from TopAbs;
97         ---Purpose: Returns the state of the reference surface after
98         --          interference, this is the position relative to the
99         --          surface of a point very  close to the intersection
100         --          on the positive side of the tangent.
101
102     --
103     --  Private :
104     --          
105     
106     UpdateReference(me : in out;
107                     Tole : Real;
108                     isInfRef : Boolean;
109                     CosInf, CosSup : in out Real;
110                     Tran : Orientation from TopAbs;
111                     TranRef : in out Orientation from TopAbs) is private;
112
113     ComputeCos(me;
114                Tole : Real;                 -- cosinus tolerance
115                Norm : Dir from gp;          -- face normal      
116                O : Orientation from TopAbs; -- intersection position on face
117                isleft : out Boolean) returns Real is private;
118
119     GetBefore(myclass;
120               Tran : Orientation from TopAbs)
121      returns State from TopAbs;
122                                
123     GetAfter(myclass;
124              Tran : Orientation from TopAbs)
125      returns State from TopAbs;
126
127 fields
128
129     -- local reference input data :
130     myTgt   : Dir from gp;   -- intersection curve tangent 
131     myNorm  : Dir from gp;   -- reference surface normal
132     beafter : Dir from gp;   -- direction (Before, After) on reference surface.
133     myCurvRef : Real;        -- for the reference surface
134
135     -- local data for boundary faces :
136     myAng  : Array2OfReal from TColStd;
137     myCurv : Array2OfReal from TColStd;    
138     myOri : Array2OfOrientation from TopTrans;  
139     
140     -- flag for touch case (eap Mar 25 2002)
141     myTouchFlag : Boolean from Standard;
142
143 end SurfaceTransition;
144
145