a0f57fe9898c878b6390ecb29df3535150c7b8e1
[occt.git] / src / BRepMAT2d / BRepMAT2d_BisectingLocus.cdl
1 -- Created on: 1993-07-06
2 -- Created by: Yves FRICAUD
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class BisectingLocus from BRepMAT2d 
18
19         ---Purpose  : BisectingLocus generates and contains the Bisecting_Locus
20         --            of a set of lines from Geom2d, defined by <ExploSet>.
21         --             
22         --            If the set of lines contains closed lines:
23         --            ------------------------------------------
24         --            These lines cut the plane  in areas. 
25         --            One map can  be  computed for each area.
26         --  
27         --            Bisecting locus computes a map in an area. 
28         --            The area is defined by a side (MAT_Left,MAT_Right) 
29         --            on one of the closed lines.
30         -- 
31         --            If the set of lines contains only open lines:
32         --            --------------------------------------------
33         --            the map recovers all the plane.
34         --  
35         --  Warning: Assume the orientation of the   closed  lines  are
36         --          compatible. 
37         --          
38         --          Assume the explo contains only lines located in the 
39         --          area where the bisecting locus will be computed.
40         --          
41         --          Assume a line don't cross itself or an other line.
42         --
43         --  Remark: 
44         --         the  curves  coming   from   the  explorer can   be
45         --         decomposed in different parts. It  the  case for the
46         --         curves other than circles or lines.
47         --         
48         --         The map of bisecting  locus is described by a graph.
49         --         - The  BasicsElements  correspond  to elements on
50         --           the figure described by the Explorer from BRepMAT2d.
51         --         - The Arcs correspond to the bisectors.
52         --         - The Nodes are the extremities of the arcs.
53
54 uses
55     Graph                    from MAT,
56     Arc                      from MAT,
57     BasicElt                 from MAT,
58     Node                     from MAT,
59     Side                     from MAT,
60     DataMapOfIntegerBasicElt from MAT,
61     DataMapOfBiIntInteger    from MAT2d,           
62     Bisec                    from Bisector,
63     Geometry                 from Geom2d,
64     Pnt2d                    from gp,
65     Tool2d                   from MAT2d,
66         Explorer                 from BRepMAT2d
67     
68 is
69     Create returns BisectingLocus from BRepMAT2d;
70     
71 ---Category: Construction.
72
73     Compute (me        : in out ; 
74              anExplo   : in out Explorer from BRepMAT2d;
75              LineIndex :        Integer       = 1;
76              aSide     :        Side from MAT = MAT_Left )
77         --- Purpose : Computation of the Bisector_Locus in a set of Lines 
78         --            defined in <anExplo>.
79         --            The bisecting locus are computed on the side <aSide>
80         --            from the line <LineIndex> in <anExplo>. 
81     is static;
82     
83 ---Category: Querying.
84
85     IsDone (me) returns Boolean from Standard
86         ---Purpose: Returns True if Compute has succeeded.
87     is static;
88
89     Graph(me) returns Graph from MAT
90         --- Purpose : Returns <theGraph> of <me>.
91     is static;
92     
93     NumberOfContours (me)
94         ---Purpose: Returns the number of contours.
95     returns Integer from Standard
96     is static;
97     
98     NumberOfElts( me ; IndLine : Integer) 
99         ---Purpose: Returns the number of BasicElts on the line
100         --          <IndLine>.
101     returns Integer from Standard
102     is static;
103
104     NumberOfSections (me; IndLine : Integer; Index : Integer)
105         ---Purpose: Returns the number of sections of a curve.
106         --          this curve is the Indexth curve in the IndLineth contour
107         --          given by anExplo. 
108         --          
109     returns Integer from Standard
110     is static;
111     
112     BasicElt ( me ; IndLine : Integer ; Index : Integer)
113         ---Purpose: Returns the BasicElts located at the position
114         --          <Index> on the contour designed by <IndLine>.
115         --  Remark: the BasicElts on a contour are sorted.
116         --                    
117     returns BasicElt from MAT
118     is static;
119     
120     GeomElt(me ; aBasicElt : BasicElt from MAT) 
121         --- Purpose : Returns the geometry linked to the <BasicElt>.
122     returns Geometry from Geom2d
123     is static;
124     
125     GeomElt(me ; aNode : Node from MAT) 
126         --- Purpose : Returns the geometry of  type <gp> linked to
127         --            the <Node>.
128     returns Pnt2d from gp
129     is static;
130     
131     GeomBis(me ; anArc : Arc from MAT ; Reverse :in out Boolean from Standard) 
132         --- Purpose  : Returns the  geometry of type <Bissec> 
133         --             linked   to the arc <ARC>. 
134         --             <Reverse> is False when the FirstNode of <anArc>
135         --             correspond to the first point of geometry.
136         --             
137     returns Bisec from Bisector
138     is static;
139     
140 ---Category: private methods.
141     
142     Fusion(me : in out)
143     is static private;
144
145     RenumerationAndFusion
146        (me         : in out;
147         IndexLine  : Integer;
148         LengthLine : Integer;
149         IndexLast  : in out Integer;
150         NewMap     : in out DataMapOfIntegerBasicElt from MAT) 
151     is static private;
152     
153 fields
154
155     theGraph    : Graph                 from MAT;
156     theTool     : Tool2d                from MAT2d;
157     isDone      : Boolean               from Standard;
158     nbSect      : DataMapOfBiIntInteger from MAT2d;
159     nbContours  : Integer               from Standard;  
160     
161 end BisectingLocus;
162
163