OpenLexocad  27.1
Ax3.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/Ax1.h>
25 #include <Geom/Dir.h>
26 
27 namespace Geom
28 {
29 class Ax2;
30 class Ax3;
31 class Trsf;
32 class Vec;
33 class Pnt;
34 
69 class LX_GEOM_EXPORT Ax3
70 {
71 public:
72  // Methods PUBLIC
73  //
74 
76  // //
77  // --------------------- BEGIN API --------------------- //
78  // //
79  // ATTENTION: DO NOT CHANGE ANY SIGNATURES IN THE API ! //
80  // //
82 
84  Ax3();
85 
88  Ax3(const Geom::Ax2& A);
89 
94  Ax3(const Geom::Pnt& P, const Geom::Dir& N, const Geom::Dir& Vx);
95 
96 
99  Ax3(const Geom::Pnt& P, const Geom::Dir& V);
100 
102  void xReverse();
103 
105  void yReverse();
106 
108  void zReverse();
109 
122  void setAxis(const Geom::Ax1& A1);
123 
124 
134  void setDirection(const Geom::Dir& V);
135 
136 
138  void setLocation(const Geom::Pnt& P);
139 
140 
147  void setXDirection(const Geom::Dir& Vx);
148 
155  void setYDirection(const Geom::Dir& Vy);
156 
160  double angle(const Ax3& Other) const;
161 
164  const Geom::Ax1& axis() const;
165 
172  Geom::Ax2 axis2() const;
173 
175  const Geom::Dir& direction() const;
176 
178  const Geom::Pnt& location() const;
179 
181  const Geom::Dir& xDirection() const;
182 
184  const Geom::Dir& yDirection() const;
187  bool direct() const;
188 
196  bool isCoplanar(const Ax3& Other, const double LinearTolerance, const double AngularTolerance) const;
203  bool isCoplanar(const Geom::Ax1& A1, const double LinearTolerance, const double AngularTolerance) const;
204 
205 
206  void mirror(const Geom::Pnt& P);
207 
208 
216  Ax3 mirrored(const Geom::Pnt& P) const;
217 
218 
219  void mirror(const Geom::Ax1& A1);
220 
221 
229  Ax3 mirrored(const Geom::Ax1& A1) const;
230 
231 
232  void mirror(const Geom::Ax2& A2);
233 
234 
243  Ax3 mirrored(const Geom::Ax2& A2) const;
244 
245 
246  void rotate(const Geom::Ax1& A1, const double Ang);
247 
248 
252  Ax3 rotated(const Geom::Ax1& A1, const double Ang) const;
253 
254 
255  void scale(const Geom::Pnt& P, const double S);
256 
257 
265  Ax3 scaled(const Geom::Pnt& P, const double S) const;
266 
267 
268  void transform(const Geom::Trsf& T);
269 
270 
276  Ax3 transformed(const Geom::Trsf& T) const;
277 
278 
279  void translate(const Geom::Vec& V);
280 
281 
284  Ax3 translated(const Geom::Vec& V) const;
285 
286 
287  void translate(const Geom::Pnt& P1, const Geom::Pnt& P2);
288 
289 
292  Ax3 translated(const Geom::Pnt& P1, const Geom::Pnt& P2) const;
293 
295  // //
296  // ---------------------- END API ---------------------- //
297  // //
299 
300 
301 private:
302  Geom::Ax1 myaxis;
303  Geom::Dir vydir;
304  Geom::Dir vxdir;
305 };
306 
307 } // namespace Geom
Definition: Variant.h:60
Defines a non-persistent 3D Cartesian point.
Definition: Pnt.h:43
void transform(Container container, OutputIt out, BinaryFunction function)
Definition: Algorithms.h:29
Definition: Ax2.h:67
Definition: Trsf.h:57
Definition: Dir.h:45
Definition: Ax3.h:69
Definition: Ax1.h:50
Defines a non-persistent vector in 3D space.
Definition: Vec.h:44