Jpp
JCompass.hh
Go to the documentation of this file.
1 #ifndef __JDETECTOR__JCOMPASS__
2 #define __JDETECTOR__JCOMPASS__
3 
4 #include <istream>
5 #include <ostream>
6 
7 #include "JTools/JConstants.hh"
8 #include "JIO/JSerialisable.hh"
9 #include "JMath/JMath.hh"
10 
11 
12 /**
13  * \author mdejong
14  */
15 
16 namespace JDETECTOR {}
17 namespace JPP { using namespace JDETECTOR; }
18 
19 namespace JDETECTOR {
20 
21  using JTOOLS::PI;
22  using JIO::JReader;
23  using JIO::JWriter;
24 
25 
26  /**
27  * Data structure for comapss in three dimensions.
28  *
29  * This class implements the JMATH::JMath interface.
30  */
31  class JCompass :
32  public JMATH::JMath<JCompass>
33  {
34  public:
35  /**
36  * Default constructor.
37  */
39  __pitch(0.0),
40  __roll (0.0),
41  __yaw (0.0)
42  {}
43 
44 
45  /**
46  * Constructor.
47  *
48  * \param pitch pitch angle [rad]
49  * \param roll roll angle [rad]
50  * \param yaw yaw angle [rad]
51  */
52  JCompass(const double pitch,
53  const double roll,
54  const double yaw) :
55  __pitch(pitch),
56  __roll (roll),
57  __yaw (yaw)
58  {}
59 
60 
61  /**
62  * Get compass.
63  *
64  * \return this compass
65  */
66  const JCompass& getCompass() const
67  {
68  return static_cast<const JCompass&>(*this);
69  }
70 
71 
72  /**
73  * Set compass.
74  *
75  * \param compass compass
76  */
77  void setCompass(const JCompass& compass)
78  {
79  static_cast<JCompass&>(*this) = compass;
80  }
81 
82 
83  /**
84  * Negate compass.
85  *
86  * \return this compass
87  */
89  {
90  __pitch = -__pitch;
91  __roll = -__roll;
92  __yaw = -__yaw;
93 
94  return *this;
95  }
96 
97 
98  /**
99  * Add compass.
100  *
101  * \param compass compass
102  * \return this compass
103  */
104  JCompass& add(const JCompass& compass)
105  {
106  __pitch += compass.getPitch();
107  __roll += compass.getRoll();
108  __yaw += compass.getYaw();
109 
110  return *this;
111  }
112 
113 
114  /**
115  * Subtract compass.
116  *
117  * \param compass compass
118  * \return this compass
119  */
120  JCompass& sub(const JCompass& compass)
121  {
122  __pitch -= compass.getPitch();
123  __roll -= compass.getRoll();
124  __yaw -= compass.getYaw();
125 
126  return *this;
127  }
128 
129 
130  /**
131  * Scale compass.
132  *
133  * \param factor multiplication factor
134  * \return this compass
135  */
136  JCompass& mul(const double factor)
137  {
138  __pitch *= factor;
139  __roll *= factor;
140  __yaw *= factor;
141 
142  return *this;
143  }
144 
145 
146  /**
147  * Scale compass.
148  *
149  * \param factor division factor
150  * \return this compass
151  */
152  JCompass& div(const double factor)
153  {
154  __pitch /= factor;
155  __roll /= factor;
156  __yaw /= factor;
157 
158  return *this;
159  }
160 
161 
162  /**
163  * Get pitch compass.
164  *
165  * \return pitch compass
166  */
167  double getPitch() const
168  {
169  return __pitch;
170  }
171 
172 
173  /**
174  * Get roll compass.
175  *
176  * \return roll compass
177  */
178  double getRoll() const
179  {
180  return __roll;
181  }
182 
183 
184  /**
185  * Get yaw compass.
186  *
187  * \return yaw compass
188  */
189  double getYaw() const
190  {
191  return __yaw;
192  }
193 
194 
195  /**
196  * Read compasss from input.
197  *
198  * \param in input stream
199  * \param compass compasss
200  * \return input stream
201  */
202  friend inline std::istream& operator>>(std::istream& in, JCompass& compass)
203  {
204  in >> compass.__pitch >> compass.__roll >> compass.__yaw;
205 
206  return in;
207  }
208 
209 
210  /**
211  * Write compasss to output.
212  *
213  * \param out output stream
214  * \param compass compass
215  * \return output stream
216  */
217  friend inline std::ostream& operator<<(std::ostream& out, const JCompass& compass)
218  {
219  out << compass.getPitch() << ' ' << compass.getRoll() << ' ' << compass.getYaw();
220 
221  return out;
222  }
223 
224 
225  /**
226  * Read compasss from input.
227  *
228  * \param in reader
229  * \param compass compasss
230  * \return reader
231  */
232  friend inline JReader& operator>>(JReader& in, JCompass& compass)
233  {
234  in >> compass.__pitch;
235  in >> compass.__roll;
236  in >> compass.__yaw;
237 
238  return in;
239  }
240 
241 
242  /**
243  * Write compasss to output.
244  *
245  * \param out writer
246  * \param compass compasss
247  * \return writer
248  */
249  friend inline JWriter& operator<<(JWriter& out, const JCompass& compass)
250  {
251  out << compass.__pitch;
252  out << compass.__roll;
253  out << compass.__yaw;
254 
255  return out;
256  }
257 
258 
259  protected:
260  double __pitch;
261  double __roll;
262  double __yaw;
263  };
264 }
265 
266 #endif
JDETECTOR::JCompass::__roll
double __roll
Definition: JCompass.hh:261
JIO::JReader
Interface for binary input.
Definition: JSerialisable.hh:62
JDETECTOR::JCompass::add
JCompass & add(const JCompass &compass)
Add compass.
Definition: JCompass.hh:104
JDETECTOR::JCompass::negate
JCompass & negate()
Negate compass.
Definition: JCompass.hh:88
JDETECTOR::JCompass::mul
JCompass & mul(const double factor)
Scale compass.
Definition: JCompass.hh:136
JDETECTOR::JCompass::getRoll
double getRoll() const
Get roll compass.
Definition: JCompass.hh:178
JDETECTOR::JCompass::setCompass
void setCompass(const JCompass &compass)
Set compass.
Definition: JCompass.hh:77
JDETECTOR::JCompass::JCompass
JCompass()
Default constructor.
Definition: JCompass.hh:38
JDETECTOR::JCompass::operator<<
friend std::ostream & operator<<(std::ostream &out, const JCompass &compass)
Write compasss to output.
Definition: JCompass.hh:217
JMATH::JMath
Auxiliary base class for aritmetic operations of derived class types.
Definition: JMath.hh:26
JDETECTOR::JCompass::__yaw
double __yaw
Definition: JCompass.hh:262
JDETECTOR::JCompass::JCompass
JCompass(const double pitch, const double roll, const double yaw)
Constructor.
Definition: JCompass.hh:52
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JSerialisable.hh
JConstants.hh
JDETECTOR::JCompass::operator>>
friend std::istream & operator>>(std::istream &in, JCompass &compass)
Read compasss from input.
Definition: JCompass.hh:202
JIO::JWriter
Interface for binary output.
Definition: JSerialisable.hh:131
JDETECTOR::JCompass::operator>>
friend JReader & operator>>(JReader &in, JCompass &compass)
Read compasss from input.
Definition: JCompass.hh:232
JDETECTOR::JCompass::getPitch
double getPitch() const
Get pitch compass.
Definition: JCompass.hh:167
JDETECTOR::JCompass::getYaw
double getYaw() const
Get yaw compass.
Definition: JCompass.hh:189
JDETECTOR::JCompass::getCompass
const JCompass & getCompass() const
Get compass.
Definition: JCompass.hh:66
JDETECTOR::JCompass::__pitch
double __pitch
Definition: JCompass.hh:260
JMath.hh
JDETECTOR::JCompass
Data structure for comapss in three dimensions.
Definition: JCompass.hh:31
JTOOLS::PI
static const double PI
Constants.
Definition: JConstants.hh:20
JDETECTOR::JCompass::sub
JCompass & sub(const JCompass &compass)
Subtract compass.
Definition: JCompass.hh:120
JDETECTOR::JCompass::operator<<
friend JWriter & operator<<(JWriter &out, const JCompass &compass)
Write compasss to output.
Definition: JCompass.hh:249
JDETECTOR::JCompass::div
JCompass & div(const double factor)
Scale compass.
Definition: JCompass.hh:152
JDETECTOR
Auxiliary classes and methods for detector calibration.
Definition: JAnchor.hh:12