# OrbitBehavior um wieviel gedreht?



## Gast (4. Apr 2007)

Hallo Zusammen

Ich verwende ein Orbitbehavior und möchte herausfinden, um wieviel schon in eine Richtung gedreht wurde.
Kann mir jemand weiterhelfen, wie das geht oder welchen Ansatz man verwenden könnte?

Vielen Dank


----------



## Verjigorm (5. Apr 2007)

schau mal hier:
http://www.java-forum.org/de/topic45188_koordinaten-objekten.html

ich hatte nen ähnliches Problem, vielleicht hilfts ja
da isn Link irgendwo zu Transform3D


----------



## Gast (5. Apr 2007)

Hallo Verjigorm

Danke für deinen Input.

Das stimmt, bei einer normalen Transformgroup, könnte ich das so über das Transform3D Objekt herauslesen. 

Das Problem ist jedoch, dass beim Orbitbehavior ja nicht das Objekt gedreht wird, sondern der Betrachter um das Objekt. Ich müsste also herausfinden, umwieviel sich die viewingPlatform schon um das Objekt gedreht hat.


----------



## Illuvatar (5. Apr 2007)

Und wenn du versuchst, das über das Transform3D von der viewingPlatform zu bestimmen?

(SimpleUniverse#getViewingPlatform().getViewPlatformTransform())


----------



## Gast (5. Apr 2007)

Ja klar, so geht es. 

Ich habe die Mathode getViewPlatformTransform() gesucht und irgendwie übersehen. 

Sorry und Danke.

Hier noch der Code, falls jemand das mal braucht:


```
...

  Transform3D t3d = new Transform3D();
  MyUniverse.getViewingPlatform().getViewPlatformTransform().getTransform(t3d);
 
   Matrix3f rotationMatrix = new Matrix3f();
   t3d.get(rotationMatrix);
   getRotationAngles(rotationMatrix);


...

 private void getRotationAngles(Matrix3f matrix)
{
double angleY = Math.asin(-matrix.m20);
double cosY = Math.cos(angleY);
double tmpX = matrix.m22 / cosY;
double tmpY = matrix.m21 / cosY;
double angleX = Math.atan2(tmpY, tmpX);
tmpX = matrix.m00 / cosY;
tmpY = matrix.m10 / cosY;
double angleZ = Math.atan2(tmpY, tmpX);

System.out.println("AngleX: "+angleX + "AngleY: "+angleY +"AngleZ: "+angleZ);

}
```


----------

