Salome HOME
High level objects history implementation for BuildPlugin features.
[modules/shaper.git] / src / GeomAPI / GeomAPI_Trsf.h
1 // Copyright (C) 2014-2017  CEA/DEN, EDF R&D
2 //
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.
7 //
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.
12 //
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
16 //
17 // See http://www.salome-platform.org/ or
18 // email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 //
20
21 #ifndef GeomAPI_Trsf_H_
22 #define GeomAPI_Trsf_H_
23
24 #include <GeomAPI_Interface.h>
25 #include <memory>
26
27 class GeomAPI_Ax1;
28 class GeomAPI_Ax2;
29 class GeomAPI_Pnt;
30
31 /**\class GeomAPI_Trsf
32  * \ingroup DataModel
33  * \brief Keep the transformation matrix coefficients
34  */
35
36 class GeomAPI_Trsf : public GeomAPI_Interface
37 {
38  public:
39   /// Keeps no transformation, it may be set by setImpl
40   GEOMAPI_EXPORT GeomAPI_Trsf();
41   /// Takes the pointer to existing transformation
42   GEOMAPI_EXPORT GeomAPI_Trsf(void* theTrsf);
43
44   /** \brief Sets a translation transformation.
45    *  \param[in] theAxis     translation axis.
46    *  \param[in] theDistance translation distance.
47    */
48   GEOMAPI_EXPORT void setTranslation(const std::shared_ptr<GeomAPI_Ax1> theAxis,
49                                      const double theDistance);
50
51   /** \brief Sets a translation transformation using three coordinates.
52    *  \param[in] theDx x coordinate of the translation vector
53    *  \param[in] theDy y coordinate of the translation vector
54    *  \param[in] theDz z coordinate of the translation vector
55    */
56   GEOMAPI_EXPORT void setTranslation(const double theDx,
57                                      const double theDy,
58                                      const double theDz);
59
60   /** \brief Sets a translation transformation using two points.
61    *  \param[in] theStartPoint  Start point of the translation vector.
62    *  \param[in] theEndPoint    End point of the translation vector.
63    */
64   GEOMAPI_EXPORT void setTranslation(const std::shared_ptr<GeomAPI_Pnt> theStartPoint,
65                                      const std::shared_ptr<GeomAPI_Pnt> theEndPoint);
66
67   /** \brief Sets a rotation transformation.
68    *  \param[in] theAxis  rotation axis.
69    *  \param[in] theAngle rotation angle(in degree).
70    */
71   GEOMAPI_EXPORT void setRotation(const std::shared_ptr<GeomAPI_Ax1> theAxis,
72                                   const double theAngle);
73
74   /** \brief Sets a rotation transformation using three points.
75    *  \param[in] theCenterPoint  rotation center.
76    *  \param[in] theStartPoint   start rotation point.
77    *  \param[in] theEndPoint     end rotation point.
78    */
79   GEOMAPI_EXPORT void setRotation(const std::shared_ptr<GeomAPI_Pnt> theCenterPoint,
80                                   const std::shared_ptr<GeomAPI_Pnt> theStartPoint,
81                                   const std::shared_ptr<GeomAPI_Pnt> theEndPoint);
82
83   /** \brief Sets a point symmetry transformation.
84    *  \param[in] thePoint symmetry point.
85    */
86   GEOMAPI_EXPORT void setSymmetry(const std::shared_ptr<GeomAPI_Pnt> thePoint);
87
88   /** \brief Sets an axis symmetry transformation.
89    *  \param[in] theAxis symmetry axis.
90    */
91   GEOMAPI_EXPORT void setSymmetry(const std::shared_ptr<GeomAPI_Ax1> theAxis);
92
93   /** \brief Sets a plane symmetry transformation.
94    *  \param[in] thePlane symmetry plane.
95    */
96   GEOMAPI_EXPORT void setSymmetry(const std::shared_ptr<GeomAPI_Ax2> thePlane);
97 };
98
99 #endif
100