ESyS-Particle
2.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
Vec3L.h
Go to the documentation of this file.
1
2
// //
3
// Copyright (c) 2003-2013 by The University of Queensland //
4
// Earth Systems Science Computational Centre (ESSCC) //
5
// http://www.uq.edu.au/esscc //
6
// //
7
// Primary Business: Brisbane, Queensland, Australia //
8
// Licensed under the Open Software License version 3.0 //
9
// http://www.opensource.org/licenses/osl-3.0.php //
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
33
Vec3L
()
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
54
~Vec3L
()
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
:
152
Long
m_data
[3];
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
Geometry
Vec3L.h
Generated on Mon May 6 2013 23:26:30 for ESyS-Particle by
1.8.3.1