ESyS-Particle  2.3.4
Vec3L.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 
14 #ifndef ESYS_LSMVEC3L_H
15 #define ESYS_LSMVEC3L_H
16 
17 #include <iostream>
18 
19 namespace esys
20 {
21 
22  namespace lsm
23  {
24 
28  class Vec3L
29  {
30  public:
31  typedef long Long;
32 
34  {
35  m_data[0] = 0;
36  m_data[1] = 0;
37  m_data[2] = 0;
38  }
39 
40  Vec3L(Long x, Long y, Long z)
41  {
42  m_data[0] = x;
43  m_data[1] = y;
44  m_data[2] = z;
45  }
46 
47  Vec3L(const Vec3L &vec)
48  {
49  m_data[0] = vec.m_data[0];
50  m_data[1] = vec.m_data[1];
51  m_data[2] = vec.m_data[2];
52  }
53 
55  {
56  }
57 
58  Vec3L &operator=(const Vec3L &vec)
59  {
60  m_data[0] = vec.m_data[0];
61  m_data[1] = vec.m_data[1];
62  m_data[2] = vec.m_data[2];
63 
64  return *this;
65  }
66 
67  bool operator==(const Vec3L &vec) const
68  {
69  return
70  (
71  (m_data[0] == vec.m_data[0])
72  &&
73  (m_data[1] == vec.m_data[1])
74  &&
75  (m_data[2] == vec.m_data[2])
76  );
77  }
78 
79  Long &operator[](int idx)
80  {
81  return m_data[idx];
82  }
83 
84  const Long &operator[](int idx) const
85  {
86  return m_data[idx];
87  }
88 
89  Vec3L operator-(Long val) const
90  {
91  return Vec3L(m_data[0]-val, m_data[1]-val, m_data[2]-val);
92  }
93 
94  Vec3L operator+(Long val) const
95  {
96  return Vec3L(m_data[0]+val, m_data[1]+val, m_data[2]+val);
97  }
98 
99  const Long &X() const
100  {
101  return m_data[0];
102  }
103 
104  Long &X()
105  {
106  return m_data[0];
107  }
108 
109  const Long &Y() const
110  {
111  return m_data[1];
112  }
113 
114  Long &Y()
115  {
116  return m_data[1];
117  }
118 
119  const Long &Z() const
120  {
121  return m_data[2];
122  }
123 
124  Long &Z()
125  {
126  return m_data[2];
127  }
128 
129  Vec3L min(const Vec3L &vec) const
130  {
131  return
132  Vec3L
133  (
134  std::min(m_data[0], vec.m_data[0]),
135  std::min(m_data[1], vec.m_data[1]),
136  std::min(m_data[2], vec.m_data[2])
137  );
138  }
139 
140  Vec3L max(const Vec3L &vec) const
141  {
142  return
143  Vec3L
144  (
145  std::max(m_data[0], vec.m_data[0]),
146  std::max(m_data[1], vec.m_data[1]),
147  std::max(m_data[2], vec.m_data[2])
148  );
149  }
150 
151  private:
153  };
154 
155  inline std::ostream &operator<<(std::ostream &oStream, const Vec3L &vec)
156  {
157  oStream << vec.X() << " " << vec.Y() << " " << vec.Z();
158  return oStream;
159  }
160  }
161 }
162 
163 #endif
esys::lsm::Vec3L::operator[]
const Long & operator[](int idx) const
Definition: Vec3L.h:84
esys::lsm::Vec3L::Z
const Long & Z() const
Definition: Vec3L.h:119
esys::lsm::Vec3L::X
Long & X()
Definition: Vec3L.h:104
esys::lsm::Vec3L::operator==
bool operator==(const Vec3L &vec) const
Definition: Vec3L.h:67
Vec3L.h
esys::lsm::Vec3L::operator=
Vec3L & operator=(const Vec3L &vec)
Definition: Vec3L.h:58
esys::lsm::Vec3L::min
Vec3L min(const Vec3L &vec) const
Definition: Vec3L.h:129
esys::lsm::Vec3L::operator[]
Long & operator[](int idx)
Definition: Vec3L.h:79
esys::lsm::Vec3L::Z
Long & Z()
Definition: Vec3L.h:124
esys::lsm::Vec3L::~Vec3L
~Vec3L()
Definition: Vec3L.h:54
esys::lsm::Vec3L::X
const Long & X() const
Definition: Vec3L.h:99
esys::lsm::Vec3L::Vec3L
Vec3L(const Vec3L &vec)
Definition: Vec3L.h:47
esys::lsm::Vec3L::Long
long Long
Definition: Vec3L.h:31
esys
Definition: CheckPointable.cpp:17
esys::lsm::operator<<
std::ostream & operator<<(std::ostream &oStream, const SimpleConnectionData &connectionData)
Definition: GeometryReader.cpp:134
esys::lsm::Vec3L::Y
Long & Y()
Definition: Vec3L.h:114
esys::lsm::Vec3L::operator-
Vec3L operator-(Long val) const
Definition: Vec3L.h:89
esys::lsm::Vec3L::Vec3L
Vec3L(Long x, Long y, Long z)
Definition: Vec3L.h:40
esys::lsm::Vec3L::Y
const Long & Y() const
Definition: Vec3L.h:109
esys::lsm::Vec3L::operator+
Vec3L operator+(Long val) const
Definition: Vec3L.h:94
esys::lsm::Vec3L::Vec3L
Vec3L()
Definition: Vec3L.h:33
esys::lsm::Vec3L
Definition: Vec3L.h:29
esys::lsm::Vec3L::max
Vec3L max(const Vec3L &vec) const
Definition: Vec3L.h:140
esys::lsm::Vec3L::m_data
Long m_data[3]
Definition: Vec3L.h:152