libalmath  1.14
 All Classes Namespaces Functions Variables Typedefs Groups Pages
alvelocity6d.h
1 /*
2  * Copyright (c) 2012 Aldebaran Robotics. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the COPYING file.
5  */
6 
7 
8 #pragma once
9 #ifndef _LIBALMATH_ALMATH_TYPES_ALVELOCITY6D_H_
10 #define _LIBALMATH_ALMATH_TYPES_ALVELOCITY6D_H_
11 
12 #include <vector>
13 
14 namespace AL {
15 namespace Math {
16 
17 
24 struct Velocity6D {
26  float xd;
28  float yd;
30  float zd;
32  float wxd;
34  float wyd;
36  float wzd;
37 
40 
59 
60  Velocity6D();
61 
64 
83 
84 
85 
86  explicit Velocity6D(float pInit);
87 
90 
109 
110 
111 
112 
113 
114 
115 
116  Velocity6D(
117  float pXd,
118  float pYd,
119  float pZd,
120  float pWxd,
121  float pWyd,
122  float pWzd);
123 
126 
145 
146 
147 
148 
149 
150 
151  Velocity6D(const std::vector<float>& pFloats);
152 
157  Velocity6D operator+ (const Velocity6D& pVel2) const;
158 
163  Velocity6D operator- (const Velocity6D& pVel2) const;
164 
168  Velocity6D operator+ () const;
169 
173  Velocity6D operator- () const;
174 
179  Velocity6D operator* (const float pVal) const;
180 
185  Velocity6D operator/ (const float pVal) const;
186 
191  bool operator== (const Velocity6D& pVel2) const;
192 
197  bool operator!= (const Velocity6D& pVel2) const;
198 
203  Velocity6D& operator*= (const float pVal);
204 
209  Velocity6D& operator/= (const float pVal);
210 
221  bool isNear(
222  const Velocity6D& pVel2,
223  const float& pEpsilon=0.0001f) const;
224 
233  float norm() const;
234 
243  Velocity6D normalize() const;
244 
248  std::vector<float> toVector() const;
249 }; // end struct
250 
257  const float pVal,
258  const Velocity6D& pVel);
259 
270 float norm(const Velocity6D& pVel);
271 
282 Velocity6D normalize(const Velocity6D& pVel);
283 
284 } // end namespace Math
285 } // end namespace AL
286 #endif // _LIBALMATH_ALMATH_TYPES_ALVELOCITY6D_H_