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