IOLink  IOL_v1.2.0_release
SpatialDirections.h
1 #pragma once
2 
3 #include <iolink/IOLinkAPI.h>
4 #include <iolink/Vector.h>
5 
6 namespace iolink
7 {
8 
15 class IOLINK_API SpatialDirections final
16 {
17 public:
27 
37  SpatialDirections(const Vector3d& columnDirection, const Vector3d& rowDirection);
38 
39  SpatialDirections(const SpatialDirections& other) = default;
40  SpatialDirections& operator=(const SpatialDirections& other) = default;
41 
42  SpatialDirections(SpatialDirections&& other) noexcept = default;
43  SpatialDirections& operator=(SpatialDirections&& other) noexcept = default;
44 
45  bool operator==(const SpatialDirections& other) const;
46  bool operator!=(const SpatialDirections& other) const;
47 
51  inline const Vector3d& columnDirection() const { return m_columnDir; }
52 
56  inline const Vector3d& rowDirection() const { return m_rowDir; }
57 
61  inline const Vector3d& sliceDirection() const { return m_sliceDir; }
62 
66  std::string toString() const;
67 
68 private:
69  Vector3d m_columnDir;
70  Vector3d m_rowDir;
71  Vector3d m_sliceDir;
72 };
73 
74 } // end namespace iolink