Boost :: Geometrie Union Vereinfachung - wie es funktioniert?

8

Es gibt eine große Bibliothek für Geometrie in Boost. Es erlaubt auch, SVG-Bilder zu zeichnen. Ich möchte es in einem meiner Projekte verwenden, aber es funktioniert wirklich seltsam für mich (siehe Bild unten).

Also haben wir 3 Pixelpunkte, die als quadratische Polygone im 2ten Raum dargestellt werden

%Vor%

pic 1

Wir wollen von ihnen eine Vereinigung bekommen und sie vereinfachen, damit wir, wenn wir sie skalieren, ein Dreieck wie

bekommen %Vor%

pic 2

aber wir bekommen das:

wobei die gelbe gestrichelte Linie eine Vereinigung ist und Grün eine Vereinfachung ist.

Quellcode:

%Vor%

erfordert mindestens Boost 1.47.0 und 3 Dateien von Boost / Geometrie / Erweiterungen / io / svg /

Also wie man es vereinfacht, wie ich möchte, dass die Bedeutung wie pic 2 aussieht?

Aktualisieren

Neuer Code erstellt, funktioniert einwandfrei, ziemlich getestet:

%Vor%

Und dieser Code erzeugt ein solches Bild:

Und für 3 Punkte gibt es Bilder zurück @J. Calleja antwortet:

    
Rella 08.11.2011, 10:17
quelle

1 Antwort

4

Ich denke, es gibt mehrere Probleme mit dem Code:

  • Die Polygone, die Sie definieren, sind:
  

1 1
    1 0

Das ist:

%Vor%

Das erwartete Ergebnis unterscheidet sich also von pic2.

  • Polygone sollten geschlossen und im Uhrzeigersinn ausgerichtet werden.

Sie verpassen den Schließpunkt und das dritte Polygon ist nicht im Uhrzeigersinn ausgerichtet. Sehen Sie sich die Korrektur an Methode. In diesem Beispiel sollten Sie es für jedes von Ihnen definierte Polygon aufrufen.

  • Sie können nicht dasselbe Argument für Eingabe und Ausgabe verwenden, wenn Sie _union verwenden.

Sie sollten eine temporäre Variable verwenden:

%Vor%
  • Ihr erwartetes Ergebnis ist möglicherweise nicht das Ergebnis des Algorithmus.

Nach der Ausführung des korrigierten Codes lautet das Ergebnis:

Dies kann eine gültige Vereinfachung Ihres Polygons sein. Siehe den Ramer-Douglas-Peucker-Algorithmus .

Nach dem Ausführen dieser Änderungen folgt das folgende main ()

%Vor%     
J. Calleja 08.11.2011, 23:38
quelle

Tags und Links