MicroMouse Control Module  v1.3.2-2-ge2c6882
polar.h
[詳解]
1 
8 #pragma once
9 
10 #include <ostream>
11 
12 namespace ctrl {
13 
17 struct Polar {
18  float tra; //< translation [m]
19  float rot; //< rotation [rad]
20 
21  public:
22  constexpr Polar() : tra(0), rot(0) {}
23  constexpr Polar(const float tra, const float rot) : tra(tra), rot(rot) {}
24  void clear() { tra = rot = 0; }
25  auto& operator+=(const Polar& o) { return tra += o.tra, rot += o.rot, *this; }
26  auto& operator-=(const Polar& o) { return tra -= o.tra, rot -= o.rot, *this; }
27  Polar operator+(const Polar& o) const { return {tra + o.tra, rot + o.rot}; }
28  Polar operator-(const Polar& o) const { return {tra - o.tra, rot - o.rot}; }
29  Polar operator*(const Polar& o) const { return {tra * o.tra, rot * o.rot}; }
30  Polar operator/(const Polar& o) const { return {tra / o.tra, rot / o.rot}; }
31  Polar operator*(const float k) const { return {tra * k, rot * k}; }
32  Polar operator/(const float k) const { return {tra / k, rot / k}; }
33  friend std::ostream& operator<<(std::ostream& os, const Polar& o) {
34  return os << "(" << o.tra << ", " << o.rot << ")";
35  }
36 };
37 
38 } // namespace ctrl
制御関係の名前空間
Definition: accel_curve.h:54
並進と回転の座標
Definition: polar.h:17
Polar operator-(const Polar &o) const
Definition: polar.h:28
friend std::ostream & operator<<(std::ostream &os, const Polar &o)
Definition: polar.h:33
Polar operator*(const Polar &o) const
Definition: polar.h:29
auto & operator-=(const Polar &o)
Definition: polar.h:26
float rot
Definition: polar.h:19
auto & operator+=(const Polar &o)
Definition: polar.h:25
Polar operator/(const float k) const
Definition: polar.h:32
float tra
Definition: polar.h:18
Polar operator+(const Polar &o) const
Definition: polar.h:27
Polar operator*(const float k) const
Definition: polar.h:31
Polar operator/(const Polar &o) const
Definition: polar.h:30
constexpr Polar()
Definition: polar.h:22
constexpr Polar(const float tra, const float rot)
Definition: polar.h:23
void clear()
Definition: polar.h:24