1 // Created on: 1991-10-10 2 // Created by: Jean Claude VAUTHIER 3 // Copyright (c) 1991-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 #ifndef _Convert_EllipseToBSplineCurve_HeaderFile 18 #define _Convert_EllipseToBSplineCurve_HeaderFile 19 20 #include <Standard.hxx> 21 #include <Standard_DefineAlloc.hxx> 22 #include <Standard_Handle.hxx> 23 24 #include <Convert_ConicToBSplineCurve.hxx> 25 #include <Convert_ParameterisationType.hxx> 26 #include <Standard_Real.hxx> 27 class Standard_DomainError; 28 class gp_Elips2d; 29 30 31 32 //! This algorithm converts a ellipse into a rational B-spline curve. 33 //! The ellipse is represented an Elips2d from package gp with 34 //! the parametrization : 35 //! P (U) = 36 //! Loc + (MajorRadius * Cos(U) * Xdir + MinorRadius * Sin(U) * Ydir) 37 //! where Loc is the center of the ellipse, Xdir and Ydir are the 38 //! normalized directions of the local cartesian coordinate system of 39 //! the ellipse. The parametrization range is U [0, 2PI]. 40 //! KeyWords : 41 //! Convert, Ellipse, BSplineCurve, 2D . 42 class Convert_EllipseToBSplineCurve : public Convert_ConicToBSplineCurve 43 { 44 public: 45 46 DEFINE_STANDARD_ALLOC 47 48 49 //! The equivalent B-spline curve has the same orientation 50 //! as the ellipse E. 51 Standard_EXPORT Convert_EllipseToBSplineCurve(const gp_Elips2d& E, const Convert_ParameterisationType Parameterisation = Convert_TgtThetaOver2); 52 53 54 //! The ellipse E is limited between the parametric values U1, U2. 55 //! The equivalent B-spline curve is oriented from U1 to U2 and has 56 //! the same orientation as E. 57 //! 58 //! Raised if U1 = U2 or U1 = U2 + 2.0 * Pi 59 Standard_EXPORT Convert_EllipseToBSplineCurve(const gp_Elips2d& E, const Standard_Real U1, const Standard_Real U2, const Convert_ParameterisationType Parameterisation = Convert_TgtThetaOver2); 60 61 62 63 64 protected: 65 66 67 68 69 70 private: 71 72 73 74 75 76 }; 77 78 79 80 81 82 83 84 #endif // _Convert_EllipseToBSplineCurve_HeaderFile 85