]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/blob - src/prove_parallel_slot.cc
Add code to prove parallel slot dimensions
[hubacji1/bcar.git] / src / prove_parallel_slot.cc
1 #include <iostream>
2 #include <vector>
3 #include "pslot.hh"
4
5 #define CAR_CURB_TO_CURB 10.820
6 #define CAR_WIDTH 1.625
7 #define CAR_WHEELBASE 2.450
8 #define CAR_DISTANCE_FROM_REAR_AXLE_TO_FRONT 3.105
9 #define CAR_LENGTH 3.760
10
11 #define SLOT_MAX_WIDTH 2.2
12 #define SLOT_STEP_LENGTH 0.01
13 #define SLOT_STEP_WIDTH 0.01
14
15 #define PARKING_SPEED -0.001
16 #define MAX_CUSP 10
17 #define DELTA_ANGLE_TO_SLOT 0.0001
18
19 int main()
20 {
21         std::cout << std::fixed;
22         std::cerr << std::fixed;
23
24         bcar::BicycleCar c;
25         c.ctc(CAR_CURB_TO_CURB);
26         c.w(CAR_WIDTH);
27         c.wb(CAR_WHEELBASE);
28         c.df(CAR_DISTANCE_FROM_REAR_AXLE_TO_FRONT);
29         c.len(CAR_LENGTH);
30
31         bcar::Point zp(0.0, 0.0);
32         double zh = 0.0;
33         double w = c.w() + 4.5 * SLOT_STEP_WIDTH;
34
35         while (w < SLOT_MAX_WIDTH) {
36                 double len = c.len() + SLOT_STEP_LENGTH;
37                 while (true) {
38                         bcar::ParkingSlot s(zp, zh, w, len);
39                         s.set_parking_speed(PARKING_SPEED);
40                         s.set_max_cusp(MAX_CUSP);
41                         s.set_delta_angle_to_slot(DELTA_ANGLE_TO_SLOT);
42                         auto pr = s.fe(c);
43                         if (!(pr.x() == 0.0 && pr.y() == 0.0 && pr.b() == 0.0
44                                         && pr.e() == 0.0)) {
45                                 std::cout << w << " " << len << std::endl;
46                                 break;
47                         }
48                         len += SLOT_STEP_LENGTH;
49                 }
50                 w += SLOT_STEP_WIDTH;
51         }
52         return 0;
53 }