Hallöchen.
Vorab, ich weiss dass es zu affinetransform viel Lektüre gibt im Internet, aber ich komme an dieser Stelle einfach nicht weiter.
Folgendes:
Ich habe ein Rectangle2d Objekt, dass ich auf die Bühne zeichne. Das Objekt hat seine eigene move und draw Methoden die von der mainclass aufgerufen werden. Das klappt alles wunderbar.
Wenn ich nun allerdings über affinetransform, das Objekt um sich selbst rotieren lasse, dann wird es immer an die gleiche Stelle auf die Bühne gezeichnet. Ich habe schon versucht durch die translate Methode meines affineTransform-objekts, diese Bewegung zu simulieren, die vorher einfach nur durch die die Änderung der x und y Eigenschaften meines Objekts stattgefunden hat. Das funktioniert auch nicht.
Das ist mein Ausgangspunkt in meinem Rectangle2dObjekt:
In der Objektvariable wird die Rotation kumuliert und das Objekt rotiert auch brav. Aber es kommt nicht mehr vom Fleck. Wenn ich ein affineTransform.translate hinzufüge wird nur der Rotationspunkt verschoben. Das Zusammenspiel der Graphics2d-Klasse und AffineTransform ist mir einfach schleierhaft. Über einen kleinen Hinweis wäre ich dankbar. Es ärgert mich selbst, dass ich das nicht verstehe.
Vorab, ich weiss dass es zu affinetransform viel Lektüre gibt im Internet, aber ich komme an dieser Stelle einfach nicht weiter.
Folgendes:
Ich habe ein Rectangle2d Objekt, dass ich auf die Bühne zeichne. Das Objekt hat seine eigene move und draw Methoden die von der mainclass aufgerufen werden. Das klappt alles wunderbar.
Wenn ich nun allerdings über affinetransform, das Objekt um sich selbst rotieren lasse, dann wird es immer an die gleiche Stelle auf die Bühne gezeichnet. Ich habe schon versucht durch die translate Methode meines affineTransform-objekts, diese Bewegung zu simulieren, die vorher einfach nur durch die die Änderung der x und y Eigenschaften meines Objekts stattgefunden hat. Das funktioniert auch nicht.
Das ist mein Ausgangspunkt in meinem Rectangle2dObjekt:
Java:
public void move() {
x += (Math.cos(radian));
y +=(Math.sin(radian));
public void drawObjects(Graphics2D g2) {
affineTransform.rotate(Math.toRadian(10),x,y);
g2.setTransform(affineTransform);
g2.draw(this);