1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 // The content of this file is subject to the Open CASCADE Technology Public
5 // License Version 6.5 (the "License"). You may not use the content of this file
6 // except in compliance with the License. Please obtain a copy of the License
7 // at http://www.opencascade.org and read it completely before using this file.
9 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 // The Original Code and all software distributed under the License is
13 // distributed on an "AS IS" basis, without warranty of any kind, and the
14 // Initial Developer hereby disclaims all such warranties, including without
15 // limitation, any warranties of merchantability, fitness for a particular
16 // purpose or non-infringement. Please see the License for the specific terms
17 // and conditions governing the rights and limitations under the License.
19 #include <GCPnts_QuasiUniformDeflection.ixx>
20 #include <StdFail_NotDone.hxx>
21 #include <Standard_DomainError.hxx>
22 #include <Standard_OutOfRange.hxx>
23 #include <Standard_ConstructionError.hxx>
24 #include <Standard_NotImplemented.hxx>
25 #include <gp_Pnt2d.hxx>
26 #include <gp_Vec2d.hxx>
28 // mask the return of a Adaptor2d_Curve2d as a gp_Pnt
29 static gp_Pnt Value(const Adaptor3d_Curve & C,
30 const Standard_Real Parameter)
32 return C.Value(Parameter) ;
34 static gp_Pnt Value(const Adaptor2d_Curve2d & C,
35 const Standard_Real Parameter)
38 gp_Pnt2d a2dPoint(C.Value(Parameter));
39 aPoint.SetCoord(a2dPoint.X(),a2dPoint.Y(),0.);
43 static void D1(const Adaptor3d_Curve & C,
44 const Standard_Real Parameter,
51 static void D1(const Adaptor2d_Curve2d & C,
52 const Standard_Real Parameter,
58 C.D1(Parameter,a2dPoint,a2dVec);
59 P.SetCoord(a2dPoint.X(),a2dPoint.Y(),0.);
60 V.SetCoord(a2dVec.X(),a2dVec.Y(),0.);
64 //=======================================================================
67 //=======================================================================
69 gp_Pnt GCPnts_QuasiUniformDeflection::Value
70 (const Standard_Integer Index) const
72 StdFail_NotDone_Raise_if(!myDone,
73 "GCPnts_QuasiUniformAbscissa::Parameter()");
74 return myPoints.Value(Index) ;
76 //=======================================================================
77 //function : GCPnts_QuasiUniformDeflection
79 //=======================================================================
81 GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection ()
82 :myDone(Standard_False),myCont(GeomAbs_C1)
86 #include <Geom_BezierCurve.hxx>
87 #include <Geom_BSplineCurve.hxx>
89 #define TheCurve Adaptor3d_Curve
90 #define Handle_TheBezierCurve Handle(Geom_BezierCurve)
91 #define Handle_TheBSplineCurve Handle(Geom_BSplineCurve)
93 #include <GCPnts_QuasiUniformDeflection.gxx>
96 #undef Handle_TheBezierCurve
97 #undef Handle_TheBSplineCurve
99 #include <Geom2d_BezierCurve.hxx>
100 #include <Geom2d_BSplineCurve.hxx>
102 #define TheCurve Adaptor2d_Curve2d
103 #define Handle_TheBezierCurve Handle(Geom2d_BezierCurve)
104 #define Handle_TheBSplineCurve Handle(Geom2d_BSplineCurve)
106 #include <GCPnts_QuasiUniformDeflection.gxx>