Testen, ob zwei Bereiche sich überschneiden?
Übersicht

WandererBetreff: Testen, ob zwei Bereiche sich überschneiden? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir jemand einen Tipp geben, wie ich testen kann, ob sich zwei Rechtecke (die auch 'gedreht' sein können) irgendwo überlappen? Jedes Rechteck wird hierbei durch vier Eckpunkte definiert, wobei RectsOverlap nicht funktioniert, da die Rechtecke ja auch rotiert sein können.
Eventuell mit Vektoren? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
So auf Anhieb würd ich die Rechtecke in Images speichern, evtl. drehen und mit ImagesCollide prüfen. die mathematische Methode wurde schonmal erklärt, wenn ich mich recht entsinne. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die 'Rechtecke' sind eigentlich 3D-Quads, bei denen (aus welchem Grund auch immer) MeshesIntersect() nicht funktioniert (vielleicht, weil sie keine Tiefe haben??), deswegen muss ich irgendwie mit den Koordinaten der Vertices arbeiten ![]() Eine Suche bringt leider nichts, da ich nicht weiss, nach welchem Keyword ich suchen soll -und weil man hier das Keyword leider auch nicht auf die Titel beschränken kann, kommen viel zu viele Treffer. Ich habe auch schon versucht, einfach nur jeden der vier Punkte eines Rechtecks in das Koordinatensystem des anderen Rechtecks zu übetragen und abzufragen -aber das funktioniert nur, wenn einer der Eckpunkte auch wirklich im anderen Rechteck liegt. Wenn nur die 'Kante' zwischen zwei Punkten im anderen Rechteck liegt, wird das so nicht erkannt. Dazu müsste ich jeden einzelnen Punkte der Fläche abfragen -was sicherlich Unsinn wäre, den das ganze müsste doch auch mit einer 'Mengenformel' oder so zu lösen sein. Grübel... |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Als Suchwörter bieten sich Recht* überschneiden an, dazu der Punkt 'Nach allen Begriffen suchen' . | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Keine brauchbaren Ergebnisse -weder hier, noch bei Blitzcoders, noch im Blitzforum, noch über Google. Keywords: Quads, overlap, intersect, areas etc.. -glaubst du mir jetzt? ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Www.Blitzbase.de
Und dann schaust du, ob sich die 4 Linien Kreuzen. |
||
between angels and insects |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jan_: Das würde noch nicht reichen, was wenn ein Rechteck komplett im andern ist?
Du müsstest testen können, ob sich ein Punkt in einem gedrehten Rechteck befindet, indem du den Punkt erst "zurück" drehst (also mit dem negativen Drehwinkel des Rechteckes) und dann schaust, ob er innerhalb des Bereiches des Rechteckes ist - das ist ja nicht schwer. Dann teste einfach alle Punkte jedes Rechteckes, ob sie sich im anderen befinden. Vielleicht reicht es auch, alle Punkte des einen und nur einen Punkt des anderen Rechteckes zu testen. Die Formeln zum Drehen gibts irgendwo hier im Forum, da bin ich mir sicher, ich werd auch gleich mal suchen. Edit: Gefunden: https://www.blitzforum.de/view...ehen+punkt |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, dann testet man noch mit Point in Area von Blitzbase.de, ob er drinne ist. | ||
between angels and insects |
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit dem 'zurückrotieren' wird recht kompliziert - vor allem, wenn man bedenkt, das auch BEIDE Rechtecke gedreht sein können. Was dann? Hier mal ein paar Beispiele:
![]() Ich denke immer noch, daß man das mit Vektoren lösen könnte (z.B. testen, ob Linien sich überkreuzen) -oder irgendwie als 'Punktmengen', die sich schneiden -aber wie setzt man das um? ![]() |
||
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich Idiot ![]() |
||
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mist! Da gibt es doch noch ein Problem: wenn zwei längliche Rechtecke wie ein 'Kreuz' übereinander liegen, also keiner der Eckpunkte in der Fläche des anderen liegt, funktioniert das nicht...
Es muß doch möglich sein, die Überschneidung / Überlappung von Flächen mit einer Formel zu testen. ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
LESEN BILDET
Jan_ hat Folgendes geschrieben: Www.Blitzbase.de
Und dann schaust du, ob sich die 4 Linien Kreuzen. Dort Quellcodes dann Linien Test und du hast es, Schaga! |
||
between angels and insects |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jan_ hat Folgendes geschrieben: LESEN BILDET
Jan_ hat Folgendes geschrieben: Www.Blitzbase.de
Und dann schaust du, ob sich die 4 Linien Kreuzen. Dort Quellcodes dann Linien Test und du hast es, Schaga! Das könnte man zu dir sagen. Was ist wenn ein Rechteck komplett in einem anderen steckt? |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm, Balato, Lesen Bildet,
1. Was habe ich darauf schonmal oben geschrieben? 2. Klingt es nciht so, als ob er diese Version schon beseitigt hat? |
||
between angels and insects |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann musst du rechteck in 2 dreicke aufteilen und die punkt-in-3eck-routine dafür für jeden endpunkt verwenden | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group