# Skalierung eines Polygons ohne das es verschoben wird



## HansWurstasdf (8. Feb 2012)

Hallo,

ich skaliere ein java.awt.Polygon. Danach ist es verschoben. Ich will es jedoch nur skalieren.
Wie kann ich die Verschiebung vermeiden?

Mit translate davor und danach. Aber welchen Punkt soll ich da wählen? Mittelpunkt des Polygons lässt sich ja nicht so einfach bestimmen (bei beliebigen geschlossenen Polygonen=


```
AffineTransform at = new AffineTransform();
at.scale(1.5, 1.5);
Shape s = at.createTransformedShape(polygone);
```


----------



## xehpuk (8. Feb 2012)

Also an den Mittelpunkt kommst du sehr leicht ran:

```
Rectangle2D b = polygone.getBounds2D();
double centerX = b.getCenterX();
double centerY = b.getCenterY();
```
Wenn es stattdessen der Schwerpunkt sein muss … keine Ahnung.


----------



## HansWurstxma (8. Feb 2012)

wenn man den mittelpunkt so nehmen würde ist das ja der mittelpunkt der umschließenden bounding box. und nicht der mittelpunkt des polygpns selbst. wenn darin ein unregelmässiges polygon liegt dann verzerrt es mir die skalierung ja dadurch auch...


----------



## HimBromBeere (8. Feb 2012)

Warum transformierst du nicht einfach jeden Punkt mit af? 
Dafür bräuchtest du einen PathIterator, der durch alle Punkte durchläuft und jeden dann mit 
	
	
	
	





```
af.transform(pDst, pSrc)
```
transformiert.


----------

