Polygon vergrößern

Fohnbit

Top Contributor
Hallo,

ich halte die Koordinaten eines geschlossenes Polygons in einer Arraylist.
Nach meinem Verständnis muss ich das Zentrum ermitteln und dann prüfen auf welche Seite ich die Punkte verschieben muss.
Gibts es da eventuell einer fertige Methode?

Danke
 
Hallo,

Wenn ich um 5px vergrößern möchte, das jeder Punkt sich um 5px nach Außen bewegt, ausgehend vom Zentrum.
Skalieren ist die richtige Bezeichnung?
 
Hallo,

so, denn Mittelpunkt habe ich vom Polygon, aber wie berechne ich den neuen Punkt?
Mittelpunkt:
xM, yM
alter Polygonpunkt:
x1, y1
neuer Polygonpunkt (soll um 10px größer werden):
x2,y2

Wie berechne ich nun aber x2, y2?

Danke!
 
Verschiebe deinen Mittelpunkt zum Ursprung (d.h. subtrahiere von jeder Koordinate den Mittelpunkt.), und mach dann eine Streckung, d.h. berechne wie viel % die 10 pixel sind und berechne dann Prozent*verschobene Koordinate anschließend wieder zurück schieben, indem du den Mittelpunkt wieder draufaddierst.
 
Hallo,

vielen Dank. Das scheint aber noch nicht zu funktionieren.
Er sollte ja alle Punkt beim verkleinern zum Zentrum ziehen. Aber die Punkte überschneiden sich teilweise, wenn ich stark verkleinere

Java:
for (int i = 0; i < window.lstModelLD_RealCoordinate.size(); i++) {
                            double xM = 0, yM = 0, xD, yD, x1, y1, x2, y2, xP, yP;

                            xM = middleLD.getX();
                            yM = middleLD.getY();
                            x1 = window.lstModelLD_RealCoordinate.getElementAt(i).getX();
                            y1 = window.lstModelLD_RealCoordinate.getElementAt(i).getY();

                            // Mittelpunkt subtrahieren
                            xD = x1 - xM;
                            yD = y1 - yM;

                            // Prozent der Skalierung
                            xP = movingDistance * 100 / xD;
                            yP = movingDistance * 100 / yD;

                            // neuer Punkt
                            x2 = (xP * 0.01 * x1) + xM;
                            y2 = (yP * 0.01 * y1) + yM;
                            window.lstModelLD_RealCoordinate.set(i, new Point2D.Double(x2, y2));
                        }
 
der Prozentsatz sollte nicht vom Punkt sondern vom Polygon abhängen. sonst werden ja die Punkte unterschiedlich viel gestreckt.
 
Aber die Punkte überschneiden sich teilweise
Du solltest dir doch mal ein Geometriebuch der Oberstufe hernehmen und gucken welche Abbildung du denn nun willst. Ich dachte du willst alle Punkte um den gleichen Betrag verschieben ?? Dann bleibt die Form des Polygons natürlich nicht erhalten. Deshalb meine Frage nach zentrischer Streckung ! Aber jetzt rechnest du doch mit Prozent, also einem Faktor, und das wäre ja eine zentrische Streckung.
 

Zurück
Oben