OrbitBehavior um wieviel gedreht?

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
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
 
G

Gast

Gast
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

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

(SimpleUniverse#getViewingPlatform().getViewPlatformTransform())
 
G

Gast

Gast
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:

Code:
...

  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);

}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben