diff options
1 files changed, 38 insertions, 0 deletions
| -rw-r--r-- | Sem. 13/ShapeCollection/Rectangle.cpp | 38 |
diff --git a/Sem. 13/ShapeCollection/Rectangle.cpp b/Sem. 13/ShapeCollection/Rectangle.cpp new file mode 100644 index 0000000..448dcc7 --- /dev/null +++ b/Sem. 13/ShapeCollection/Rectangle.cpp @@ -0,0 +1,38 @@ +#include "Rectangle.h" + +Rectangle::Rectangle(int x1, int y1, int x3, int y3) : Shape(4) +{ + setPoint(0, x1, y1); + setPoint(1, x1, y3); + setPoint(2, x3, y3); + setPoint(3, x3, y1); +} +double Rectangle::getArea() const +{ + Shape::point p0 = getPointAtIndex(0); + Shape::point p1 = getPointAtIndex(1); + Shape::point p3 = getPointAtIndex(3); + + return p0.getDist(p1) * p0.getDist(p3); + +} +double Rectangle::getPer() const +{ + Shape::point p0 = getPointAtIndex(0); + Shape::point p1 = getPointAtIndex(1); + Shape::point p3 = getPointAtIndex(3); + + return 2*(p0.getDist(p1) + p0.getDist(p3)); +} + +bool Rectangle::isPointIn(int x, int y) const +{ + Shape::point p(x, y); + return p.x >= getPointAtIndex(0).x && p.y >= getPointAtIndex(1).x && + p.y <= getPointAtIndex(0).y && p.y >= getPointAtIndex(2).y; +} +Shape* Rectangle::clone() const +{ + Shape* copy = new Rectangle(*this); + return copy; +} |
