NimbRo ROS Soccer Package
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Limp.h
1 #ifndef LIMP_H_
2 #define LIMP_H_
3 
4 namespace margait_contrib
5 {
6 
7 class Limp;
8 
9 extern Limp operator*(const double scalar, const Limp& l);
10 extern Limp operator*(const Limp& l, const double scalar);
11 extern Limp operator/(const double scalar, const Limp& l);
12 extern Limp operator/(const Limp& l, const double scalar);
13 
14 
15 class Limp
16 {
17 public:
18 
19  double C;
20  double x0, v0;
21 
22  Limp();
23  Limp(double x, double v, double C);
24  ~Limp(){};
25 
26  void set(double x, double v);
27  void set(double x, double v, double C);
28 
29  Limp predict(double time);
30  void update(double time);
31  void simUpdate(double time);
32  void reset();
33 
34  double energy();
35  static double energy(double x, double v, double C);
36  double tLoc(double x);
37  double tVel(double vx);
38  double vx(double x);
39  double x(double vx);
40  double origin(double x, double vx);
41  double z(double x, double T);
42 
43  inline Limp operator+(const Limp& l) const {return Limp(x0+l.x0, v0+l.v0, C);}
44  inline Limp operator-() const {return Limp(-x0, -v0, C);}
45  inline Limp operator-(const Limp& l) const {return Limp(x0-l.x0, v0-l.v0, C);}
46  inline Limp& operator*=(const double scalar){x0*=scalar; v0*=scalar; return *this;}
47  inline Limp& operator/=(const double scalar){x0/=scalar; v0/=scalar; return *this;}
48  inline Limp& operator+=(const Limp& l){x0+=l.x0; v0+=l.v0; return *this;}
49  inline Limp& operator-=(const Limp& l){x0-=l.x0; v0-=l.v0; return *this;}
50 
51 };
52 
53 }
54 
55 #endif /* LIMP_H_ */