Polygon- Flächen verlgleichen ohne Areas

KarlPichler

Mitglied
Hallo Java Freunde,

Ich stehe wiedermal an.

Um was gehts?
Ich habe eine kleines Prgramm erstellt wo ich diverse Ploygone per Eingabe auf eine Fläche zeichen lasse.
Nun möchte ich eine "Crash- Control" einbauen. Diese Crash Control sollte immer eine Fehlermeldung werfen wenn sich zwei Polygone überlappen. (siehe pic)
cr2.jpg

nun gäbe es natürlich die billige variante dieses Problem mit
Code:
Area1.intersect(Area2);
zu lösen.

mein problem ist allerdings das ich die java.awt.geom.area Klasse nicht zur Verfügung habe.

Nun wollte ich euch Experten fragen ob Ihr irgendeine Alternative wisst?
Würde mir sehr weiterhelfen.

Zur Info. Ich verwende Java 1.1.8! (geht leider nicht anders)

Danke jetzt schon mal für die Antworten!

LG
 
Hi

ist das Ganze "nur" zweidimensional oder nicht?
Sind alle Polygone konvex (die Hülle hat keine "Einbuchtungen" nach innen) oder nicht?
Können die Polygone Löcher haben?

Wie sind die Polygone gespeichert?
Punktmenge geordnet oder ...?
 
hi,

ja es ist alles zweidimensional.
momentan gibts rechtecke, dreiecke sowie L- Shapes.

beispielsweise: das dreieck polygon ist gespeichert wie folgt:

Code:
					xVector[0] = (int)(positionX - originX);
					xVector[1] = (int)(positionX + (length - originX));
					xVector[2] = (int)((positionX - originX) + length1);

					yVector[0] = (int)(positionY - originY);
					yVector[1] = (int)(positionY - originY);
					yVector[2] = (int)((positionY - originY) + width);
					
					Polygon r1 = new Polygon(xVector, yVector, 3);

LG

Hallo noch mal,
@Sheel: hast du eine Idee?

LG
 
Zuletzt bearbeitet von einem Moderator:
schau dir doch mal java.awt.Polygon an. Das enthält auch die Methode contains(), die genau das tun soll, was du brauchst.
 
Ergänzend: Genau.
Beim Polygon 1 contains für jeden Punkt vom Polygon 2 aufrufen
(Anzahl npoints, Koordinaten eben xpoints[]/ypoints[])
Wenn einer/mehrere der Punkte contained sind überschneiden sich die zwei Polygone.

Und bitte nicht pushen.
Kann leider auch nicht 24/7 hier sein.
 
hmmm ohne mit die cotain tiefergehend zu verstehen, funktioniert das auch wenn sich Poligone überschneiden ohne dass die jeweiligen Punkte innerhalb des sich jeweiligen Poligons befinden?
 
Hm. Stimmt eigentlich, das geht ja auch :D
...das artet ganz schön aus.
Man könnte ja jede "Linie" von Polygon 1 mit jeder von Polygon 2 auf Schnittpunkt prüfen...
und zusätzlich noch ein conains, ob P2 vllt. ganz in P1 ist (oder umgekehrt).

Wobei ich dieser conatinsmethode irgendwie auch nicht ganz traue.

...und kann die Polygonklasse mit Löchern umgehen?...
 
Das geht noch viel leichter:
Du iterierst bei beiden Polygonen jeweils über alle Punkte und überprüfst, ob sie im jeweils anderen Polygon liegen. Damit sollten die meisten Eventualitäten abgedeckt sein.
 
Zurück