]> rtime.felk.cvut.cz Git - hubacji1/bcar.git/commitdiff
Add collide method
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 15 Jul 2021 11:03:44 +0000 (13:03 +0200)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 15 Jul 2021 14:17:37 +0000 (16:17 +0200)
incl/pslot.hh
src/pslot.cc

index 85fdb771f4b3f045a62a0eb6d7f640b49f5519bf..b9d4ff52dda6db1e55fe82312997f08d24ec04bb 100644 (file)
@@ -77,6 +77,9 @@ public:
        /*! Return `true` if car `c` is parking in slot `this`. */
        bool parked(BicycleCar const& c) const;
 
+       /*! Return `true` if `c`'s car frame collide with `this` border. */
+       bool collide(BicycleCar const& c) const;
+
        friend std::ostream& operator<<(std::ostream& o, ParkingSlot const& s);
 };
 
index 1864de9f037afd84925408aaf90dfe523dfdd3fd..5c17a0c4e24b6fb4c4c78950bf87f5b86fdd4160 100644 (file)
@@ -123,6 +123,23 @@ ParkingSlot::parked(BicycleCar const& c) const
                && c.rr().inside_of(b) && c.rf().inside_of(b);
 }
 
+bool
+ParkingSlot::collide(BicycleCar const& c) const
+{
+       return c.left().intersects_with(this->rear_)
+               && c.left().intersects_with(this->curb_)
+               && c.left().intersects_with(this->front_)
+               && c.rear().intersects_with(this->rear_)
+               && c.rear().intersects_with(this->curb_)
+               && c.rear().intersects_with(this->front_)
+               && c.right().intersects_with(this->rear_)
+               && c.right().intersects_with(this->curb_)
+               && c.right().intersects_with(this->front_)
+               && c.front().intersects_with(this->rear_)
+               && c.front().intersects_with(this->curb_)
+               && c.front().intersects_with(this->front_);
+}
+
 std::ostream&
 operator<<(std::ostream& o, ParkingSlot const& s)
 {