Napisz strukturę (klasę) Rectangle reprezentującą prostokąt o bokach równoległych do osi współrzędnych. Wyposaż ją w konstruktor przyjmujący współrzędne dwóch punktów będących dowolnymi przeciwległymi wierzchołkami prostokąta, metody X1, Y1, X2, Y2 pozwalające odczytać współrzędne (X1 to współrzędna x lewego dolnego wierzchołka itd.), metodę Area obliczającą pole prostokąta, metodę Intersects sprawdzającą czy prostokąt ma część wspólną z innym prostokątem i metodę Intersection, zwracającą prostokąt będący częścią wspólną prostokątów. Testy do przejścia i do uzupełnienia:
Kod: Zaznacz cały
void testRectangle(void)
{
Rectangle r1(1.0,1.0,2.0,2.0);
Rectangle r2(3.0,3.0,4.0,4.0);
Rectangle r3(1.5,1.5,2.5,2.5);
assert(r1.Area()==1);
assert(!r1.Intersects(r2));
assert(r1.Intersects(r3));
Rectangle r4 = r1.Intersection(r3);
assert(r4.X1()==1.5); // ok, 1.5 ma scisla reprezentacje zmiennoprzecinkowa
assert(r4.Y1()==1.5);
assert(r4.X2()==2.0);
assert(r4.Y2()==2.0);
}
Klasa wygląda tak:
Kod: Zaznacz cały
class Rectangle
{
int x1_;
int y1_;
int x2_;
int y2_;
public:
Rectangle(double ,double ,double ,double);
double Area();
double X1();
double Y1();
double X2();
double Y2();
bool Intersects(Rectangle a);
double Intersection (Rectangle a);
};