]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/blobdiff - src/bcar.cc
Add perfect parking slot length computation
[hubacji1/bcar.git] / src / bcar.cc
index a882488f207ce6fb6abdc29db79a73185025cf02..a161a0090f19e4fee0b2b17ed02714548cdc0e49 100644 (file)
@@ -34,6 +34,26 @@ double BicycleCar::orradi() const
         return sqrt(pow(this->mtr() + this->w() / 2, 2) + pow(this->dr(), 2));
 }
 
+double BicycleCar::perfect_parking_slot_len() const
+{
+        // see Simon R. Blackburn *The Geometry of Perfect Parking*
+        // see https://www.ma.rhul.ac.uk/SRBparking
+        double r = this->ctc() / 2;
+        double l = this->wb();
+        double k = this->df() - this->wb();
+        double w = this->w();
+        return
+                this->l()
+                + sqrt(
+                        (r*r - l*l)
+                        + pow(l + k, 2)
+                        - pow(sqrt(r*r - l*l) - w, 2)
+                )
+                - l
+                - k
+        ;
+}
+
 void BicycleCar::set_max_steer()
 {
         this->st(asin(this->wb() / (10.82 / 2)));