X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAPI%2FGeomAPI_Circ.cpp;h=c7c4573f0df838d72e73172cc011f5321613762e;hb=73502ac782ffc45a3acf665ded34f582b07ec4d5;hp=807390364369856c4603231a1c8cb01d0d3690c3;hpb=f1cd93fd02a54259f72e3191d037323a496b2bef;p=modules%2Fshaper.git diff --git a/src/GeomAPI/GeomAPI_Circ.cpp b/src/GeomAPI/GeomAPI_Circ.cpp index 807390364..c7c4573f0 100644 --- a/src/GeomAPI/GeomAPI_Circ.cpp +++ b/src/GeomAPI/GeomAPI_Circ.cpp @@ -5,6 +5,8 @@ // Author: Artem ZHIDKOV #include + +#include #include #include @@ -15,20 +17,45 @@ #include #include +#include -#define MY_CIRC static_cast(myImpl) +#define MY_CIRC implPtr() static gp_Circ* newCirc(const gp_Pnt& theCenter, const gp_Dir& theDir, const double theRadius) { return new gp_Circ(gp_Ax2(theCenter, theDir), theRadius); } +//================================================================================================= +GeomAPI_Circ::GeomAPI_Circ(const std::shared_ptr theAx2, + const double theRadius) +: GeomAPI_Interface(new gp_Circ(theAx2->impl(), theRadius)) +{ + +} + + +//================================================================================================= GeomAPI_Circ::GeomAPI_Circ(const std::shared_ptr& theCenter, const std::shared_ptr& theDir, double theRadius) : GeomAPI_Interface(newCirc(theCenter->impl(), theDir->impl(), theRadius)) { } +//================================================================================================= +const std::shared_ptr GeomAPI_Circ::center() const +{ + const gp_Pnt& aCenter = MY_CIRC->Location(); + return std::shared_ptr(new GeomAPI_Pnt(aCenter.X(), aCenter.Y(), aCenter.Z())); +} + +//================================================================================================= +double GeomAPI_Circ::radius() const +{ + return MY_CIRC->Radius(); +} + +//================================================================================================= const std::shared_ptr GeomAPI_Circ::project( const std::shared_ptr& thePoint) const { @@ -57,13 +84,19 @@ const std::shared_ptr GeomAPI_Circ::project( return aResult; } -const std::shared_ptr GeomAPI_Circ::center() const +//================================================================================================= +const bool GeomAPI_Circ::parameter(const std::shared_ptr thePoint, + const double theTolerance, + double& theParameter) const { - const gp_Pnt& aCenter = MY_CIRC->Location(); - return std::shared_ptr(new GeomAPI_Pnt(aCenter.X(), aCenter.Y(), aCenter.Z())); + Handle(Geom_Circle) aCurve = new Geom_Circle(*MY_CIRC); + return GeomLib_Tool::Parameter(aCurve, thePoint->impl(), theTolerance, theParameter) == Standard_True; } -double GeomAPI_Circ::radius() const +//================================================================================================= +std::shared_ptr GeomAPI_Circ::normal() const { - return MY_CIRC->Radius(); + const gp_Ax1& anAxis = MY_CIRC->Axis(); + const gp_Dir& aDir = anAxis.Direction(); + return std::shared_ptr(new GeomAPI_Dir(aDir.X(), aDir.Y(), aDir.Z())); }