X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAPI%2FGeomAPI_Circ.h;h=32cac89686e2ee8ebb7e5a0b2054cf773c4bb3fd;hb=592f9b635dddfc888cc2e14d8e996e0e21d904b3;hp=dda6923c66dd1daa9674e4f03d7e915dec856154;hpb=142e6a7451245b1c39e5d0afbabb5dc4f678520e;p=modules%2Fshaper.git diff --git a/src/GeomAPI/GeomAPI_Circ.h b/src/GeomAPI/GeomAPI_Circ.h index dda6923c6..32cac8968 100644 --- a/src/GeomAPI/GeomAPI_Circ.h +++ b/src/GeomAPI/GeomAPI_Circ.h @@ -1,13 +1,16 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: GeomAPI_Circ.h // Created: 24 Jun 2014 // Author: Artem ZHIDKOV -#ifndef GeomAPI_Circ_HeaderFile -#define GeomAPI_Circ_HeaderFile +#ifndef GeomAPI_Circ_H_ +#define GeomAPI_Circ_H_ #include -#include +#include +class GeomAPI_Ax2; class GeomAPI_Pnt; class GeomAPI_Dir; @@ -16,22 +19,45 @@ class GeomAPI_Dir; * \brief Circle in 3D */ -class GEOMAPI_EXPORT GeomAPI_Circ: public GeomAPI_Interface +class GeomAPI_Circ : public GeomAPI_Interface { -public: + public: + + /** \brief Constructs a circle of radius Radius, where theAx2 locates the circle and defines its orientation in 3D space such that:\n + * - the center of the circle is the origin of theAx2;\n + * - the origin, "X Direction" and "Y Direction" of theAx2 define the plane of the circle;\n + * - theAx2 is the local coordinate system of the circle.\n + * Note: It is possible to create a circle where Radius is equal to 0.0. raised if Radius < 0. + */ + GEOMAPI_EXPORT GeomAPI_Circ(const std::shared_ptr theAx2, + const double theRadius); + /// Creation of circle defined by center point, direction and circle radius - GeomAPI_Circ(const boost::shared_ptr& theCenter, - const boost::shared_ptr& theDir, - double theRadius); + GEOMAPI_EXPORT GeomAPI_Circ(const std::shared_ptr& theCenter, + const std::shared_ptr& theDir, double theRadius); /// Return center of the circle - const boost::shared_ptr center() const; + GEOMAPI_EXPORT const std::shared_ptr center() const; /// Return radius of the circle - double radius() const; + GEOMAPI_EXPORT double radius() const; /// Project point on circle - const boost::shared_ptr project(const boost::shared_ptr& thePoint) const; + GEOMAPI_EXPORT const std::shared_ptr project( + const std::shared_ptr& thePoint) const; + + /** \brief Computes the parameter of a given point on a circle. The point must be + * located either on the circle itself or relatively to the latter + * at a distance less than the tolerance value. Return FALSE if the point + * is beyond the tolerance limit or if computation fails. + * Max Tolerance value is currently limited to 1.e-4 + * \param[in] thePoint point of origin. + * \param[in] theTolerance tolerance of computation. + * \param[out] theParameter resulting parameter. + */ + GEOMAPI_EXPORT const bool parameter(const std::shared_ptr thePoint, + const double theTolerance, + double& theParameter) const; }; #endif