implement an opengl cat in c++ with multiple degrees of freedom for various joints