/** * \addtogroup unixsimulator */ /*@{*/ /** * Simple trackball-like motion adapted (ripped off) from projtex.c * (written by David Yu and David Blythe). See the SIGGRAPH '96 * Advanced OpenGL course notes. * * * Usage: * * o call tbInit() in before any other tb call * o call tbReshape() from the reshape callback * o call tbMatrix() to get the trackball matrix rotation * o call tbStartMotion() to begin trackball movememt * o call tbStopMotion() to stop trackball movememt * o call tbMotion() from the motion callback * o call tbAnimate(GL_TRUE) if you want the trackball to continue * spinning after the mouse button has been released * o call tbAnimate(GL_FALSE) if you want the trackball to stop * spinning after the mouse button has been released * * Typical setup: * * * void * init(void) * { * tbInit(GLUT_MIDDLE_BUTTON); * tbAnimate(GL_TRUE); * . . . * } * * void * reshape(int width, int height) * { * tbReshape(width, height); * . . . * } * * void * display(void) * { * glPushMatrix(); * * tbMatrix(); * . . . draw the scene . . . * * glPopMatrix(); * } * * void * mouse(int button, int state, int x, int y) * { * tbMouse(button, state, x, y); * . . . * } * * void * motion(int x, int y) * { * tbMotion(x, y); * . . . * } * * int * main(int argc, char** argv) * { * . . . * init(); * glutReshapeFunc(reshape); * glutDisplayFunc(display); * glutMouseFunc(mouse); * glutMotionFunc(motion); * . . . * } * * @file trackball.h * @brief Header file for helper functions for the UNIX platform Borg simulator. * @author Martin Ongsiek, David Yu, David Blythe */ /* functions */ void tbInit(GLuint button); void tbMatrix(void); void tbReshape(int width, int height); void tbMouse(int button, int state, int x, int y); void tbMotion(int x, int y); void tbAnimate(GLboolean animate); /*@}*/