i have been working on a modeling app in my spare time and am at the point where i am working on a rotation manipulation tool and i am wondering if it would be possible to get the local rotation to work using successive glRotated calls ( please read on this is a little more complex than it sounds ).

picture a rotated object in world space with its axes visible, then being able to click on the axes and drag or somesuch and have the model rotate only on the selected axis in object space.

if three successive glRotated calls are made like belowâ€¦

glRotated( transform.rotation.z, 0,0,1 );

glRotated( transform.rotation.y, 0,1,0 );

glRotated( transform.rotation.x, 1,0,0 );

the last one will rotate precisely on the local axis (x), i understand that. but the y and z axis rotations will rotate in world space still ( or so it appears ). i would think there would be a way to coerce these three calls into performing what i am explaining by adjusting the angle values, for example, adjust all 3 angles to get a local rotation around the z axis without manipulating the axis values assuming the object is at the origin. my question is, how do i calculate these values??

any suggestions on a different way to handle this to get the results that i want?? i can use quaternions and glMultMatrix with a custom matrix, whatever, i just cannot seem to get the right matrix to make this work.

thanks