Wie füge ich zwei Polygone (Arrays von Objekten) programmatisch zusammen?

8

[Bearbeiten: Ich habe versucht, meine Frage etwas umzuschreiben, weil es scheint, dass niemand versteht, was ich will ... und ich dachte, dass es nur für mich ein harter Algorithmus ist :)]

Das Problem, dem ich gegenüberstehe, ist das Verbinden einzelner Polygone. Jeder ist ein 4-Punkt-Polygon. Das Endergebnis ist dann eine Zusammenführung / Vereinigung von zwei Polygonen.

Das folgende Bild zeigt eine Version des möglichen Ergebnisses (die Ergebnisse können variieren, da dieser schwarz ausgefüllte Teil für jedes Ergebnis unterschiedlich sein kann).

Ich beginne mit etwas wie:

%Vor%

Und ich brauche einen Algorithmus, um die Vereinigung dieser beiden Mengen zu berechnen, also bekomme ich ein Ergebnis wie:

%Vor%

Ich muss es nicht visualisieren (selbst wenn ich das tue ..), ich brauche nur die Menge von Punkten, die ein neues Polygon definieren (Vereinigung dieser beiden), weil mein Endergebnis ein Schwerpunkt dieses verschmolzenen Polygons sein wird.
Ich habe bereits einen Algorithmus, um den Schwerpunkt basierend auf einer Menge von Eingabepunkten zu berechnen. Aber ich muss zuerst die richtigen Punkte bekommen.

Bis jetzt habe ich Erwähnungen über den Convex-Hüllen-Algorithmus gefunden, aber ich befürchte, dass dies folgendes Polygon erzeugen würde (was falsch ist):

BEARBEITEN:

So anders, wie man sich dieses Problem anschaut: Ich habe ein Programm, das mit Objekten arbeiten kann, die durch 4 Punkte repräsentiert werden. Jeder Punkt hat zwei Attribute (x-Koordinate, y-Koordinate).
Dann kann das Programm Linien zwischen diesen Punkten zeichnen. Diese Linien werden dann wie ein Quadrat, Rechteck oder Polygon aussehen. Dieses Ergebnis hängt von den gegebenen Koordinaten ab, aber ich weiß, dass ich immer Punkte verwenden werde, die Polygone erzeugen. Sobald die Punkte verbunden sind, kann das Programm diesen verbundenen Bereich füllen. Sobald dies gezeichnet ist, können Sie folgendes Bild sehen:

Ссылка

ABER: Das Programm weiß nicht, dass er gerade ein Polygon gemacht hat. Er weiß nur, dass er 4 Punkte von mir bekam, er verband sie und füllte sie.

Dann habe ich ein zweites Objekt (= Polygon), das durch eine andere Menge von Punkten (verschiedene Koordinaten) definiert ist. Programm weiß nicht, dass er ein gefülltes Polygon erstellt .. er hat nur einige Operationen mit 4 gegebenen Punkten gemacht. Ergebnis ist in diesem Fall ein anderes Polygon:

Ссылка

Nun zeichnen wir einfach zwei Polygone auf dem Display ... und geben ihnen solche Koordinaten, dass sie sich überlappen. Das Ergebnis sieht so aus (berücksichtigt nur den gefüllten Bereich):

Mein Programm zeichnet einfach zwei Polygone. Fein. Du kannst auf deinem Bildschirm nur ein Polygon sehen (weil es zwei Überlappungen gibt = sie sehen wie ein Stück aus) und Ich muss den Schwerpunkt dieses EINEN Stücks zählen .

Ich habe bereits einen Algorithmus, der eine Reihe von Punkten akzeptiert (die ein Punkte bildendes Polygon darstellen) und einen Schwerpunkt von diesen Punkten aus zählt. Aber ich kann den Algorithmus jetzt nicht benutzen, weil ich ihm die benötigten Punkte nicht geben kann, weil ich sie nicht kenne.

Hier sind die Punkte, die ich als Ergebnis haben möchte: Ссылка

Also sollte mein Algorithmus mit den Punkten A, B, C, D, E, F, G, H beginnen und er sollte mir als Ergebnis Punkte I, J, K, L, M, N geben.

Zusammenfassung: Ich muss einen Schwerpunkt des Polygons zählen, der das Ergebnis der Vereinigung / Zusammenführung zweier einzelner Polygone ist, die sich überlappen.

Und ich dachte, dass union of two polygons genug wäre, um zu erklären:)

    
Nsltpm 01.05.2011, 03:11
quelle

1 Antwort

9

Hier Ссылка ist eine Sammlung von Algorithmischen Geometriealgorithmen. Zumindest kannst du von dort ausgehen.

    
c-smile 01.05.2011 03:19
quelle

Tags und Links