OCC22322 Improvement of Extrema performance
[occt.git] / src / BRepExtrema / BRepExtrema_ExtCC.hxx
1 // This file is generated by WOK (CPPExt).
2 // Please do not edit this file; modify original file instead.
3 // The copyright and license terms as defined for the original file apply to 
4 // this header file considered to be the "object code" form of the original source.
5
6 #ifndef _BRepExtrema_ExtCC_HeaderFile
7 #define _BRepExtrema_ExtCC_HeaderFile
8
9 #ifndef _Standard_HeaderFile
10 #include <Standard.hxx>
11 #endif
12 #ifndef _Standard_Macro_HeaderFile
13 #include <Standard_Macro.hxx>
14 #endif
15
16 #ifndef _Extrema_ExtCC_HeaderFile
17 #include <Extrema_ExtCC.hxx>
18 #endif
19 #ifndef _Handle_BRepAdaptor_HCurve_HeaderFile
20 #include <Handle_BRepAdaptor_HCurve.hxx>
21 #endif
22 #ifndef _Standard_Boolean_HeaderFile
23 #include <Standard_Boolean.hxx>
24 #endif
25 #ifndef _Standard_Integer_HeaderFile
26 #include <Standard_Integer.hxx>
27 #endif
28 #ifndef _Standard_Real_HeaderFile
29 #include <Standard_Real.hxx>
30 #endif
31 class BRepAdaptor_HCurve;
32 class TopoDS_Edge;
33 class gp_Pnt;
34
35
36 class BRepExtrema_ExtCC
37 {
38  public:
39
40   void* operator new(size_t,void* anAddress) 
41   {
42     return anAddress;
43   }
44   void* operator new(size_t size) 
45   {
46     return Standard::Allocate(size); 
47   }
48   void  operator delete(void *anAddress) 
49   {
50     if (anAddress) Standard::Free((Standard_Address&)anAddress); 
51   }
52   
53   Standard_EXPORT BRepExtrema_ExtCC()
54   {
55   }
56   //! It calculates all the distances. <br>
57   Standard_EXPORT BRepExtrema_ExtCC(const TopoDS_Edge& E1,const TopoDS_Edge& E2);
58
59   Standard_EXPORT void Initialize(const TopoDS_Edge& E2);
60   //! An exception is raised if the fields have not been initialized. <br>
61   Standard_EXPORT void Perform(const TopoDS_Edge& E1);
62   //! True if the distances are found. <br>
63   Standard_EXPORT Standard_Boolean IsDone() const
64   {
65     return myExtCC.IsDone();
66   }
67   //! Returns the number of extremum distances. <br>
68   Standard_EXPORT Standard_Integer NbExt() const
69   {
70     return myExtCC.NbExt();
71   }
72   //! Returns True if E1 and E2 are parallel. <br>
73   Standard_EXPORT Standard_Boolean IsParallel() const
74   {
75     return myExtCC.IsParallel();
76   }
77   //! Returns the value of the <N>th extremum square distance. <br>
78   Standard_EXPORT Standard_Real SquareDistance(const Standard_Integer N) const
79   {
80     return myExtCC.SquareDistance(N);
81   }
82   //! Returns the parameter on the first edge of the <N>th extremum distance. <br>
83   Standard_EXPORT Standard_Real ParameterOnE1(const Standard_Integer N) const;
84   //! Returns the Point of the <N>th extremum distance on the edge E1. <br>
85   Standard_EXPORT gp_Pnt PointOnE1(const Standard_Integer N) const;
86   //! Returns the parameter on the second edge of the <N>th extremum distance. <br>
87   Standard_EXPORT Standard_Real ParameterOnE2(const Standard_Integer N) const;
88   //! Returns the Point of the <N>th extremum distance on the edge E2. <br>
89   Standard_EXPORT gp_Pnt PointOnE2(const Standard_Integer N) const;
90   //! if the edges is a trimmed curve, <br>
91   //! dist11 is a square distance between the point on E1 <br>
92   //! of parameter FirstParameter and the point of <br>
93   //! parameter FirstParameter on E2. <br>
94   Standard_EXPORT void TrimmedSquareDistances(Standard_Real& dist11,Standard_Real& distP12,Standard_Real& distP21,Standard_Real& distP22,gp_Pnt& P11,gp_Pnt& P12,gp_Pnt& P21,gp_Pnt& P22) const;
95
96  private:
97
98   Extrema_ExtCC myExtCC;
99   Handle_BRepAdaptor_HCurve myHC;
100 };
101
102 #endif