Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Überschneiden sich zwei Vierecke (nicht Rechtecke)? (https://www.delphipraxis.net/78642-ueberschneiden-sich-zwei-vierecke-nicht-rechtecke.html)

xaromz 8. Okt 2006 18:15


Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Hallo,

es gibt ja (auch hier in der DP) Algorithmen, um zu überprüfen, ob sich zwei Rechtecke überlappen.
Wie prüfe ich so etwas bei zwei beliebigen Vierecken bzw. bei einem Rechteck und einem Viereck?

Gruß
xaromz

ste_ett 8. Okt 2006 18:26

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
MSDN-Library durchsuchenRegion Functions

Mit "Create...Rgn()" kannst du beliebige Regionen erstellen und mit "...InRgn()" kannst du prüfen, ob ein Viereck in einer Region liegt. :)

BenjaminH 8. Okt 2006 18:29

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Hallo,
nehme das eine Polygon als ganzes
und prüfe dann für die einzelnen Punkte des anderen, ob sie innerhalb des ersten sind, sind sie's, schneiden sie sich.
prüfen ob ein Punkt innerhalb eines Polygons ist
Der erste Link, der dort gepostet wurde beschreibt eine Lösung in C, das habe ich aber soweit ich mich erinnern kann nach Delphi übersetzt, wenn du willst kann ich dir das raussuchen.
Den letzten Link, den sniper_w gepostet hat, habe ich damals dann nicht mehr angesehen, aber ich denke, dass ist das, was du brauchst.

[Edit]Schade, SirThornberry hat recht, da war ich wohl zu vorschnell :oops:

xaromz 8. Okt 2006 18:30

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Hallo,
Zitat:

Zitat von ste_ett

Ich weiß. Ich wollte aber keine Windows-Funktion, sondern einen Algorithmus :wink: .

Gruß
xaromz

SirThornberry 8. Okt 2006 18:32

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Zitat:

Zitat von BenjaminH
Hallo,
nehme das eine Polygon als ganzes
und prüfe dann für die einzelnen Punkte des anderen, ob sie innerhalb des ersten sind, sind sie's, schneiden sie sich.
prüfen ob ein Punkt innerhalb eines Polygons ist
Der erste Link, der dort gepostet wurde beschreibt eine Lösung in C, das habe ich aber soweit ich mich erinnern kann nach Delphi übersetzt, wenn du willst kann ich dir das raussuchen.
Den letzten Link, den sniper_w gepostet hat, habe ich damals dann nicht mehr angesehen, aber ich denke, dass ist das, was du brauchst.

auch wenn die Punkte nicht innerhalb des Polygons sind kann es trotzdem dieses überdecken bzw. können sich die Linien schneiden.

mkinzler 8. Okt 2006 18:50

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Du könntest jede Kante der beiden Polygone gegenenander auf Überschneidung testen.

negaH 8. Okt 2006 19:02

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Windows API -> IntersectRect();

Gruß Hagen

xaromz 8. Okt 2006 19:05

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Hallo,
Zitat:

Zitat von mkinzler
Du könntest jede Kante der beiden Polygone gegenenander auf Überschneidung testen.

Und was mache ich, wenn das eine Polygon komplett im anderen liegt?

@Hagen: Es geht um allgemeine Vierecke, nicht Rechtecke. Außerdem: Ich will einen Algorithmus. Elegant, wenn's geht :wink: .

Gruß
xaromz

mkinzler 8. Okt 2006 19:08

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Zitat:

Und was mache ich, wenn das eine Polygon komplett im anderen liegt?
Das müßtest du dann zusätzlich austesten.

alcaeus 8. Okt 2006 19:34

Re: Überschneiden sich zwei Vierecke (nicht Rechtecke)?
 
Zitat:

Zitat von SirThornberry
Zitat:

Zitat von BenjaminH
Hallo,
nehme das eine Polygon als ganzes
und prüfe dann für die einzelnen Punkte des anderen, ob sie innerhalb des ersten sind, sind sie's, schneiden sie sich.
prüfen ob ein Punkt innerhalb eines Polygons ist
Der erste Link, der dort gepostet wurde beschreibt eine Lösung in C, das habe ich aber soweit ich mich erinnern kann nach Delphi übersetzt, wenn du willst kann ich dir das raussuchen.
Den letzten Link, den sniper_w gepostet hat, habe ich damals dann nicht mehr angesehen, aber ich denke, dass ist das, was du brauchst.

auch wenn die Punkte nicht innerhalb des Polygons sind kann es trotzdem dieses überdecken bzw. können sich die Linien schneiden.

Du musst pruefen ob mind. ein Eckpunkt von VE A in VE B liegt. Trifft das nicht zu, musst du pruefen ob ein Eckpunkt von B in A liegt ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.
Seite 1 von 2  1 2      

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