# RotationInterpolator und Winkel



## alexey (20. Mai 2009)

Hallo!
ich habe eine Kugel und RotationInterpolator. Der Rotator dreht die Kugel. ich will jede z.B. 50ms nach Winkel abfragen. Kann ich das herausfinden, wenn ich  nur Link zum Rotator habe?
Danke im Voraus!


----------



## Developer_X (20. Mai 2009)

das geht damit leider nicht, das ist das blöde daran, aber versuchs mal in einem Thread wie hier:

```
float rotation;
Transform3D Transform3DA= new Transform3D();
Transform3DA.rotY(Math.toRadians(rotation));
TransformGroup TransformGroupA = new TransformGroup();
TransformGroupA.setTransform(Transform3DA);
Sphere sphere = new Sphere();
TransformGroupA.addChild(sphere);
	     TransformGroupA.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);	
                  
                  (new Thread(){@Override public void run(){while(!isInterrupted()){      	              
////////////////////////////////////////////////	
	                
					rotation = rotation + 0.005f;	              
	   				Transform3DA.rotY(Math.toRadians(rotation);
	   				TransformGroupA.setTransform(Transform3DA);
	   			System.out.println("Siehste, alle 50 millisekunden");
////////////////////////////////////////////////	   				
try{sleep(50);}catch(InterruptedException e){interrupt();}}}}).start();
//IrgendeineBranchGroup.addChild(TransformGroupA);
```


----------



## Noctarius (20. Mai 2009)

Developer_X hat gesagt.:


> das geht damit leider nicht, das ist das blöde daran, aber versuchs mal in einem Thread wie hier:
> 
> ```
> float rotation;
> ...



Jetzt tu bitte sowas nicht auch noch anderen an!


----------



## alexey (20. Mai 2009)

Danke für die Antworten. leider muss man das unbedingt mit Hilfe eines Interpolators erledigen. Ich habe so verstanden, ohne Link zur Kugel, geht das nicht. Und wenn ich doch Zugang zur Kugel habe? Und noch eine Frage: kann mir jemand erklären: wie so doch geht das nicht ohne Link zur Kugel? Interpolator hat doch eigene Matrix, die er ändert....


----------



## Illuvatar (20. Mai 2009)

Mit TransformInterpolator#getTarget kommst du an die TransformGroup und damit auch an das momentane Transform3D-Objekt.
TransformInterpolator (Java 3D 1.5.1)
Daraus den Winkel abzufragen wird allerdings weniger einfach - kommt auch darauf an, ob du die Drehachse kennst, ob die Drehung orthogonal zur Achse verläuft etc. (zumindest bei der einzigen Möglichkeit das zu berechnen die mir gerade einfällt)
Einfacher vermutlich: Hol dir das Alpha-Objekt per getAlpha. Den Winkel müsstest du dann per

```
winkel = startWinkel * (1 - alpha.getValue()) + endWinkel * alpha.getValue();
```
erhalten - der Winkel wird schließlich nach genau diesem Wert linear interpoliert.


----------

