OpenLexocad  27.1
Ax1.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 
25 #include <Geom/Dir.h>
26 #include <Geom/Pnt.h>
27 
28 namespace Geom
29 {
30 class Ax1;
31 class Ax2;
32 class Trsf;
33 class Vec;
34 } // namespace Geom
35 
36 namespace Geom
37 {
50 class LX_GEOM_EXPORT Ax1
51 {
52 public:
54  // //
55  // --------------------- BEGIN API --------------------- //
56  // //
57  // ATTENTION: DO NOT CHANGE ANY SIGNATURES IN THE API ! //
58  // //
60 
61  // Methods PUBLIC
62  //
64  Ax1() = default;
65 
67  Ax1(const Geom::Pnt& P, const Geom::Dir& V);
69  void setDirection(const Geom::Dir& V);
71  void setLocation(const Geom::Pnt& P);
73  const Geom::Dir& direction() const;
75  const Geom::Pnt& location() const;
76 
77 
85  bool isCoaxial(const Ax1& Other, const double AngularTolerance, const double LinearTolerance) const;
86 
91  bool isNormal(const Ax1& Other, const double AngularTolerance) const;
92 
97  bool isOpposite(const Ax1& Other, const double AngularTolerance) const;
98 
104  bool isParallel(const Ax1& Other, const double AngularTolerance) const;
105 
109  double angle(const Ax1& Other) const;
112  void reverse();
114  Ax1 reversed() const;
115 
116 
120  void mirror(const Geom::Pnt& P);
121 
125  Ax1 mirrored(const Geom::Pnt& P) const;
126 
127 
131  void mirror(const Ax1& A1);
132 
133 
137  Ax1 mirrored(const Ax1& A1) const;
138 
139 
144  void mirror(const Geom::Ax2& A2);
145 
146 
151  Ax1 mirrored(const Geom::Ax2& A2) const;
154  void rotate(const Ax1& A1, const double Ang);
157  Ax1 rotated(const Ax1& A1, const double Ang) const;
158 
162  void scale(const Geom::Pnt& P, const double S);
163 
167  Ax1 scaled(const Geom::Pnt& P, const double S) const;
170  void transform(const Geom::Trsf& T);
171 
175  Ax1 transformed(const Geom::Trsf& T) const;
176 
179  void translate(const Geom::Vec& V);
180 
183  Ax1 translated(const Geom::Vec& V) const;
184 
188  void translate(const Geom::Pnt& P1, const Geom::Pnt& P2);
189 
193  Ax1 translated(const Geom::Pnt& P1, const Geom::Pnt& P2) const;
194 
196  // //
197  // ---------------------- END API ---------------------- //
198  // //
200 
201 private:
202  Geom::Pnt loc;
203  Geom::Dir vdir;
204 };
205 
206 } // 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: Ax1.h:50
Defines a non-persistent vector in 3D space.
Definition: Vec.h:44