]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/blobdiff - incl/bcar.hh
Add inner/outer mirror radius computation
[hubacji1/bcar.git] / incl / bcar.hh
index 9e709862d99495139a56debba759425175f76225..d6b764cb64e9814d43e8183e13874f44f0f0e6cb 100644 (file)
@@ -86,6 +86,9 @@ public:
        /*! Return Euclidean distance to `p`. */
        double edist(Point const& p) const;
 
+       /*! Generate output for plotting with gnuplot. */
+       void gen_gnuplot_to(std::ostream& out);
+
        bool operator==(Point const& p);
        friend std::ostream& operator<<(std::ostream& out, Point const& p);
 };
@@ -201,7 +204,8 @@ public:
 class CarSize {
 private:
        double _curb_to_curb = 10.802166641822163;
-       double _width = 1.945; // including mirrors
+       double _width_with_mirrors = 1.945;
+       double _width = 1.771;
        double _wheelbase = 2.588;
        double _distance_to_front = 3.427;
        double _length = 4.084;
@@ -225,6 +229,12 @@ public:
        /*! Set width. */
        void w(double w);
 
+       /*! Get width with mirrors. */
+       double wwm() const;
+
+       /*! Set width with mirrors. */
+       void wwm(double w);
+
        /*! Get length. */
        double len() const;
 
@@ -283,6 +293,20 @@ public:
         */
        double orradi() const;
 
+       /*! \brief Return inner mirror radius.
+        *
+        * The inner mirror radius is the distance from minimum turning radius
+        * circle center to the farther mirror (from the rear axle view).
+        */
+       double imradi() const;
+
+       /*! \brief Return outer mirror radius.
+        *
+        * The outer mirror radius is the distance from minimum turning radius
+        * circle center to the farther mirror (from the rear axle view).
+        */
+       double omradi() const;
+
        /*! \brief Return length of perfect parking slot.
         *
         * The width of the slot is the same as the width of the car.
@@ -417,6 +441,24 @@ public:
        /*! Get frame's right front axle point. */
        Point rfa() const;
 
+       /*! Get frame's left front mirror x coordinate. */
+       double lfmx() const;
+
+       /*! Get frame's left front mirror y coordinate. */
+       double lfmy() const;
+
+       /*! Get frame's right front mirror x coordinate. */
+       double rfmx() const;
+
+       /*! Get frame's right front mirror y coordinate. */
+       double rfmy() const;
+
+       /*! Get iframe's left front mirror point. */
+       Point lfm() const;
+
+       /*! Get frame's right front mirror point. */
+       Point rfm() const;
+
        /*! Get frame's center front x coordinate. */
        double cfx() const;
 
@@ -434,6 +476,26 @@ public:
 
        /*! Next car position based on speed `sp` and steer `st`. */
        void next();
+
+       /*! Options for generating output for gnuplot. */
+       class GenPlotOpts {
+       public:
+               static bool LEFT;
+               static bool RIGHT;
+               static bool REAR;
+               static bool FRONT;
+               static bool FRAME;
+               static bool ARROW;
+               static bool CROSS;
+               static bool CAR;
+               static bool LEFT_MIRROR;
+               static bool RIGHT_MIRROR;
+               static bool MIRRORS;
+               static bool ALL;
+       };
+
+       /*! Generate output for plotting with gnuplot. */
+       void gen_gnuplot_to(std::ostream& out, GenPlotOpts const& opts);
 };
 
 } // namespace bcar