+ /*! \brief Return parking direction
+
+ Return `true` if the direction of the parking in the
+ slot is forward.
+ */
+ bool forward();
+ /*! \brief Guess goal car
+
+ Set the goal car guessed from the parking slot.
+ */
+ void guess_gc();
+ /*! \brief Return last maneuver to the parking slot.
+
+ Return path from entry point towards parking slot, such
+ that ``cc`` is inside the parking slot at the end.
+ */
+ std::vector<BicycleCar> last_maneuver();
+ /*! \brief Has current car `cc` left?
+
+ Return `true` if the current car `cc` left the parking
+ slot `ps`;
+ */
+ bool left();
+ /*! \brief Is the goal car `gc` parked?
+
+ Return `true` if the goal car `gc` is inside the
+ parking slot `ps`.
+ */
+ bool parked();
+ /*! \brief Return possible starts of parking maneuver
+
+ When any `BicycleCar` of possible inits is reached, then
+ parking maneuver is a peace of cake.
+
+ \param cnt Number of inits.
+ \param dist Distance between inits.
+ */
+ std::vector<BicycleCar> possible_goals(
+ unsigned int cnt,
+ double dist
+ );
+ std::vector<BicycleCar> possible_goals()
+ {
+ return this->possible_goals(10, 0.5);
+ }
+ /*! \brief Shrink parking slot to perfect length.
+
+ Based on goal car dimensions, shrink `p1` and `p2`
+ towards the `p3` and `p4`. (Because backward parallel
+ parking).
+
+ NOTE: This function works for parallel parking only.
+ */
+ void shrink_to_perfect_len();