2

Ich weiß nicht, ob der Prozess einen bestimmten Namen hat. Ich möchte das Polygon erhalten, das durch die Übersetzung eines Polygons erzeugt wird. Gibt es dafür einen Algorithmus? Zum Beispiel: Example.Holen Sie das Polygon, das durch Verschieben eines Polygons erstellt wurde

Konvexe Hülle funktioniert für konvexe Polygone, aber ich möchte eine allgemeine Lösung. Auch würde ich mich freuen zu hören, ob es eine Möglichkeit gibt, das Polygon durch Drehen zu erzeugen.

+0

Sie wollen also eine Lösung, die auch für konkave Polygone funktioniert? – m69

+0

@ m69 Ja. Ansonsten funktioniert die konvexe Hülle. –

+0

Ihr Problem ist unterspezifiziert. Was sollte das Ergebnis sein, wenn z.B. das Polygon ist W-förmig und horizontal gezogen? – Gene

Antwort

4

Es scheint, dass Sie nach dem Minkowski sum Ihres Polygons und dem Liniensegment suchen, das Ihre Bewegung beschreibt.

Das CGAL library Paket 2D Minkowski Sums kann sie zum Beispiel berechnen.

+0

Dies ist die Antwort, nach der ich gesucht habe. Vielen Dank. –

2

In Anbetracht der Erklärung Sie in den Kommentaren gab, ist der einfachste Ansatz folgt aus:

Let v be a vector describing the linear movement 
For each edge (p,q) in the polygon 
    construct quadrilateral (p, q, q+v, p+v) 
Compute the union of all the quadrilaterals plus the original polygon 

Computing Polygon Gewerkschaften ist ein gut untersuchtes Problem mit effizienten Algorithmen.

+0

Die Vereinigung der Vierecke * und * das ursprüngliche oder übersetzte Polygon; Wenn Sie das Polygon nur leicht verschieben, erhalten Sie einen schmalen Umriss. – m69

+0

@ m69 Guter Fang. Vielen Dank. – Gene

+0

Guter Algorithmus, und scheint auch einfach zu implementieren. Aber es scheint, als gäbe es eine effizientere Lösung. Vielen Dank. –

Verwandte Themen