1 // Created on: 1995-07-17 2 // Created by: Modelistation 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 18 #include <Adaptor2d_Curve2d.hxx> 19 #include <Contap_HCurve2dTool.hxx> 20 #include <Geom2d_BezierCurve.hxx> 21 #include <Geom2d_BSplineCurve.hxx> 22 #include <gp_Pnt2d.hxx> 23 #include <gp_Vec2d.hxx> 24 #include <Standard_DomainError.hxx> 25 #include <Standard_NoSuchObject.hxx> 26 #include <Standard_OutOfRange.hxx> 27 28 //============================================================ NbSamples(const Handle (Adaptor2d_Curve2d)& C,const Standard_Real U0,const Standard_Real U1)29Standard_Integer Contap_HCurve2dTool::NbSamples (const Handle(Adaptor2d_Curve2d)& C, 30 const Standard_Real U0, 31 const Standard_Real U1) 32 { 33 Standard_Real nbs = 10.0; 34 switch (C->GetType()) 35 { 36 case GeomAbs_Line: 37 nbs = 2.; 38 break; 39 case GeomAbs_BezierCurve: 40 nbs = 3. + C->NbPoles(); 41 break; 42 case GeomAbs_BSplineCurve: 43 nbs = C->NbKnots(); 44 nbs*= C->Degree(); 45 nbs*= C->LastParameter()- C->FirstParameter(); 46 nbs/= U1-U0; 47 if(nbs < 2.0) nbs = 2.; 48 break; 49 default: 50 break; 51 } 52 if (nbs>50.) 53 nbs = 50.; 54 return((Standard_Integer)nbs); 55 } 56