OpenLexocad  27.1
GTrsf.h
Go to the documentation of this file.
1 //
3 // Copyright(C) 2013-2016 OpenCascade [www.opencascade.org]
4 //
5 // This library is free software; you can redistribute it and / or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street,
18 // Fifth Floor, Boston, MA 02110 - 1301 USA
19 //
21 
22 #pragma once
23 
24 #include <Geom/Trsf.h>
25 
26 
27 
44 
45 namespace Geom
46 {
47 class LX_GEOM_EXPORT GTrsf
48 {
49 public:
51  GTrsf();
52 
56  GTrsf(const Geom::Trsf& T);
57 
61  GTrsf(const Geom::Mat& M, const Geom::XYZ& V);
69  void SetAffinity(const Geom::Ax1& A1, const double Ratio);
78  void SetAffinity(const Geom::Ax2& A2, const double Ratio);
79 
83  void SetValue(const int Row, const int Col, const double Value);
85  void SetVectorialPart(const Geom::Mat& Matrix);
88  void SetTranslationPart(const Geom::XYZ& Coord);
90  void SetTrsf(const Geom::Trsf& T);
91 
94  unsigned int IsNegative() const;
95 
104  unsigned int IsSingular() const;
105 
111  Geom::Trsf::FormEnum Form() const;
112 
119  void SetForm();
121  const Geom::XYZ& TranslationPart() const;
122 
125  const Geom::Mat& VectorialPart() const;
126 
129  double Value(const int Row, const int Col) const;
130  double operator()(const int Row, const int Col) const { return Value(Row, Col); }
131 
132  void Invert();
133 
137  Geom::GTrsf Inverted() const;
138 
153  void Multiply(const Geom::GTrsf& T);
154 
157  Geom::GTrsf Multiplied(const Geom::GTrsf& T) const;
158 
162  void PreMultiply(const Geom::GTrsf& T);
163 
164  void Power(const int N);
165 
176  Geom::GTrsf Powered(const int N) const;
177 
178  void Transforms(Geom::XYZ& Coord) const;
180  void Transforms(double& X, double& Y, double& Z) const;
181 
182  Geom::Trsf Trsf(bool aAllowOtherFormInConstruction = false) const;
183  // const Geom::Mat& _CSFDB_GetGTrsfmatrix() const { return matrix; }
184  // const Geom::XYZ& _CSFDB_GetGTrsfloc() const { return loc; }
185  // Base::TrsfForm _CSFDB_GetGTrsfshape() const { return shape; }
186  // void _CSFDB_SetGTrsfshape(const Base::TrsfForm p) { shape = p; }
187  // double _CSFDB_GetGTrsfscale() const { return scale; }
188  // void _CSFDB_SetGTrsfscale(const double p) { scale = p; }
189 
190 
191 
192 protected:
193 private:
194  Geom::Mat matrix;
195  Geom::XYZ loc;
196  Geom::Trsf::FormEnum shape;
197  double scale;
198 };
199 
200 
201 
202 } // namespace Geom
Definition: Variant.h:60
X
Definition: Globals.h:29
Definition: Mat.h:38
Definition: Ax2.h:67
Definition: XYZ.h:43
Definition: Trsf.h:57
Y
Definition: Globals.h:29
double operator()(const int Row, const int Col) const
Definition: GTrsf.h:130
FormEnum
Definition: Trsf.h:96
Definition: Ax1.h:50
Z
Definition: Globals.h:29
Definition: GTrsf.h:47