I am working on an application and I want to store all rotations as Quaternions.

The problem is that I need to present a more meaningful value to the user. So the user might not understand what the values of X,Y,Z,W mean, but they might understand an X Rotation, Y Rotation, Z Rotation or a Yaw, Pitch, Roll Rotation.

How can I convert the Rotation Quaternion into a more meaningful value for presentation to the user? Is there any way to guarantee that the values the user enter can be extracted?

For example if I specify a Yaw, Pitch, Roll of 0, 30, 0 (in degrees), then convert that to a quaternion, is there a way to ensure that I can extract the same 0, 30, 0 back out or could I end up with different values?

My preference would be to work in X,Y,Z rotations but store it in a Quaternion. In understand it is easy to extract Axis/Angle rotations from a Quaternion, however this is problematic because it is more difficult to visualize.