1 // Created on: 1992-03-30
2 // Created by: Laurent BUCHARD
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
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.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
19 #include <gp_Pnt2d.hxx>
20 #include <gp_Vec2d.hxx>
21 #include <IntCurve_PConic.hxx>
22 #include <IntCurve_PConicTool.hxx>
24 //----------------------------------------------------------------------
25 gp_Pnt2d IntCurve_PConicTool::Value(const IntCurve_PConic& PConic,
26 const Standard_Real X) {
27 switch(PConic.TypeCurve()) {
30 return(ElCLib::LineValue(X,PConic.Axis2().XAxis()));
34 return(ElCLib::CircleValue(X,PConic.Axis2(),PConic.Param1()));
38 return(ElCLib::EllipseValue(X,PConic.Axis2(),
43 case GeomAbs_Parabola:
44 return(ElCLib::ParabolaValue(X,PConic.Axis2(),PConic.Param1()));
47 default: //-- case GeomAbs_Hyperbola:
48 return(ElCLib::HyperbolaValue(X,PConic.Axis2(),PConic.Param1(),
54 //----------------------------------------------------------------------
55 void IntCurve_PConicTool::D1(const IntCurve_PConic& PConic,
56 const Standard_Real U,
60 switch(PConic.TypeCurve()) {
63 ElCLib::LineD1(U,PConic.Axis2().XAxis(),Pt,Tan);
67 ElCLib::CircleD1(U,PConic.Axis2(),PConic.Param1(),Pt,Tan);
71 ElCLib::EllipseD1(U,PConic.Axis2(),PConic.Param1(),
72 PConic.Param2(),Pt,Tan);
75 case GeomAbs_Parabola:
76 ElCLib::ParabolaD1(U,PConic.Axis2(),PConic.Param1(),Pt,Tan);
79 case GeomAbs_Hyperbola:
80 ElCLib::HyperbolaD1(U,PConic.Axis2(),PConic.Param1(),
81 PConic.Param2(),Pt,Tan);
88 //----------------------------------------------------------------------
89 void IntCurve_PConicTool::D2(const IntCurve_PConic& PConic,
90 const Standard_Real U,
95 switch(PConic.TypeCurve()) {
98 Tan.SetCoord(0.0,0.0);
99 ElCLib::LineD1(U,PConic.Axis2().XAxis(),Pt,Tan);
103 ElCLib::CircleD2(U,PConic.Axis2(),PConic.Param1(),Pt,Tan,Norm);
106 case GeomAbs_Ellipse:
107 ElCLib::EllipseD2(U,PConic.Axis2(),PConic.Param1(),PConic.Param2(),
111 case GeomAbs_Parabola:
112 ElCLib::ParabolaD2(U,PConic.Axis2(),PConic.Param1(),Pt,Tan,Norm);
115 case GeomAbs_Hyperbola:
116 ElCLib::HyperbolaD2(U,PConic.Axis2(),PConic.Param1(),
117 PConic.Param2(),Pt,Tan,Norm);
125 Standard_Real IntCurve_PConicTool::EpsX(const IntCurve_PConic& PConic) {
126 return(PConic.EpsX());
129 Standard_Integer IntCurve_PConicTool::NbSamples(const IntCurve_PConic& PConic) {
130 return(PConic.Accuracy());
133 //Standard_Integer IntCurve_PConicTool::NbSamples(const IntCurve_PConic& PConic,const Standard_Real U0,const Standard_Real U1) {
134 Standard_Integer IntCurve_PConicTool::NbSamples(const IntCurve_PConic& PConic,const Standard_Real ,const Standard_Real ) {
135 return(PConic.Accuracy());