Rotationen sind schwierig. Aber die richtige Sichtweise hilft:
Zunächst solltest du unterscheiden zwischen Orientierung/Ausrichtung und Rotation/Drehung. Wenn du ein Objekt drehst, änderst du seine Ausrichtung, das eine ist ein Zustand, das andere eine Operation. Ja, natürlich kann eine Ausrichtung durch eine Drehung von der ursprünglichen Ausrichtung beschrieben werden, aber prinzipiell sind das zunächst einmal komplett unterschiedliche Dinge.
Es ist immer möglich, Drehungen durch 'Euler-Winkel', zu beschreiben, d.h. z.B. "5-Grad um die globale X-Achse drehen". Das ist immer sinnvoll und wohldefiniert. Die resultierende Ausrichtung durch Euler-Winkel zu beschreiben geht aber prinzipiell nicht. In manchen Fälle ist es sinnvoll, in manchen Fällen nicht, insgesamt ist das kein tragbarer Kompromiss, also muss man schlussfolgern, dass es prinzipiell nicht geht. Lösung die nur manchmal taugen, taugen nie.
Ausrichtungen kann man jetzt durch viele Arten beschreiben. Quaternionen sind nett, aber ehrlich gesagt, ich benutze die nie. Denn in der 3D Grafik haben wir schon ein absolut fantastisches Mittel jegliche Art von Transformationen zu beschreiben, nämliche Matrizen. Fantastisch deshalb, weil man einfach die 3 Vektoren so wunderbar als Koordinatensystem im Raum darstellen kann und sofort total klar ist, was die Transformation macht. Quaternionen grafisch zu verstehen, nun, ich habs noch nicht geschafft.
Mathematisch gesehen, reden wir ja eigentlich von der
"Speziellen orthogonalen Gruppe". Das ist deshalb wichtig, weil man dann schnell einsieht, dass es zwar unterschiedliche Parametrisierung gibt, die aber alle das selbe machen. Ob du jetzt Euler-Winkel, Quaternionen oder Rotationsmatrizen verwendest, du kannst mit allen dein Objekt auf die selbe Art rotieren. Nur manchmal (bei euler-winkeln) ist es den Schmerz einfach nicht wert^^.
Quaternionen sind jetzt auf zwei Arten nett: Jede gültige Quaternion (normalisiert und so) beschreibt eine Rotation (Matrizen können auch andere Transformationen abbilden) und sie besteht nur aus 4 Zahlen, anstatt der 16 für übliche Matrizen. Ist also ein klein wenig schneller, wenn man wirklich nur rotieren will. In der Praxis habe ich aber immer ganze Transformationsketten, also wird früher oder später eh alles eine Matrix.
Was jetzt die Lösung deines Problems angeht: Speicher die Ausrichtung deines Objektes als Matrix und verabschiede dich von dem Gedanken, die Ausrichtung in der GUI als Zahlen anzeigen zu können. Euler-Winkel funktionieren nicht so, wie man das vielleicht gerne hätte und es ist mathematisch nicht möglich, sie dazu zu bringen, das sie es tun. Rotationen sind auf eine gewisse Art inhärent kompliziert. Jedesmal wenn ein Objekt gedreht wird, drehst du halt die aktuelle Ausrichtung entsprechend, aber du solltest nicht versuchen, von der Ausrichtung wieder auf irgendwelche Drehwinkel umzurechnen.
Die vielleicht eingängigste Beschreibung ist noch die "Achse + Winkel" Darstellung, in der du einen beliebigen Vektor hast, um den das Objekt gedreht wurde (Es ist ein überraschendes Ergebnis, dass egal wie oft man ein Objekt um beliebige Achsen dreht, man am Ende durch eine einzige Drehung um eine einzige Achse immer wieder den Ausgangszustand erreichen kann). Aber selbst das finde ich nicht hilfreich. Kein Mensch kann sich so ein Zahlenpaar wirklich gut vorstellen.
Rotationen kann man IMO nur grafisch anzeigen. Man kann dem User Knöpfe geben um um die globalen oder lokalen Hauptachsen zu drehen. Darüber hinaus fällt mir nichts nützliches ein.
Du musst sie intern auch nicht als Matrix speichern. Du kannst auch Quaternionen nehmen. Du kannst auch Eulerwinkel in Matrizen umrechnen und anwenden. Es geht ja immer nur um Rotationen, die Formeln von jeder Darstellung in jede andere zu kommen findest du überall. Für mich ist nur wichtig: Drehungen kann man leicht intuitiv beschreiben (5 Grad um X-Achse), Ausrichtungen sind aber das Ergebnis von Drehungen, sind nicht trivial und lassen sich nur grafisch vernünftig darstellen.