AffineTransform - Reihenfolge der Operationen

Bazinga

Mitglied
Hallo,
ich bin kürzlich auf die Klasse AffineTransform und hab damit etwas rumexperimentiert. Dabei ist mir folgende Merkwürdigkeit aufgefallen:
Java:
AffineTransform at1 = new AffineTransform();
at1.scale(2, 2);
at1.translate(5, 5);
Ich hätte erwartet, dass mit at1 jetzt Punkte erst skaliert und dann verschoben werden. Tatsächlich ist es aber genau umgekehrt (d.h. es wird erst verschoben, dann skaliert, was natürlich zu unterschiedlichen Ergebnissen führt). Das bestätigt auch die API-Doc. Um die von mir beabsichtigte Reihenfolge zu erhalten, muss ich folgendes machen:
Java:
AffineTransform at2 = new AffineTransform();
at2.preConcatenate(AffineTransform.getScaleInstance(2, 2));
at2.preConcatenate(AffineTransform.getTranslateInstance(5, 5));

Meine Frage dazu: gibts einen Grund, die Reihenfolge quasi rückwärts aufzubauen oder verstehe ich nur irgendwas nicht richtig. Jedenfalls finde ich das so wie es ist verwirrend.
 

Marco13

Top Contributor
Das hatte ich zufällig neulich in http://www.java-forum.org/spiele-mu...-transformationen-gles1-gles2.html#post922149 erwähnt: Die Matrizen (AffineTransforms) werden miteinander multipliziert. Wenn man sowas macht wie im geposteten code, kommt dort eine Matrix raus, die "skalierung * translation" beschreibt. Wenn man einen Punkt damit transformiert, entspricht das dem hier:
Code:
neuerVertex = skalierung * translation * alterVertex
                 ^             ^
                 |             | Der Vertex wird erst transliert...
                 | ... und danach skaliert
 

Bazinga

Mitglied
Ja, ich denke, ich habe schon verstanden, was passiert.
Mich interessiert eher, warum das so gemacht wurde, da es aus meiner Sicht nicht logisch erscheint. Und es dürfte imho auch kein Problem sein, wenn man es genau andersrum implementiert hätte.
 

Marco13

