/*********************************************************************************************************************** * * Copyright (c) 2010 - 2022 by Tech Soft 3D, Inc. * The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret * as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event * of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized * employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the * scope and manner of such use. * ***********************************************************************************************************************/ /* * 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 gltbInit() in before any other gltb call * o call gltbReshape() from the reshape callback * o call gltbMatrix() to get the trackball matrix rotation * o call gltbStartMotion() to begin trackball movememt * o call gltbStopMotion() to stop trackball movememt * o call gltbMotion() from the motion callback * o call gltbAnimate(GL_TRUE) if you want the trackball to continue * spinning after the mouse button has been released * o call gltbAnimate(GL_FALSE) if you want the trackball to stop * spinning after the mouse button has been released * * Typical setup: * * void init(void) { gltbInit(GLUT_MIDDLE_BUTTON); gltbAnimate(GL_TRUE); . . . } void reshape(int width, int height) { gltbReshape(width, height); . . . } void display(void) { glPushMatrix(); gltbMatrix(); . . . draw the scene . . . glPopMatrix(); } void mouse(int button, int state, int x, int y) { gltbMouse(button, state, x, y); . . . } void motion(int x, int y) { gltbMotion(x, y); . . . } int main(int argc, char** argv) { . . . init(); glutReshapeFunc(reshape); glutDisplayFunc(display); glutMouseFunc(mouse); glutMotionFunc(motion); . . . } ***/ /* 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);