This is not OpenTK specific, but may be something that someone more gifted than myself could integrate into OpenTK because it is not available in OpenGL nor Direct3D.
It seems like the use of arbitrary axis rotations would be used much of the time with 3D objects and it's a wonder to me why a common library hasn't been created for abstracting the complexities away from the developer. Simple routines for handling quaternion calculations and transformations are available, but how to actually implement them is beyond the capabilities of my last remaining seared brain cell. Through a long pursuit to understand how the use of quaternions apply to rotations about axes and rotations about the newly calculated axes, the journey has lead me wandering in a circle in search for the answer.
To help clarify what I'm trying to accomplish, I'm developing a user interface that needs to rotate a 3D model with the use of a mouse. Rotations can occur in all 3 axes, but only 2 of them at a time, since the mouse has only 2D coordinates. After a rotation occurs, the axis needs to be changed to facilitate an intuitive rotation upon the next call for a rotation. For example, the axis of rotation about the y-axis will change as the other axes are altered. A rotation about the y-axis occurs when the user drags the mouse left or right. When the user rotates about the x-axis, the y-axis needs to be adjusted so that next time the user requests a rotation about the y-axis, the model rotates about the newly-calculated y-axis. As an analogy, if the model in the graphics viewport was a marble, a drag of the mouse would make the marble roll in the direction of the mouse movement. After the user releases the marble, a new rotation axis could be assumed and the user could drag the marble to a new location with an intuitive rolling motion.
I'm open to alternate approaches to using quaternions for accomplishing this; however, I've considered using Euler angles with no interest because of the gimbal lock problem. Any suggestions are appreciated.