Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Überprüfen ob ein rectangle ein anderes überlappt (https://www.delphipraxis.net/157461-ueberpruefen-ob-ein-rectangle-ein-anderes-ueberlappt.html)

DeddyH 14. Jan 2011 10:56

AW: Überprüfen ob ein rectangle ein anderes überlappt
 
Die Overlap-Funktion definiert Überlappung dadurch, dass das eine Rechteck nicht komplett rechts, links, oben oder unten des anderen steht. Das sollte schon korrekt sein IMO.

Deep-Sea 14. Jan 2011 10:59

AW: Überprüfen ob ein rectangle ein anderes überlappt
 
@Memnarch:
Wenn du alles umkehrst, also aus AND ein OR machst und aus "Größer als" ein "Kleiner gleich" usw., und dann vor die ganzen Sache noch ein NOT stellst, hast du exakt die gleiche Abfrage geschaffen :wink:

Memnarch 14. Jan 2011 21:59

AW: Überprüfen ob ein rectangle ein anderes überlappt
 
Aha..hatte die funktion so gelesen als ob sie TRUE zurückgibt wen alle 4 ecken von rechteck a in rechteck b sin :stupid:

mz23 16. Jan 2011 16:55

AW: Überprüfen ob ein rectangle ein anderes überlappt
 
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

DeddyH 16. Jan 2011 17:14

AW: Überprüfen ob ein rectangle ein anderes überlappt
 
Und damit man sich darüber nicht den Kopf zerbrechen muss, kann man auf IntersectRect zurückgreifen. Somit wären wir wieder am Anfang des Threads.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz