1 // File: HLRBRep_BCurveTool.cxx
2 // Created: Mon Jul 17 17:39:39 1995
3 // Author: Modelistation
4 // Copyright: OPEN CASCADE 2000
6 #include <HLRBRep_BCurveTool.ixx>
7 #include <GeomAbs_CurveType.hxx>
8 #include <GeomAbs_Shape.hxx>
9 #include <Handle_Geom_BezierCurve.hxx>
10 #include <Handle_Geom_BSplineCurve.hxx>
11 #include <TColStd_Array1OfReal.hxx>
12 #include <TColgp_Array1OfPnt.hxx>
15 //=======================================================================
16 //function : NbSamples
18 //=======================================================================
21 HLRBRep_BCurveTool::NbSamples (const BRepAdaptor_Curve& C,
22 const Standard_Real U0,
23 const Standard_Real U1)
25 GeomAbs_CurveType typC = C.GetType();
26 static Standard_Real nbsOther = 10.0;
27 Standard_Real nbs = nbsOther;
29 if(typC == GeomAbs_Line)
31 else if(typC == GeomAbs_BezierCurve)
32 nbs = 3 + C.NbPoles();
33 else if(typC == GeomAbs_BSplineCurve) {
36 nbs*= C.LastParameter()- C.FirstParameter();
42 return((Standard_Integer)nbs);
45 //=======================================================================
48 //=======================================================================
50 void HLRBRep_BCurveTool::Poles(const BRepAdaptor_Curve& C,
51 TColgp_Array1OfPnt& T)
53 if(C.GetType() == GeomAbs_BezierCurve)
55 else if(C.GetType() == GeomAbs_BSplineCurve)
56 C.BSpline()->Poles(T);
59 //=======================================================================
60 //function : PolesAndWeights
62 //=======================================================================
64 void HLRBRep_BCurveTool::PolesAndWeights(const BRepAdaptor_Curve& C,
65 TColgp_Array1OfPnt& T,
66 TColStd_Array1OfReal& W)
68 if(C.GetType() == GeomAbs_BezierCurve) {
69 const Handle(Geom_BezierCurve) HB = C.Bezier();
73 else if(C.GetType() == GeomAbs_BSplineCurve) {
74 const Handle(Geom_BSplineCurve) HB = C.BSpline();
80 //=======================================================================
83 //=======================================================================
85 Handle(Geom_BezierCurve)
86 HLRBRep_BCurveTool::Bezier (const BRepAdaptor_Curve& C)
87 { return(C.Bezier()); }
89 //=======================================================================
92 //=======================================================================
94 Handle(Geom_BSplineCurve)
95 HLRBRep_BCurveTool::BSpline (const BRepAdaptor_Curve& C)
96 { return(C.BSpline()); }