
Implementáld az alábbi matematikai négyzet osztályt.

------------------------------------------------------|
|  class Rect2                                        |
|-----------------------------------------------------|
| + x : float                                         |  
| + y : float                                         | 
| + w : float                                         |
| + h : float                                         |
| + get_area() : float                                |  -> Terület (w * h)
| + intersects(b : Rect2) : bool                      |  -> Lejjebb
| + intersects_include_borders(b : Rect2) : bool      |  -> Lejjebb
| + encloses(b : Rect2) : bool                        |  -> Lejjebb
| + has_no_area() : bool                              |
| + has_point(x : float, y : float) : bool            |  
| + is_equal_approx(b : Rect2) : bool                 |  
| + grow(by : float)                                  |  -> x, y, csökkent, w,h növel by-al
| + shrink(by : float)                                |  -> x, y, növel, w,h csökkent by-al
| + operator+=(b: Rect2)                              | 
| + operator-=(b: Rect2)                              |
| + operator+(a: Rect2, b: Rect2) : Rect2             |
| + operator-(a: Rect2, b: Rect2) : Rect2             |
| + operator==(b: Rect2) : bool                       |
| + operator!=(b: Rect2) : bool                       |
| + Rect2()                                           |
| + Rect2(b : Rect2)                                  |
| + Rect2(x : float, y : float)                       |
| + Rect2(x : float, y : float, w : float, h : float) |
------------------------------------------------------|

intersects:
	if (x >= (b.x + b.w))
		return false;

	if ((x + w) <= b.x)
		return false;

	if (y >= (b.y + b.h))
		return false;

	if ((y + h) <= b.y)
		return false;

    return true;

intersects_include_borders:
	if (x > (b.x + b.w))
		return false;

	if ((x + w) < b.x)
		return false;

	if (y > (b.y + b.h))
		return false;

	if ((y + h) < b.y)
		return false;

     return true;

Encloses:

return (b.x >= x) && (b.y >= y) &&
		((b.x + b.w) <= (x + w)) &&
		 ((b.y + b.h) <= (y + h));

