Would it be possible to add an additional constructor to Draggable3DOrientation that allows one to pass in a Quaternion? I prefer having axes where the y-axis is pointing up and the x-axis is pointing right which you get by initialling the quaternion with Quaternion<GLfloat>::fromAngle(0, Vector3D<GLfloat>::yAxis()) as opposed to how it's being initialized now which is Quaternion<GLfloat>::fromAngle(0, Vector3D<GLfloat>::xAxis()).
Draggable3DOrientation(const Quaternion<GLfloat>& quaternion, float objectRadius = 0.5f) noexcept
: radius (jmax (0.1f, objectRadius)),
Also, would it be possible to add a getter and setter for the Quaternion? If you want to be able to add some animation to the rotation like for example adding some inertia that continues the rotation after mouse up, you need to be able to access the Quaternion.