# Rotationen



## Andre Schaaf (29. Nov 2007)

Schönen guten Tag,

ich habe folgendes Problem

ich habe ein 3d objekt und dieses ist hängt unter diversen transformgroups(tg)

1 tg translation
2 tg skalierung
3 tg rotation
4 tg rotation

dabei soll die 3 tg eine rotation um eine achse darstellen (ich habe zwei vektoren 1. punkt auf der achse, 2. richtung)
und 4 die rotation um die objekteigene achse

die rotierung um die objekteigene achse funktioniert ohne probleme, aber ich bekomme es absolut nicht hin das 
dass objekt sich um eine beliebige achse dreht


```
Vector3f rotVec=new Vector3f(this.rotVector1.x,this.rotVector1.y,this.rotVector1.z); 
								
AxisAngle4f axis=new AxisAngle4f(new Vector3f(this.rotVector2.x,this.rotVector2.y,this.rotVector2.z),this.rot);
											
this.object.getRotationAxisT3D().set(rotVec);
this.object.getRotationAxisT3D().setRotation(axis);				
			
this.object.getRotationAxisTG().setTransform(this.object.getRotationAxisT3D());
```

so habe ich es im moment aber das funktioniert nicht weil er die position des objektes immer auf den 1 vektor verschiebt , was er natürlich nicht machen soll.

Hat jemand einen Tipp für mich wie ich das machen kann. Es sollte ja auch eine rotation eines planeten damit darstellbar sein in dem man die erste rotationsgroup für die rotation um die sonne verwendet und die 2 rotationsgroup für die drehung der erde um sich selbst.

aber es will mir einfach nicht gelingen.

MFG Andre Schaaf


----------



## Andre Schaaf (1. Dez 2007)

Hmm hat denn hier niemand eine Idee wie ich das machen kann ?


----------



## Marco13 (1. Dez 2007)

Was das Objekt macht, hängt davon ab, wo es im Szenegraph hängt. (Allgemeiner: Computer machen nicht das, was man will, sondern das, was man programmiert hat). 

Im Moment hast du

1 tg translation
2 tg skalierung
3 tg rotation
4 tg rotation 

Das Objekt wird also zwei mal um seinen Lokalen Ursprung rotiert, dann sakliert und dann verschoben. Vielleicht liegt das Problem darin, dass die Operationen ja sozusagen "rückwärts" auf das Objekt angewendet werden.  (Dieser Verdacht wirde durch die "falsche" Nummerierung deiner Transformgroups erhärtet)

Um das zu erreichen, was du vorhast, bräuchstest du wohl sowas

4 rotation - Um den Ursprung
3 translation - Vom Ursprung weg, da hin, wo das Objekt sein soll
2 skalierung 
1 rotation - um die Objekteigene Achse


Als Beispiel dieses Bild:






Das LINKE könnte man erreichen, indem man einen Szenegraph erstellt wie
Translation -> Rotation -> Objekt

Das RECHTE könnte man erreichen, indem man einen Szenegraph erstellt wie
Rotation -> Translation -> Objekt

Das Bild stammt von 
http://glprogramming.com/red/chapter03.html#name2
Schau da vielleicht auch nochmal drüber.


----------



## Andre Schaaf (1. Dez 2007)

Ok besten Dank für die Antwort das ist das was ich brauche. Da ich noch nich soo lange mit dem Java3d arbeite ist es manchmal etwas schwierig die zusammenhänge zu erkennen. 

MFG Andre


----------

