|
- /*
- * 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);
- . . .
- }
- *
- * */
-
-
- /* functions */
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- 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);
-
- #ifdef __cplusplus
- }
- #endif
|