- static int frame = 0;
- GLfloat x, y, z;
-
-# define SINOID(SCALE,SIZE) \
- ((((1 + sin((frame * (SCALE)) / 2 * M_PI)) / 2.0) * (SIZE)) - (SIZE)/2)
- x = SINOID(0.0071, 8.0);
- y = SINOID(0.0053, 6.0);
- z = SINOID(0.0037, 15.0);
- frame++;
- glTranslatef(x, y, z);
-
- x = gp->rotx;
- y = gp->roty;
- z = gp->rotz;
- if (x < 0) x = 1 - (x + 1);
- if (y < 0) y = 1 - (y + 1);
- if (z < 0) z = 1 - (z + 1);
- glRotatef(x * 360, 1.0, 0.0, 0.0);
- glRotatef(y * 360, 0.0, 1.0, 0.0);
- glRotatef(z * 360, 0.0, 0.0, 1.0);
+ double x, y, z;
+ get_position (gp->rot, &x, &y, &z, !gp->button_down_p);
+ glTranslatef((x - 0.5) * 10,
+ (y - 0.5) * 10,
+ (z - 0.5) * 20);
+
+ gltrackball_rotate (gp->trackball);
+
+ get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p);
+ glRotatef (x * 360, 1.0, 0.0, 0.0);
+ glRotatef (y * 360, 0.0, 1.0, 0.0);
+ glRotatef (z * 360, 0.0, 0.0, 1.0);