+const std::shared_ptr<GeomAPI_Pnt2d> GeomAPI_Circ2d::center() const
+{
+ if (!MY_CIRC2D)
+ return std::shared_ptr<GeomAPI_Pnt2d>();
+ const gp_Pnt2d& aCenter = MY_CIRC2D->Location();
+ return std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(aCenter.X(), aCenter.Y()));
+}
+
+double GeomAPI_Circ2d::radius() const
+{
+ if (!MY_CIRC2D)
+ return 0.0;
+ return MY_CIRC2D->Radius();
+}
+
+//=================================================================================================
+const bool GeomAPI_Circ2d::parameter(const std::shared_ptr<GeomAPI_Pnt2d> thePoint,
+ const double theTolerance,
+ double& theParameter) const
+{
+ Handle(Geom2d_Circle) aCurve = new Geom2d_Circle(*MY_CIRC2D);
+ return GeomLib_Tool::Parameter(aCurve, thePoint->impl<gp_Pnt2d>(),
+ theTolerance, theParameter) == Standard_True;
+}
+
+//=================================================================================================
+void GeomAPI_Circ2d::D0(const double theU, std::shared_ptr<GeomAPI_Pnt2d>& thePoint)
+{
+ Handle(Geom2d_Circle) aCurve = new Geom2d_Circle(*MY_CIRC2D);
+ gp_Pnt2d aPnt;
+ aCurve->D0(theU, aPnt);
+ thePoint.reset(new GeomAPI_Pnt2d(aPnt.X(), aPnt.Y()));
+}
+