Top Contributor
Sicher hätte man es auch anders machen können. Aber ... es ist eben üblich so, wie es ist: Bei allen Matrix- oder Vektorklassen, die ich kenne, bewirkt ein
A = B.mul(C);
dass danach A=B*C ist, und nicht A=C*B, bzw. dass durch A.multiplyWithSomething(X) dieses "something" von rechts dranmultipliziert wird (dort steht es ja auch ;) )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Warum muss ich die operationen mit AffineTransform in umgekehrter Reihenfolge ausfuehren..? Java Basics - Anfänger-Themen 4
TheSorm AffineTransform drehung Java Basics - Anfänger-Themen 6
R AffineTransform problem. Java Basics - Anfänger-Themen 8
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
M Feste Reihenfolge von dem Ablauf von Methoden Java Basics - Anfänger-Themen 7
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
A String in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 7
L Reihenfolge Ausgabe Java Basics - Anfänger-Themen 5
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D TAB Reihenfolge im JSinner Java Basics - Anfänger-Themen 1
RowdyN Methoden Befehle in zufälliger Reihenfolge ausführen lassen Java Basics - Anfänger-Themen 5
B Arrays in Reihenfolge vertauschen Java Basics - Anfänger-Themen 6
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Array Reihenfolge umdrehen Java Basics - Anfänger-Themen 9
J Klassen Reihenfolge beim Aufruf von Klassen Java Basics - Anfänger-Themen 1
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
M Ausgabe in falscher Reihenfolge Java Basics - Anfänger-Themen 7
S Vokal Reihenfolge Java Basics - Anfänger-Themen 1
C if Reihenfolge Java Basics - Anfänger-Themen 2
W String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben. Java Basics - Anfänger-Themen 9
F Reihenfolge des Quelltexts Java Basics - Anfänger-Themen 6
S Jede Reihenfolge einer zufällig langen Liste ausprobieren Java Basics - Anfänger-Themen 3
B Methoden Logische Reihenfolge in Programmen? Java Basics - Anfänger-Themen 4
D Problem mit Initialisierung und Reihenfolge Java Basics - Anfänger-Themen 10
O Zwingende Reihenfolge von Methoden Java Basics - Anfänger-Themen 33
P Vereinfachte for-Schleife wird in umgekehrter Reihenfolge ausgewertet Java Basics - Anfänger-Themen 7
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
S Buttons übereinander legen - Reihenfolge Java Basics - Anfänger-Themen 2
G Zahlen in zufälliger Reihenfolge ausgeben/speichern. Java Basics - Anfänger-Themen 2
R Reihenfolge im Konstruktor der Objekte Java Basics - Anfänger-Themen 13
L Properties Reihenfolge vorgeben Java Basics - Anfänger-Themen 13
N Reihenfolge von Methoden Java Basics - Anfänger-Themen 5
F Reihenfolge in der Events abgearbeitet werden Java Basics - Anfänger-Themen 2
A Wörter umgekehrten Reihenfolge ausgeben Java Basics - Anfänger-Themen 3
A Reihenfolge bei equals() Java Basics - Anfänger-Themen 2
K Reihenfolge Modifikatoren Java Basics - Anfänger-Themen 6
U Zuweisungen - Reihenfolge Java Basics - Anfänger-Themen 9
S Falsche Reihenfolge von Methodenaufrufen Java Basics - Anfänger-Themen 8
G Array Reihenfolge ändern Java Basics - Anfänger-Themen 6
M Reihenfolge von Objekten im Vektor Java Basics - Anfänger-Themen 3
A Liste von Listen mit fester reihenfolge Java Basics - Anfänger-Themen 6
P Frage zu OO (Reihenfolge der Klassen) Java Basics - Anfänger-Themen 2
G Feld in umgekehrter Reihenfolge an zweites Feld übergeben Java Basics - Anfänger-Themen 5
T Reihenfolge von Strings prüfen Java Basics - Anfänger-Themen 3
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
K Array umgedrehte Reihenfolge Java Basics - Anfänger-Themen 2
M String Reihenfolge umkehren Java Basics - Anfänger-Themen 2
M Array anders sortieren, aber die Reihenfolge beibehalten Java Basics - Anfänger-Themen 4
V Reihenfolge von Befehlen - hier repaint() zu spät Java Basics - Anfänger-Themen 13
N Zahlen einlesen und in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 5
D Array in umgekehrter Reihenfolge Java Basics - Anfänger-Themen 4
A Reihenfolge erfassen Java Basics - Anfänger-Themen 11
A String Zeichen löschen in einer bestimmten Reihenfolge Java Basics - Anfänger-Themen 25
G Zahlen in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 6
A Exception Reihenfolge Java Basics - Anfänger-Themen 3
M Sorry,ne blöde Frage Focus setzen und Focus Reihenfolge Java Basics - Anfänger-Themen 15
L Reihenfolge der Methodenaufrufe Java Basics - Anfänger-Themen 6
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
J Listen Operationen Java Basics - Anfänger-Themen 4
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
B Matrizen Operationen Java Basics - Anfänger-Themen 7
S NaN - Operationen ohne Fehler? Java Basics - Anfänger-Themen 3
G Messen von Elementaren Operationen Java Basics - Anfänger-Themen 3
S Liste von möglichen Operationen Java Basics - Anfänger-Themen 2
B genaue Anzahl der Operationen in Schleifen Java Basics - Anfänger-Themen 5
C Operationen auf Bitebene und Verschiebeoperatoren wichtig? Java Basics - Anfänger-Themen 26
Haave Postfix-Rechner: mehrere math. Operationen nacheinander ausführen Java Basics - Anfänger-Themen 8
M Bit/Byte Operationen Java Java Basics - Anfänger-Themen 8
B math. Operationen + Ausgabe Fehler :S Java Basics - Anfänger-Themen 5
K println - Klammern von Operationen Java Basics - Anfänger-Themen 4
O Operationen auf ein Set Java Basics - Anfänger-Themen 3
Q mathematische Operationen als Methode und nicht Infix-Operator Java Basics - Anfänger-Themen 14
X Zählen von arithmetischen Operationen und Vergleichsoperationen Java Basics - Anfänger-Themen 7
R Kommandozeile Operationen Java Basics - Anfänger-Themen 3
G Strings Operationen Java Basics - Anfänger-Themen 7
G String-Operationen Java Basics - Anfänger-Themen 6
F Operationen mit Zeichenketten Java Basics - Anfänger-Themen 8
ven000m Aritmethische Operationen Java Basics - Anfänger-Themen 7
S Stack-Operationen Java Basics - Anfänger-Themen 59

Ähnliche Java Themen

Neue Themen


Oben