1 // File: BRepExtrema_ExtCC.cxx
2 // Created: Wed Dec 15 16:48:53 1993
3 // Author: Christophe MARION
6 #include <BRepExtrema_ExtCC.ixx>
7 #include <BRep_Tool.hxx>
8 #include <StdFail_NotDone.hxx>
9 #include <Standard_Failure.hxx>
10 #include <Extrema_POnCurv.hxx>
11 #include <BRepAdaptor_Curve.hxx>
12 #include <BRepAdaptor_HCurve.hxx>
15 //=======================================================================
16 //function : BRepExtrema_ExtCC
18 //=======================================================================
20 BRepExtrema_ExtCC::BRepExtrema_ExtCC()
24 //=======================================================================
25 //function : BRepExtrema_ExtCC
27 //=======================================================================
29 BRepExtrema_ExtCC::BRepExtrema_ExtCC
30 (const TopoDS_Edge& E1,
31 const TopoDS_Edge& E2)
37 //=======================================================================
38 //function : Initialize
40 //=======================================================================
42 void BRepExtrema_ExtCC::Initialize(const TopoDS_Edge& E2)
45 BRepAdaptor_Curve Curv(E2);
46 myHC = new BRepAdaptor_HCurve(Curv);
47 BRep_Tool::Range(E2,V1,V2);
48 myExtrem.SetCurve (2, myHC->Curve(),V1,V2);
51 //=======================================================================
54 //=======================================================================
56 void BRepExtrema_ExtCC::Perform(const TopoDS_Edge& E1)
59 BRepAdaptor_Curve Curv(E1);
60 Handle(BRepAdaptor_HCurve) HC = new BRepAdaptor_HCurve(Curv);
61 BRep_Tool::Range(E1,U1,U2);
62 myExtrem.SetCurve (1, HC->Curve(), U1, U2);
66 //=======================================================================
69 //=======================================================================
71 Standard_Boolean BRepExtrema_ExtCC::IsDone()const
73 return myExtrem.IsDone();
76 //=======================================================================
79 //=======================================================================
81 Standard_Integer BRepExtrema_ExtCC::NbExt() const
83 return myExtrem.NbExt();
86 //=======================================================================
89 //=======================================================================
91 Standard_Boolean BRepExtrema_ExtCC::IsParallel() const
93 return myExtrem.IsParallel();
96 //=======================================================================
97 //function : SquareDistance
99 //=======================================================================
101 Standard_Real BRepExtrema_ExtCC::SquareDistance
102 (const Standard_Integer N) const
104 return myExtrem.SquareDistance(N);
107 //=======================================================================
108 //function : ParameterOnE1
110 //=======================================================================
112 Standard_Real BRepExtrema_ExtCC::ParameterOnE1
113 (const Standard_Integer N) const
115 Extrema_POnCurv POnE1, POnE2;
116 myExtrem.Points(N, POnE1, POnE2);
117 return POnE1.Parameter();
120 //=======================================================================
121 //function : PointOnE1
123 //=======================================================================
125 gp_Pnt BRepExtrema_ExtCC::PointOnE1
126 (const Standard_Integer N) const
128 Extrema_POnCurv POnE1, POnE2;
129 myExtrem.Points(N, POnE1, POnE2);
130 gp_Pnt P = POnE1.Value();
134 //=======================================================================
135 //function : ParameterOnE2
137 //=======================================================================
139 Standard_Real BRepExtrema_ExtCC::ParameterOnE2
140 (const Standard_Integer N) const
142 Extrema_POnCurv POnE1, POnE2;
143 myExtrem.Points(N, POnE1, POnE2);
144 return POnE2.Parameter();
147 //=======================================================================
148 //function : PointOnE2
150 //=======================================================================
152 gp_Pnt BRepExtrema_ExtCC::PointOnE2
153 (const Standard_Integer N) const
155 Extrema_POnCurv POnE1, POnE2;
156 myExtrem.Points(N, POnE1, POnE2);
157 gp_Pnt P = POnE2.Value();
162 //=======================================================================
163 //function : TrimmedSquareDistances
165 //=======================================================================
167 void BRepExtrema_ExtCC::TrimmedSquareDistances
168 (Standard_Real& dist11,
169 Standard_Real& dist12,
170 Standard_Real& dist21,
171 Standard_Real& dist22,
177 myExtrem.TrimmedSquareDistances(dist11,dist12,dist21, dist22,
178 pnt11,pnt12, pnt21, pnt22);