1 // Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #ifndef _GEOMUtils_Trsf2d_HXX_
24 #define _GEOMUtils_Trsf2d_HXX_
27 #include <Geom2dHatch_Hatcher.hxx>
28 #include <GeomAbs_IsoType.hxx>
29 #include <TColStd_HArray1OfInteger.hxx>
30 #include <TColStd_HArray1OfReal.hxx>
31 #include <TopoDS_Face.hxx>
35 * This class represents a non-persistent transformation in 2D space.
36 * The transformations can be represented as follow :
39 * | a11 a12 a13 | | x | | x'|
40 * | a21 a22 a23 | | y | | y'|
41 * | 0 0 1 | | 1 | | 1 |
43 * where {V1, V2} defines the vectorial part of the transformation
44 * and T defines the translation part of the transformation.
45 * This transformation can change the nature of the objects if it is
56 * Constructor. Initializes the object with the transformation parameters.
57 * Input parameters are not checked for validity. It is under responsibility
60 Standard_EXPORT Trsf2d(const Standard_Real a11,
61 const Standard_Real a12,
62 const Standard_Real a13,
63 const Standard_Real a21,
64 const Standard_Real a22,
65 const Standard_Real a23);
68 * Transform the point. The passed parameter is modified to have
69 * a transformed value.
71 * \param thePnt the point.
73 Standard_EXPORT void TransformD0(gp_Pnt2d &thePnt)const;
76 * Transform the point and the first derivative vector. The passed
77 * parameters are modified to have a transformed value.
79 * \param thePnt the point.
80 * \param theVec1 the first derivative vector.
82 Standard_EXPORT void TransformD1(gp_Pnt2d &thePnt,
83 gp_Vec2d &theVec1) const;
86 * Transform the point, the first and second derivative vectors. The passed
87 * parameters are modified to have a transformed value.
89 * \param thePnt the point.
90 * \param theVec1 the first derivative vector.
91 * \param theVec2 the second derivative vector.
93 Standard_EXPORT void TransformD2(gp_Pnt2d &thePnt,
95 gp_Vec2d &theVec2) const;
98 * Transform the point, the first, second and third derivative vectors.
99 * The passed parameters are modified to have a transformed value.
101 * \param thePnt the point.
102 * \param theVec1 the first derivative vector.
103 * \param theVec2 the second derivative vector.
104 * \param theVec2 the third derivative vector.
106 Standard_EXPORT void TransformD3(gp_Pnt2d &thePnt,
109 gp_Vec2d &theVec3) const;
114 * Transform the vector.
116 * \param thePnt the point.
117 * \param theVec the vector.
119 void TransformVector(const gp_Pnt2d &thePnt,
120 gp_Vec2d &theVec) const;