1 // Copyright (C) 2015-2016 CEA/DEN, EDF R&D, OPEN CASCADE
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #include <GEOMUtils_TrsfCurve2d.hxx>
22 #include <GEOMUtils_HTrsfCurve2d.hxx>
24 //=======================================================================
25 //function : TrsfCurve2d
27 //=======================================================================
28 GEOMUtils::TrsfCurve2d::TrsfCurve2d(const Handle(Geom2d_Curve) &theCurve,
29 const Trsf2d &theTrsf)
35 //=======================================================================
36 //function : TrsfCurve2d
38 //=======================================================================
39 GEOMUtils::TrsfCurve2d::TrsfCurve2d(const Handle(Geom2d_Curve) &theCurve,
40 const Standard_Real theUFirst,
41 const Standard_Real theULast,
42 const Trsf2d &theTrsf)
43 : myCurve (theCurve, theUFirst, theULast),
48 //=======================================================================
49 //function : FirstParameter
51 //=======================================================================
52 Standard_Real GEOMUtils::TrsfCurve2d::FirstParameter() const
54 return myCurve.FirstParameter();
57 //=======================================================================
58 //function : LastParameter
60 //=======================================================================
61 Standard_Real GEOMUtils::TrsfCurve2d::LastParameter() const
63 return myCurve.LastParameter();
66 //=======================================================================
69 //=======================================================================
70 const Handle(Geom2d_Curve) &GEOMUtils::TrsfCurve2d::Curve() const
72 return myCurve.Curve();
75 //=======================================================================
78 //=======================================================================
79 GeomAbs_CurveType GEOMUtils::TrsfCurve2d::GetType() const
81 return GeomAbs_OtherCurve;
84 //=======================================================================
87 //=======================================================================
88 void GEOMUtils::TrsfCurve2d::Load(const Handle(Geom2d_Curve) &C)
93 //=======================================================================
96 //=======================================================================
97 void GEOMUtils::TrsfCurve2d::Load(const Handle(Geom2d_Curve) &C,
98 const Standard_Real UFirst,
99 const Standard_Real ULast)
101 myCurve.Load(C, UFirst, ULast);
104 //=======================================================================
105 //function : Continuity
107 //=======================================================================
108 GeomAbs_Shape GEOMUtils::TrsfCurve2d::Continuity() const
110 return myCurve.Continuity();
113 //=======================================================================
114 //function : NbIntervals
116 //=======================================================================
117 Standard_Integer GEOMUtils::TrsfCurve2d::NbIntervals
118 (const GeomAbs_Shape S) const
120 return myCurve.NbIntervals(S);
123 //=======================================================================
124 //function : Intervals
126 //=======================================================================
127 void GEOMUtils::TrsfCurve2d::Intervals(TColStd_Array1OfReal &T,
128 const GeomAbs_Shape S) const
130 myCurve.Intervals(T, S);
133 //=======================================================================
136 //=======================================================================
137 Handle(Adaptor2d_HCurve2d) GEOMUtils::TrsfCurve2d::Trim
138 (const Standard_Real First, const Standard_Real Last,
139 const Standard_Real /*Tol*/) const
141 Handle(Geom2d_Curve) aCurve = myCurve.Curve();
142 #if OCC_VERSION_MAJOR < 7
143 GEOMUtils::Handle(HTrsfCurve2d) aAHCurve =
145 Handle(GEOMUtils::HTrsfCurve2d) aAHCurve =
147 new GEOMUtils::HTrsfCurve2d(aCurve, First, Last, myTrsf);
152 //=======================================================================
153 //function : IsClosed
155 //=======================================================================
156 Standard_Boolean GEOMUtils::TrsfCurve2d::IsClosed() const
158 return myCurve.IsClosed();
161 //=======================================================================
162 //function : IsPeriodic
164 //=======================================================================
165 Standard_Boolean GEOMUtils::TrsfCurve2d::IsPeriodic() const
167 return myCurve.IsPeriodic();
170 //=======================================================================
173 //=======================================================================
174 Standard_Real GEOMUtils::TrsfCurve2d::Period() const
176 return myCurve.Period();
179 //=======================================================================
182 //=======================================================================
183 gp_Pnt2d GEOMUtils::TrsfCurve2d::Value(const Standard_Real U) const
185 gp_Pnt2d aPnt = myCurve.Value(U);
187 myTrsf.TransformD0(aPnt);
192 //=======================================================================
195 //=======================================================================
196 void GEOMUtils::TrsfCurve2d::D0(const Standard_Real U, gp_Pnt2d &P) const
199 myTrsf.TransformD0(P);
202 //=======================================================================
205 //=======================================================================
206 void GEOMUtils::TrsfCurve2d::D1(const Standard_Real U,
207 gp_Pnt2d &P, gp_Vec2d &V) const
210 myTrsf.TransformD1(P, V);
213 //=======================================================================
216 //=======================================================================
217 void GEOMUtils::TrsfCurve2d::D2(const Standard_Real U, gp_Pnt2d &P,
218 gp_Vec2d &V1, gp_Vec2d &V2) const
220 myCurve.D2(U, P, V1, V2);
221 myTrsf.TransformD2(P, V1, V2);
224 //=======================================================================
227 //=======================================================================
228 void GEOMUtils::TrsfCurve2d::D3(const Standard_Real U, gp_Pnt2d &P,
229 gp_Vec2d &V1, gp_Vec2d &V2, gp_Vec2d &V3) const
231 myCurve.D3(U, P, V1, V2, V3);
232 myTrsf.TransformD3(P, V1, V2, V3);
235 //=======================================================================
238 //=======================================================================
239 gp_Vec2d GEOMUtils::TrsfCurve2d::DN(const Standard_Real U,
240 const Standard_Integer N) const
242 gp_Pnt2d aPnt = myCurve.Value(U);
243 gp_Vec2d aVec = myCurve.DN(U, N);
245 myTrsf.TransformD1(aPnt, aVec);
249 //=======================================================================
250 //function : Resolution
252 //=======================================================================
253 Standard_Real GEOMUtils::TrsfCurve2d::Resolution(const Standard_Real Ruv) const
255 return Precision::Parametric(Ruv);
258 //=======================================================================
261 //=======================================================================
262 gp_Lin2d GEOMUtils::TrsfCurve2d::Line() const
264 Standard_NoSuchObject::Raise();
269 //=======================================================================
272 //=======================================================================
273 gp_Circ2d GEOMUtils::TrsfCurve2d::Circle() const
275 Standard_NoSuchObject::Raise();
280 //=======================================================================
283 //=======================================================================
284 gp_Elips2d GEOMUtils::TrsfCurve2d::Ellipse() const
286 Standard_NoSuchObject::Raise();
291 //=======================================================================
292 //function : Hyperbola
294 //=======================================================================
295 gp_Hypr2d GEOMUtils::TrsfCurve2d::Hyperbola() const
297 Standard_NoSuchObject::Raise();
302 //=======================================================================
303 //function : Parabola
305 //=======================================================================
306 gp_Parab2d GEOMUtils::TrsfCurve2d::Parabola() const
308 Standard_NoSuchObject::Raise();
313 //=======================================================================
316 //=======================================================================
317 Standard_Integer GEOMUtils::TrsfCurve2d::Degree() const
319 Standard_NoSuchObject::Raise();
324 //=======================================================================
325 //function : IsRational
327 //=======================================================================
328 Standard_Boolean GEOMUtils::TrsfCurve2d::IsRational() const
330 return Standard_False;
333 //=======================================================================
336 //=======================================================================
337 Standard_Integer GEOMUtils::TrsfCurve2d::NbPoles() const
339 Standard_NoSuchObject::Raise();
344 //=======================================================================
347 //=======================================================================
348 Standard_Integer GEOMUtils::TrsfCurve2d::NbKnots() const
350 Standard_NoSuchObject::Raise();
355 //=======================================================================
358 //=======================================================================
359 Handle(Geom2d_BezierCurve) GEOMUtils::TrsfCurve2d::Bezier() const
361 Standard_NoSuchObject::Raise();
366 //=======================================================================
369 //=======================================================================
370 Handle(Geom2d_BSplineCurve) GEOMUtils::TrsfCurve2d::BSpline() const
372 Standard_NoSuchObject::Raise();
377 //=======================================================================
378 //function : NbSamples
380 //=======================================================================
381 Standard_Integer GEOMUtils::TrsfCurve2d::NbSamples() const
383 return myCurve.NbSamples();