24ed10cb45e4536c5ea00cbbd485570f13df818c
[occt.git] / src / GeomInt / GeomInt_IntSS.lxx
1 // Created on: 1995-01-27
2 // Created by: Jacques GOUSSARD
3 // Copyright (c) 1995-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 #include <IntPatch_Point.hxx>
18
19
20 //=======================================================================
21 //function : GeomInt_IntSS
22 //purpose  : 
23 //=======================================================================
24 inline GeomInt_IntSS::GeomInt_IntSS ()
25  : myNbrestr(0),
26    myTolReached2d(0.0),
27    myTolReached3d(0.0),
28    myTolCheck(0.0000001),
29    myTolAngCheck(0.3)
30 {}
31
32 //=======================================================================
33 //function : GeomInt_IntSS
34 //purpose  : 
35 //=======================================================================
36   inline GeomInt_IntSS::GeomInt_IntSS (const Handle(Geom_Surface)& S1,
37                                        const Handle(Geom_Surface)& S2,
38                                        const Standard_Real Tol,
39                                        const Standard_Boolean Approx,
40                                        const Standard_Boolean ApproxS1,
41                                        const Standard_Boolean ApproxS2)
42  : myNbrestr(0),
43    myTolReached2d(0.0),
44    myTolReached3d(0.0),
45    myTolCheck(0.0000001),
46    myTolAngCheck(0.3)
47 {
48   Perform(S1,S2,Tol,Approx,ApproxS1,ApproxS2);
49 }
50
51 //=======================================================================
52 //function : Perform
53 //purpose  : Intersection of Adapted surfaces
54 //=======================================================================
55   inline void GeomInt_IntSS::Perform(const Handle(GeomAdaptor_HSurface)& HS1,
56                                      const Handle(GeomAdaptor_HSurface)& HS2,
57                                      const Standard_Real Tol,
58                                      const Standard_Boolean Approx,
59                                      const Standard_Boolean ApproxS1,
60                                      const Standard_Boolean ApproxS2)
61 {
62   myHS1 = HS1;
63   myHS2 = HS2;
64   InternalPerform(Tol,Approx,ApproxS1,ApproxS2,Standard_False,0.,0.,0.,0.);
65 }
66
67 //=======================================================================
68 //function : Perform
69 //purpose  : Intersection of Adapted surfaces with a Starting Point
70 //=======================================================================
71   inline void GeomInt_IntSS::Perform(const Handle(GeomAdaptor_HSurface)& HS1,
72                                      const Handle(GeomAdaptor_HSurface)& HS2,
73                                      const Standard_Real Tol,
74                                      const Standard_Real U1, const Standard_Real V1,
75                                      const Standard_Real U2, const Standard_Real V2,
76                                      const Standard_Boolean Approx,
77                                      const Standard_Boolean ApproxS1,
78                                      const Standard_Boolean ApproxS2)
79 {
80   myHS1 = HS1;
81   myHS2 = HS2;
82   InternalPerform(Tol,Approx,ApproxS1,ApproxS2,Standard_True,U1,V1,U2,V2);
83 }
84
85 //=======================================================================
86 //function : IsDone
87 //purpose  : 
88 //=======================================================================
89   inline Standard_Boolean GeomInt_IntSS::IsDone () const
90 {
91   return myIntersector.IsDone();
92 }
93
94 //=======================================================================
95 //function : TolReached2d
96 //purpose  : 
97 //=======================================================================
98   inline Standard_Real GeomInt_IntSS::TolReached2d () const
99 {
100   return myTolReached2d;
101 }
102
103 //=======================================================================
104 //function : TolReached3d
105 //purpose  : 
106 //=======================================================================
107   inline Standard_Real GeomInt_IntSS::TolReached3d () const
108 {
109   return myTolReached3d;
110 }
111
112 //=======================================================================
113 //function : NbLines
114 //purpose  : 
115 //=======================================================================
116   inline Standard_Integer GeomInt_IntSS::NbLines () const
117 {
118   return sline.Length()-myNbrestr;
119 }
120
121 //=======================================================================
122 //function : NbBoundaries
123 //purpose  : 
124 //=======================================================================
125   inline Standard_Integer GeomInt_IntSS::NbBoundaries () const
126 {
127   StdFail_NotDone_Raise_if(!myIntersector.IsDone(),"");
128   return myNbrestr;
129 }
130
131 //=======================================================================
132 //function : NbPoints
133 //purpose  : 
134 //=======================================================================
135   inline Standard_Integer GeomInt_IntSS::NbPoints () const
136 {
137   return myIntersector.NbPnts();
138 }
139
140 //=======================================================================
141 //function : Point
142 //purpose  : 
143 //=======================================================================
144   inline gp_Pnt GeomInt_IntSS::Point (const Standard_Integer Index) const
145 {
146   return myIntersector.Point(Index).Value();
147 }