Swing AffineTransform Verkettung

auroNpls

Mitglied
Hallo liebe Leute,

ich habe folgende Frage zu einer affineTransform-Verkettung.

Ich habe drei AffineTransform-Objekte gegeben. (atGesamt, atScale und atTranslate)

Nun würde ich gerne "atGesamt" initialisieren durch eine Verkettung von "atScale" und "atTranslate". (bzw. soll ich laut Aufgabenstellung)

Ich habe das so gelöst in einer Methode:
Java:
private void updateTransform(){
        atGesamt.concatenate(atScale);
        atGesamt.concatenate(atTranslate);
    }

oder ist das falsch mit der concatenate methode?

Liebe Grüße
 

auroNpls

Mitglied
Leider kann ich meinen Post nicht editieren, daher hier die Aufgabenstellung nachgeschoben:
"Implementieren Sie die Methode updateTransform in der Klasse DrawingPane, in der das Attribut atGesamt mit einer Affinen Transformation initialisiert werden soll, die sich aus der Verkettung der beiden Transformationen atScale und atTranslate zusammensetzt." - verstehe ich das richtig, so wie ich das oben gemacht habe?
 

httpdigest

Top Contributor
Wahrscheinlich musst du die Konkatenationen umkehren. Es kommt aber darauf an, was die Transformation eigentlich machen soll. Üblicherweise ist es aber immer Translate * Scale für Matrizen, die per M * v mit Spaltenvektoren multipliziert werden (wie etwa bei OpenGL und auch bei AWT), um auszudrücken, dass sich ein Objekt/Modell an Position P befindet (welches per atTranslate erreicht wird) und welches eine Skalierung von S hat (welches per atScale erreicht wird). Und ich würde vorher atGesamt noch auf die Identität zurücksetzen, oder gleich mit atTranslate initialisieren, also so:
Java:
private void updateTransform(){
  atGesamt.setTransform(atTranslate);
  atGesamt.concatenate(atScale);
}
 

Ähnliche Java Themen

Neue Themen


Oben