Als we de doorsnede van twee gegeven rechthoeken in het Euclidische vlak moeten bepalen, dan zijn er vier mogelijkheden. De doorsnede is ofwel leeg, een punt (gemeenschappelijk hoekpunt), een lijnstuk of een rechthoek.

doorsnede rechthoeken

Opgave

Definieer een klasse Punt waarmee punten in het Euclidische vlak met gehele coördinaten kunnen voorgesteld worden. Deze klasse moet ondersteuning bieden aan de volgende methoden:

Definieer een klasse Lijnstuk waarmee lijnstukken in het Euclidische vlak kunnen voorgesteld worden die een lengte hebben groter dan nul. Deze klasse moet ondersteuning bieden aan de volgende methoden:

Definieer een klasse Rechthoek waarmee rechthoeken in het Euclidische vlak kunnen voorgesteld worden die een oppervlakte hebben groter dan nul. Deze klasse moet ondersteuning bieden aan de volgende methoden:

Voorbeeld

>>> p1 = Punt(1, 2)
>>> p1
Punt(1, 2)
>>> print(p1.x, p1.y)
1 2
>>> p2 = Punt(3, 5)
>>> print(p2)
Punt(3, 5)
>>> p1 < p2
True
>>> p1.afstand(p2)
3.605551275463989

>>> l1 = Lijnstuk(Punt(1,2), Punt(3, 4))
>>> l1
Lijnstuk(Punt(1, 2), Punt(3, 4))
>>> print(l1.punt1, l1.punt2)
Punt(1, 2) Punt(3, 4)
>>> l1.lengte()
2.8284271247461903
>>> l2 = Lijnstuk(Punt(5, -4), Punt(-2, 3))
>>> print(l2)
Lijnstuk(Punt(-2, 3), Punt(5, -4))
>>> l2.lengte()
9.899494936611665
>>> l3 = Lijnstuk(Punt(1,2), Punt(1, 2))
Traceback (most recent call last):
AssertionError: lijnstuk moet lengte hebben die groter is dan nul

>>> r1 = Rechthoek(Punt(1, 1), Punt(4, 4))
>>> r1
Rechthoek(Punt(1, 1), Punt(4, 4))
>>> r1.oppervlakte()
9
>>> r2 = Rechthoek(Punt(6, 3), Punt(3, 6))
>>> r3 = Rechthoek(Punt(6, 3), Punt(4, 2))
>>> print(r3)
Rechthoek(Punt(4, 2), Punt(6, 3))
>>> r3.oppervlakte()
2
>>> r4 = Rechthoek(Punt(-7, -3), Punt(1, 1))
>>> r1.doorsnede(r2)
Rechthoek(Punt(3, 3), Punt(4, 4))
>>> r1.doorsnede(r3)
Lijnstuk(Punt(4, 2), Punt(4, 3))
>>> r2.doorsnede(r3)
Lijnstuk(Punt(4, 3), Punt(6, 3))
>>> r1.doorsnede(r4)
Punt(1, 1)
>>> r5 = Rechthoek(Punt(1, 1), Punt(1, 1))
Traceback (most recent call last):
AssertionError: rechthoek moet oppervlakte hebben die groter is dan nul