sbg_vector3.h
Go to the documentation of this file.
1 
38 #ifndef SBG_VECTOR_3_H
39 #define SBG_VECTOR_3_H
40 
41 #include <cmath>
42 
43 // ROS headers
44 #include <geometry_msgs/Vector3.h>
45 
46 // Sbg headers
47 #include <sbgDefines.h>
48 
49 namespace sbg
50 {
59 template <typename T>
60 bool areEquals(T firstValue, T secondValue)
61 {
62  //
63  // The machine epsilon has to be scaled to the magnitude of the values used.
64  //
65  return std::fabs(firstValue - secondValue) <= (std::numeric_limits<T>::epsilon() * std::fabs(firstValue + secondValue));
66 }
67 
71 template <class T>
73 {
74 private:
75 
76  //---------------------------------------------------------------------//
77  //- Private variables -//
78  //---------------------------------------------------------------------//
79 
80  std::array<T, 3> data_;
81 
82 public:
83 
84  //---------------------------------------------------------------------//
85  //- Constructor -//
86  //---------------------------------------------------------------------//
87 
92  {
93  data_[0] = static_cast<T>(0.0);
94  data_[1] = static_cast<T>(0.0);
95  data_[2] = static_cast<T>(0.0);
96  }
97 
105  SbgVector3(T x_value, T y_value, T z_value)
106  {
107  data_[0] = x_value;
108  data_[1] = y_value;
109  data_[2] = z_value;
110  };
111 
118  SbgVector3(const T* p_raw_data, size_t array_size)
119  {
120  assert(array_size == 3);
121 
122  data_[0] = p_raw_data[0];
123  data_[1] = p_raw_data[1];
124  data_[2] = p_raw_data[2];
125  };
126 
127  //---------------------------------------------------------------------//
128  //- Parameters -//
129  //---------------------------------------------------------------------//
130 
131  //---------------------------------------------------------------------//
132  //- Operations -//
133  //---------------------------------------------------------------------//
134 
141  bool operator==(const SbgVector3<T> &ref_vector)
142  {
143  return ((areEquals(data_[0], ref_vector.data_[0]))
144  && (areEquals(data_[1], ref_vector.data_[1]))
145  && (areEquals(data_[2], ref_vector.data_[2])));
146  };
147 
154  bool operator!=(const SbgVector3<T> &ref_vector)
155  {
156  return !(*this == ref_vector);
157  };
158 
164  const T operator()(size_t index) const
165  {
166  assert(index < 3);
167 
168  return data_[index];
169  }
170 
176  const T *data() const
177  {
178  return static_cast<const T*>(data_.data());
179  };
180 };
181 
184 
185 }
186 
187 #endif // SBG_VECTOR_3_H
sbg::areEquals
bool areEquals(T firstValue, T secondValue)
Definition: sbg_vector3.h:60
sbg::SbgVector3
Definition: sbg_vector3.h:72
sbg::SbgVector3::operator()
const T operator()(size_t index) const
Definition: sbg_vector3.h:164
sbg::SbgVector3::SbgVector3
SbgVector3()
Definition: sbg_vector3.h:91
sbg::SbgVector3::operator!=
bool operator!=(const SbgVector3< T > &ref_vector)
Definition: sbg_vector3.h:154
sbg::SbgVector3::data
const T * data() const
Definition: sbg_vector3.h:176
sbg::SbgVector3::operator==
bool operator==(const SbgVector3< T > &ref_vector)
Definition: sbg_vector3.h:141
sbg::SbgVector3d
SbgVector3< double > SbgVector3d
Definition: sbg_vector3.h:183
sbgDefines.h
sbg::SbgVector3::SbgVector3
SbgVector3(const T *p_raw_data, size_t array_size)
Definition: sbg_vector3.h:118
sbg
Definition: config_applier.h:45
sbg::SbgVector3f
SbgVector3< float > SbgVector3f
Definition: sbg_vector3.h:182
sbg::SbgVector3::SbgVector3
SbgVector3(T x_value, T y_value, T z_value)
Definition: sbg_vector3.h:105
sbg::SbgVector3::data_
std::array< T, 3 > data_
Definition: sbg_vector3.h:80


sbg_driver
Author(s): SBG Systems
autogenerated on Fri Oct 11 2024 02:13:40