OOP_zadanie4/Rectangle.cpp

65 lines
1.5 KiB
C++

#include "Rectangle.h"
double Rectangle::smallest(double x, double y) {
return (x < y) ? x : y;
}
double Rectangle::biggest(double x, double y) {
return (x > y) ? x : y;
}
double Rectangle::symmetricDifference(Rectangle& rectangle1, Rectangle& rectangle2) {
double differenceX = rectangle1.x - rectangle2.x;
double differenceY = rectangle1.y - rectangle2.y;
if (differenceX < 0 || differenceY < 0) {
double tmpRectangle1 = \
(biggest(rectangle1.x, rectangle2.x) - smallest(rectangle1.x, rectangle2.x)) * \
smallest(rectangle1.y, rectangle2.y);
double tmpRectangle2 = \
(biggest(rectangle1.y, rectangle2.y) - smallest(rectangle1.y, rectangle2.y)) * \
smallest(rectangle1.x, rectangle2.x);
double area = tmpRectangle1 + tmpRectangle2;
return area;
}
else {
//one rectangle is in inside another one
//biggest rect area - smallest rect area
double area = \
biggest(rectangle1.x, rectangle2.x) * biggest(rectangle1.y, rectangle2.y) - \
smallest(rectangle1.x, rectangle2.x) * smallest(rectangle1.y, rectangle2.y);
return area;
}
};
Rectangle::Rectangle(double x, double y) {
this->x = x;
this->y = y;
};
Rectangle::~Rectangle() {
};
Rectangle Rectangle::operator - () {
return Rectangle(
this->x * -1,
this->y * -1
);
};
double operator-(Rectangle& rectangle1, Rectangle& rectangle2) {
return Rectangle::symmetricDifference(rectangle1, rectangle2);
};
void Rectangle::print() {
std::cout << "X = " << this->x << "\n";
std::cout << "Y = " << this->y << "\n";
};