Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 13 / ShapeCollection / Rectangle.cpp
diff options
context:
space:
mode:
Commit110481bee48bdb18f3d635cbc507aac1acc7c694 (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2022-05-24 20:10:50 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2022-05-24 20:10:50 +0300
Filesbe2cdf7f8769afd0f456776871b16fe8868ae67b /Sem. 13/ShapeCollection/Rectangle.cpp
Object-oriented_programming_FMI-110481bee48bdb18f3d635cbc507aac1acc7c694.tar
Object-oriented_programming_FMI-110481bee48bdb18f3d635cbc507aac1acc7c694.tar.gz
Object-oriented_programming_FMI-110481bee48bdb18f3d635cbc507aac1acc7c694.zip
Parentc1a310e69933035fb385f52275e9b80cdad695fc (diff)
added shapes collection
1 files changed, 38 insertions, 0 deletions
-rw-r--r--Sem. 13/ShapeCollection/Rectangle.cpp38
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;
+}