10 /*! \brief Parking Slot Planner basic class.
12 \param cc Current bicycle car.
13 \param ps Parking slot.
22 unsigned int c_ = 0; // number of cusps
23 std::vector<BicycleCar> cusps_;
27 void fe_perpendicular();
28 // find entry to slot by reverse approach
30 void fer_perpendicular();
34 /*! \brief Return `true` if there is collision.
36 If the parking slot `ps` collide with current car `cc`,
39 This method depends on `intersection` function that
40 returns `true` or `false` if two line segments collide.
41 Each line segment of current car `cc` (borders) is
42 checked to each line segment of parking slot `ps`
46 /*! \brief Return parking direction
48 Return `true` if the direction of the parking in the
52 /*! \brief Guess goal car
54 Set the goal car guessed from the parking slot.
57 /*! \brief Return last maneuver to the parking slot.
59 Return path from entry point towards parking slot, such
60 that ``cc`` is inside the parking slot at the end.
62 std::vector<BicycleCar> last_maneuver();
63 /*! \brief Has current car `cc` left?
65 Return `true` if the current car `cc` left the parking
69 /*! \brief Is the goal car `gc` parked?
71 Return `true` if the goal car `gc` is inside the
75 /*! \brief Return possible starts of parking maneuver
77 When any `BicycleCar` of possible inits is reached, then
78 parking maneuver is a peace of cake.
80 \param cnt Number of inits.
81 \param dist Distance between inits.
83 std::vector<BicycleCar> possible_goals(
87 std::vector<BicycleCar> possible_goals()
89 return this->possible_goals(10, 0.5);
93 /*! \brief Find entry to the parking slot.
96 /*! \brief Find entry to slot by reverse approach.
98 See `Vorobieva2015` for more information.
103 BicycleCar &cc() { return this->cc_; }
104 BicycleCar &gc() { return this->gc_; }
105 ParkingSlot &ps() { return this->ps_; }
107 unsigned int c() const { return this->c_; }
108 std::vector<BicycleCar> &cusps() { return this->cusps_; }