diff options
| author | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
| commit | badef32037f52f79abc1f1440b786cd71afdf270 (patch) | |
| tree | 412b792d4cab4a7a110db82fcf74fe8a1ac55ec1 /hacks/glx/extrusion-taper.c | |
| parent | Delete pre-6.00 files (diff) | |
| download | xscreensaver-master.tar.gz xscreensaver-master.tar.xz xscreensaver-master.zip | |
Diffstat (limited to 'hacks/glx/extrusion-taper.c')
| -rw-r--r-- | hacks/glx/extrusion-taper.c | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/hacks/glx/extrusion-taper.c b/hacks/glx/extrusion-taper.c deleted file mode 100644 index d2d05a1..0000000 --- a/hacks/glx/extrusion-taper.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * taper.c - * - * FUNCTION: - * Draws a tapered screw shape. - * - * HISTORY: - * -- created by Linas Vepstas October 1991 - * -- heavily modified to draw more texas shapes, Feb 1993, Linas - * -- converted to use GLUT -- December 1995, Linas - * - */ - -#include "extrusion.h" - -#include <math.h> -#include <stdlib.h> - -#ifndef NULL -#define NULL ((void *) 0x0) -#endif /* NULL */ - -/* Some <math.h> files do not define M_PI... */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* =========================================================== */ - -#define SCALE 3.33333 -#define CONTOUR(x,y) { \ - double ax, ay, alen; \ - contour[i][0] = SCALE * (x); \ - contour[i][1] = SCALE * (y); \ - if (i!=0) { \ - ax = contour[i][0] - contour[i-1][0]; \ - ay = contour[i][1] - contour[i-1][1]; \ - alen = 1.0 / sqrt (ax*ax + ay*ay); \ - ax *= alen; ay *= alen; \ - norms [i-1][0] = ay; \ - norms [i-1][1] = -ax; \ - } \ - i++; \ -} - -#define NUM_PTS (25) - -static double contour [NUM_PTS][2]; -static double norms [NUM_PTS][2]; - -static void init_contour (void) -{ - int i; - - /* outline of extrusion */ - i=0; - CONTOUR (1.0, 1.0); - CONTOUR (1.0, 2.9); - CONTOUR (0.9, 3.0); - CONTOUR (-0.9, 3.0); - CONTOUR (-1.0, 2.9); - - CONTOUR (-1.0, 1.0); - CONTOUR (-2.9, 1.0); - CONTOUR (-3.0, 0.9); - CONTOUR (-3.0, -0.9); - CONTOUR (-2.9, -1.0); - - CONTOUR (-1.0, -1.0); - CONTOUR (-1.0, -2.9); - CONTOUR (-0.9, -3.0); - CONTOUR (0.9, -3.0); - CONTOUR (1.0, -2.9); - - CONTOUR (1.0, -1.0); - CONTOUR (2.9, -1.0); - CONTOUR (3.0, -0.9); - CONTOUR (3.0, 0.9); - CONTOUR (2.9, 1.0); - - CONTOUR (1.0, 1.0); /* repeat so that last normal is computed */ -} - -/* =========================================================== */ - -#define PSIZE 40 -static double path[PSIZE][3]; -static double twist[PSIZE]; -static double taper[PSIZE]; - -static void init_taper (void) { - int j; - double z, deltaz; - double ang, dang; - - z = -10.0; - deltaz = 0.5; - - ang = 0.0; - dang = 20.0; - for (j=0; j<40; j++) { - path[j][0] = 0x0; - path[j][1] = 0x0; - path[j][2] = z; - - twist[j] = ang; - ang += dang; - - taper[j] = 0.1 * sqrt (9.51*9.51 - z*z); - - z += deltaz; - } - - taper[0] = taper[1]; - taper[39] = taper[38]; - -} - -/* =========================================================== */ - -/* controls shape of object */ -extern float lastx; -extern float lasty; - -void InitStuff_taper (void) -{ - int style; - - /* configure the pipeline */ - style = TUBE_JN_CAP; - style |= TUBE_CONTOUR_CLOSED; - style |= TUBE_NORM_FACET; - style |= TUBE_JN_ANGLE; - gleSetJoinStyle (style); - - init_contour(); - init_taper(); -} - -/* =========================================================== */ - -static void gleTaper (int ncp, - gleDouble contour[][2], - gleDouble cont_normal[][2], - gleDouble up[3], - int npoints, - gleDouble point_array[][3], - float color_array[][3], - gleDouble taper[], - gleDouble twist[]) -{ - int j; - gleAffine *xforms; - double co, si, angle; - - /* malloc the extrusion array and the twist array */ - xforms = (gleAffine *) malloc (npoints * sizeof(gleAffine)); - - for (j=0; j<npoints; j++) { - angle = (M_PI/180.0) * twist[j]; - si = sin (angle); - co = cos (angle); - xforms[j][0][0] = taper[j] * co; - xforms[j][0][1] = - taper[j] * si; - xforms[j][0][2] = 0.0; - xforms[j][1][0] = taper[j] * si; - xforms[j][1][1] = taper[j] * co; - xforms[j][1][2] = 0.0; - } - - gleSuperExtrusion (ncp, /* number of contour points */ - contour, /* 2D contour */ - cont_normal, /* 2D contour normals */ - up, /* up vector for contour */ - npoints, /* numpoints in poly-line */ - point_array, /* polyline */ - color_array, /* color of polyline */ - xforms); - - free (xforms); -} - -/* =========================================================== */ - -void DrawStuff_taper (void) { - int j; - double ang, dang; - double z, deltaz; - double ponent; - z=-1.0; - deltaz = 1.999/38; - ang = 0.0; - dang = lasty/40.0; - ponent = fabs (lastx/540.0); - for (j=1; j<39; j++) { - twist[j] = ang; - ang += dang; - - taper[j] = pow ((1.0 - pow (fabs(z), 1.0/ponent)), ponent); - z += deltaz; - } - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glColor3f (0.5, 0.6, 0.6); - - /* set up some matrices so that the object spins with the mouse */ - glPushMatrix (); - /* glTranslatef (0.0, 0.0, -80.0); */ - /* glRotatef (130.0, 0.0, 1.0, 0.0); */ - /* glRotatef (65.0, 1.0, 0.0, 0.0); */ - - /* draw the brand and the handle */ - gleTaper (20, contour, norms, NULL, 40, path, NULL, taper, twist); - - glPopMatrix (); -} - -/* ===================== END OF FILE ================== */ |
