65 lines
1.5 KiB
C++
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";
|
|
}; |