2012-10-17 08:29:41 +00:00
|
|
|
/**
|
|
|
|
* \addtogroup unixsimulator
|
|
|
|
*/
|
|
|
|
/*@{*/
|
2008-12-03 05:40:16 +00:00
|
|
|
|
2012-10-17 08:29:41 +00:00
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*/
|
2008-12-03 05:40:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* 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);
|
|
|
|
|
2012-10-17 08:29:41 +00:00
|
|
|
/*@}*/
|