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