3d Beschleunigungsmesser berechnen die Orientierung

Ich habe Beschleunigungsmesserwerte für die 3-Achsen (normalerweise, wenn nur die Schwerkraft vorhanden ist, enthält sie Daten zwischen -1,0 und 1,0):

  float Rx;
  float Ry;
  float Rz;

Ich mache Somaberechnungen, dann bekomme ich die Winkel für jede Achse.

  float R =  sqrt(pow(Rx,2)+pow(Ry,2)+pow(Rz,2));
  float Arx = acos(Rx/R)*180/M_PI;
  float Ary = acos(Ry/R)*180/M_PI;
  float Arz = acos(Rz/R)*180/M_PI;

Dann setze ich die Werte für die Boxwinkel in opengl

rquad = Arx;
yquad = Ary;

Welche dreht meine Box:

glRotatef(yquad,1.0f,0.0f,0.0f);
glRotatef(rquad,0.0f,1.0f,0.0f);

s funktioniert auf der Hemisphäre. Ich möchte die volle Kugel verwenden und weiß, dass ich den Arz-Wert verwenden muss, damit er funktioniert, aber ich weiß nicht, wie ich das für diese Drehung verwenden kann. Kannst du mir helfen

Update: Die endgültige Antwort ist in meinem Fall:

  rquad = -atan2(Rx/R, Rz/R)*180/M_PI;
  yquad = -atan2(Ry/R, Rz/R)*180/M_PI;

Antworten auf die Frage(10)

Ihre Antwort auf die Frage