1 // Created on: 1992-10-14
2 // Created by: Christophe MARION
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #ifndef _HLRBRep_TheInterferenceOfInterCSurf_HeaderFile
18 #define _HLRBRep_TheInterferenceOfInterCSurf_HeaderFile
20 #include <Standard.hxx>
21 #include <Standard_DefineAlloc.hxx>
22 #include <Standard_Handle.hxx>
24 #include <Standard_Boolean.hxx>
25 #include <Standard_Integer.hxx>
26 #include <Intf_Interference.hxx>
27 #include <Intf_Array1OfLin.hxx>
28 #include <Standard_Real.hxx>
29 class HLRBRep_ThePolygonOfInterCSurf;
30 class HLRBRep_ThePolygonToolOfInterCSurf;
31 class HLRBRep_ThePolyhedronOfInterCSurf;
32 class HLRBRep_ThePolyhedronToolOfInterCSurf;
34 class Bnd_BoundSortBox;
40 class HLRBRep_TheInterferenceOfInterCSurf : public Intf_Interference
47 //! Constructs an empty interference between Polygon and
49 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf();
51 //! Constructs and computes an interference between the Polygon
52 //! and the Polyhedron.
53 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
55 //! Constructs and computes an interference between the
56 //! Straight Line and the Polyhedron.
57 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const gp_Lin& theLin, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
59 //! Constructs and computes an interference between the
60 //! Straight Lines and the Polyhedron.
61 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const Intf_Array1OfLin& theLins, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
63 //! Computes an interference between the Polygon and the
65 Standard_EXPORT void Perform (const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
67 //! Computes an interference between the Straight Line and the
69 Standard_EXPORT void Perform (const gp_Lin& theLin, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
71 //! Computes an interference between the Straight Lines and
73 Standard_EXPORT void Perform (const Intf_Array1OfLin& theLins, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
75 //! Constructs and computes an interference between the Polygon
76 //! and the Polyhedron.
77 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
79 //! Constructs and computes an interference between the
80 //! Straight Line and the Polyhedron.
81 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const gp_Lin& theLin, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
83 //! Constructs and computes an interference between the
84 //! Straight Lines and the Polyhedron.
85 Standard_EXPORT HLRBRep_TheInterferenceOfInterCSurf(const Intf_Array1OfLin& theLins, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
87 //! Computes an interference between the Polygon and the
89 Standard_EXPORT void Perform (const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
91 //! Computes an interference between the Straight Line and the
93 Standard_EXPORT void Perform (const gp_Lin& theLin, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
95 //! Computes an interference between the Straight Lines and
97 Standard_EXPORT void Perform (const Intf_Array1OfLin& theLins, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
99 //! Compares the boundings between the segment of <thePolyg> and
100 //! the facets of <thePolyh>.
101 Standard_EXPORT void Interference (const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, Bnd_BoundSortBox& theBoundSB);
103 //! Compares the boundings between the segment of <thePolyg> and
104 //! the facets of <thePolyh>.
105 Standard_EXPORT void Interference (const HLRBRep_ThePolygonOfInterCSurf& thePolyg, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
119 //! Computes the intersection between the segment <BegO><EndO>
120 //! and the triangle <TTri> of <thePolyh>.
121 Standard_EXPORT void Intersect (const gp_Pnt& BegO, const gp_Pnt& EndO, const Standard_Boolean Infinite, const Standard_Integer TTri, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh);
123 //! Computes the intersection between the segment <BegO><EndO>
124 //! and the triangle <TTri> of <thePolyh>.
125 Standard_EXPORT void Intersect (const gp_Pnt& BegO, const gp_Pnt& EndO, const Standard_Boolean Infinite, const Standard_Integer TTri, const HLRBRep_ThePolyhedronOfInterCSurf& thePolyh, const gp_XYZ& TriNormal, const Standard_Real TriDp, const Standard_Real dBegTri, const Standard_Real dEndTri);
128 Standard_Boolean BeginOfClosedPolygon;
129 Standard_Integer iLin;
140 #endif // _HLRBRep_TheInterferenceOfInterCSurf_HeaderFile