*/
bool on_right_side_of(Line const& li) const;
+ /*! \brief Translate self.
+ *
+ * \param p `Point` offset to translate by.
+ */
+ void translate(Point const& p);
+
/*! \brief Rotate self around the point.
\param c Rotation center `Point`.
*/
void rotate(Point const& c, double const angl);
+ /*! \brief Compute reflection of `this` around the `Line`.
+ *
+ * \param li The plane to reflect around is given by `li`.
+ */
+ void reflect(Line const& li);
+
/*! Return Euclidean distance to `p`. */
double edist(Point const& p) const;
+ bool operator==(Point const& p);
friend std::ostream& operator<<(std::ostream& out, Point const& p);
};
double len() const;
+ double h() const;
+
friend std::ostream& operator<<(std::ostream& out, Line const& li);
};
void rotate(Point const& c, double const angl);
+ void reflect(Line const& li);
+
+ bool operator==(Pose const& p);
friend std::ostream& operator<<(std::ostream& out, Pose const& p);
};
class PoseRange : public virtual Pose {
private:
- double e_ = 0.0;
- using Pose::h;
+ Pose bp_;
+ Pose ep_;
+ void set_xyh();
public:
+ PoseRange(Pose bp, Pose ep);
+ PoseRange(double x, double y, double b, double e);
+
+ Pose bp() const;
+ Pose ep() const;
+
/*! Get heading's begin in the interval [-pi, +pi] radians. */
double b() const;
- /*! Set heading's begin in radians. It's recomputed to [-pi, +pi]. */
- void b(double b);
-
/*! Get heading's end in the interval [-pi, +pi] radians. */
double e() const;
- /*! Set heading's end in radians. It's recomputed to [-pi, +pi]. */
- void e(double e);
-
+ void translate(Point const& p);
void rotate(Point const& c, double const angl);
+ void reflect(Line const& li);
friend std::ostream& operator<<(std::ostream& out, PoseRange const& p);
};