# Java3D: Rotation und Translation



## tntbc (19. Jan 2009)

Hallo an Alle,

ich sitze gerade vor Java3D und mein mathematisches Verständnis will einfach nicht verstehen warum Java3D so etwas macht. Ich habe eine Figur F die ich bewegen und rotieren möchte. Daher habe ich folgendes erschafen


```
erdeTransform3D.setRotation(new AxisAngle4d(0f,1f,0f,Math.toRadians(60)));
erdeTransform3D.setTranslation(new Vector3f(0f,0f,-1f));
```

Bis hierhin ist auch alles in ordnung. Erst drehe ich das Objekt um die Y Achse mit 60° und anschließend verscheibe ich es um -1f in der Zebene. Nun habe ich folgendes geändert


```
erdeTransform3D.setTranslation(new Vector3f(0f,0f,-1f));
erdeTransform3D.setRotation(new AxisAngle4d(0f,1f,0f,Math.toRadians(60)));
```
Jetzt verschiebe ich erst um -1f in der Z-Ebene und dan rotiere ich die Y Achse. 
Und hier komme ich nicht klar es kommt bei beiden das gleiche raus!!! 
Und das macht für mich kein sinn! Es ist doch ein unterschied ob ich erst verschiebe und dan rotiere oder halt anders herrum!!! 

Kann mir das bitte einer erklären????

Danke Gruß tntbc


----------



## Marco13 (19. Jan 2009)

http://java.sun.com/javase/technologies/desktop/java3d/forDevelopers/J3D_1_3_API/j3dapi/javax/media/j3d/Transform3D.html#setTranslation(javax.vecmath.Vector3d)

-> "Replaces the translational components of this transform to the values in the Vector3d argument; the other values of this transform are not modified. "

Man setzt mit setTranslation nur den Translations_"anteil"_. Das hat nichts mit einer Reihenfolge zu tun. 

```
Transform3D r = new Transform3D();
r.setRotation(new AxisAngle4d(0f,1f,0f,Math.toRadians(60)));

Transform3D t = new Transform3D();
t.setTranslation(new Vector3f(0f,0f,-1f));

erdeTransform3D.mul(r,t); // Erst das Objekt verschieben, dann drehen
erdeTransform3D.mul(t,r); // Erst das Objekt drehen, dann verschieben
```


----------



## tntbc (19. Jan 2009)

Danke für die Super Antwort

Gruß tntbc


----------

