AW: Überprüfen ob ein rectangle ein anderes überlappt
16. Jan 2011, 17:55
Vielleicht liegt es daran, daß die einen von völliger Abdeckung eines Rechteckes durch ein anderes reden, andere bereits eine Teilabdeckung meinen. Wenn's ein Spiel mit Kollisionen ist, sollte man besser auf ein Berühren testen.
Konkret müssen 4 Fälle geprüft werden:
1) Stößt die Oberkante von Objekt A an die Unterkante von Objekt B, ...
wenn die linke Kante von A links von der rechten Kante von B liegt UND
rechts von der linken Kante von B ODER die rechte Kante von A rechts
von der linken Kante von B UND links von der rechten Kante von B liegt,
dann besteht die Möglichkeit, wenn Oberkante A gleich oder höher Unterkante
B UND Oberkante A gleich oder niedriger Oberkante B liegt.
2) Stößt die Unterkante von Objekt A an die Oberkante von Objekt B, ...
wenn die linke Kante von A links von der rechten Kante von B liegt UND
rechts von der linken Kante von B ODER die rechte Kante von A rechts
von der linken Kante von B UND links von der rechten Kante von B liegt,
dann besteht die Möglichkeit, wenn Unterkante A gleich oder niedriger
Oberkante B UND Oberkante A gleich oder höher Oberkante B liegt.
3) Stößt die linke Kante von Objekt A an die rechte Kante von Objekt B, ...
wenn die obere Kante von A oberhalb von der unteren Kante von B liegt UND
unterhalb der oberen Kante von B ODER die untere Kante von A unterhalb
der oberen Kante von B UND oberhalb der unteren Kante von B liegt,
dann besteht die Möglichkeit, wenn linke Kante A gleich oder linker
von rechter Kante B UND linke Kante A gleich oder rechter linker
Kante B liegt.
4) Stößt die rechte Kante von Objekt A an die linke Kante von Objekt B, ...
wenn die obere Kante von A oberhalb von der unteren Kante von B liegt UND
unterhalb der oberen Kante von B ODER die untere Kante von A unterhalb
der oberen Kante von B UND oberhalb der unteren Kante von B liegt,
dann besteht die Möglichkeit, wenn rechte Kante A gleich oder rechter
von linker Kante B UND rechte Kante A gleich oder linker rechter
Kante B liegt.
MfG mz23
|