Acelerômetro 3D calcular a orientação

Eu tenho valores de acelerômetro para o eixo 3 (geralmente quando existe apenas a gravidade que contém dados entre -1,0 e 1,0):

  float Rx;
  float Ry;
  float Rz;

Faço cálculos de soma, depois obtenho os ângulos para cada eixo.

  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;

Então eu defino os valores para os ângulos da caixa em opengl

rquad = Arx;
yquad = Ary;

O que gira minha caixa:

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

Funciona no hemisfério. Gostaria de usar a esfera completa e sei que tenho que usar o valor Arz para fazê-lo funcionar, mas não sei como posso usá-lo nessa rotação. Você poderia me ajudar?

Atualização: A resposta final está no meu caso:

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

questionAnswers(5)

yourAnswerToTheQuestion