7924663933bf97d416db117523065aeedb514d21
[xscreensaver] / hacks / glx / extrusion-helix3.c
1
2 /* 
3  * helicoid (gernalized torus) demo 
4  *
5  * FUNCTION:
6  * This code provides a very simple example of the helicoid primitive.
7  * Most of this code is required to set up OpenGL and GLUT, and very
8  * very little to set up the helix drawer. Don't blink!
9  *
10  * =======> MOUSE HOOKED UP TO SWEEP, HEIGHT < ========
11  *
12  * HISTORY:
13  * Written by Linas Vepstas, March 1995
14  */
15
16 /* required include files */
17 #include <GL/gl.h>
18 #include <GL/glut.h>
19 #include <GL/tube.h>
20
21 /*  most recent mouse postion */
22 extern float lastx;
23 extern float lasty;
24 extern float rot_x;
25 extern float rot_y;
26 extern float rot_z;
27
28 void InitStuff_helix3 (void) 
29 {
30 }
31
32 /* draw the helix shape */
33 void DrawStuff_helix3 (void) 
34 {
35    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
36    glColor3f (0.8, 0.3, 0.6);
37
38    /* set up some matrices so that the object spins with the mouse */
39    glPushMatrix ();
40    glTranslatef (0.0, 0.0, -80.0);
41    glRotatef(rot_x, 1, 0, 0);
42    glRotatef(rot_y, 0, 1, 0);
43    glRotatef(rot_z, 0, 0, 1);
44 /*     glRotatef (220.0, 0.0, 1.0, 0.0); */
45 /*     glRotatef (65.0, 1.0, 0.0, 0.0); */
46
47    /* Phew. FINALLY, Draw the helix  -- */
48    gleSetJoinStyle (TUBE_NORM_EDGE | TUBE_JN_ANGLE | TUBE_JN_CAP);
49    gleHelicoid (1.0, 6.0, -1.0, 
50                0.0, (0.02*lasty-2.0), 0x0, 0x0, 0.0, 6.0*lastx);
51
52    glPopMatrix ();
53
54 }
55 /* ------------------------- end of file ----------------- */