# define V(a,b,c) glVertex3d( a size, b size, c size );
# define N(a,b,c) glNormal3d( a, b, c );
- /*
- * PWO: I dared to convert the code to use macros...
- */
+ /* PWO: I dared to convert the code to use macros... */
glBegin( GL_LINE_LOOP ); N( 1.0, 0.0, 0.0); V(+,-,+); V(+,-,-); V(+,+,-); V(+,+,+); glEnd();
glBegin( GL_LINE_LOOP ); N( 0.0, 1.0, 0.0); V(+,+,+); V(+,+,-); V(-,+,-); V(-,+,+); glEnd();
glBegin( GL_LINE_LOOP ); N( 0.0, 0.0, 1.0); V(+,+,+); V(-,+,+); V(-,-,+); V(+,-,+); glEnd();
# define V(a,b,c) glVertex3d( a size, b size, c size );
# define N(a,b,c) glNormal3d( a, b, c );
- /*
- * PWO: Again, I dared to convert the code to use macros...
- */
+ /* PWO: Again, I dared to convert the code to use macros... */
glBegin( GL_QUADS );
N( 1.0, 0.0, 0.0); V(+,-,+); V(+,-,-); V(+,+,-); V(+,+,+);
N( 0.0, 1.0, 0.0); V(+,+,+); V(+,+,-); V(-,+,-); V(-,+,+);
* The sign of n can be flipped to get the reverse loop
*/
-static void circleTable(double **sint,double **cost,const int n)
+static void fghCircleTable(double **sint,double **cost,const int n)
{
int i;
{
free(*sint);
free(*cost);
- fgError("Failed to allocate memory in circleTable");
+ fgError("Failed to allocate memory in fghCircleTable");
}
/* Compute cos and sin around the circle */
double *sint1,*cost1;
double *sint2,*cost2;
- circleTable(&sint1,&cost1,-slices);
- circleTable(&sint2,&cost2,stacks*2);
+ fghCircleTable(&sint1,&cost1,-slices);
+ fghCircleTable(&sint2,&cost2,stacks*2);
/* The top stack is covered with a triangle fan */
glVertex3d(0,0,radius);
for (j=slices; j>=0; j--)
- {
+ {
glNormal3d(cost1[j]*r1, sint1[j]*r1, z1 );
glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
}
double x,y,z;
/* Pre-computed circle */
-
+
double *sint1,*cost1;
double *sint2,*cost2;
- circleTable(&sint1,&cost1,-slices );
- circleTable(&sint2,&cost2, stacks*2);
+ fghCircleTable(&sint1,&cost1,-slices );
+ fghCircleTable(&sint2,&cost2, stacks*2);
/* Draw a line loop for each stack */
/* Pre-computed circle */
double *sint,*cost;
- circleTable(&sint,&cost,-slices);
+ fghCircleTable(&sint,&cost,-slices);
/* Cover the circular base with a triangle fan... */
/* Pre-computed circle */
double *sint,*cost;
- circleTable(&sint,&cost,-slices);
+ fghCircleTable(&sint,&cost,-slices);
/* Draw the stacks... */
/* Pre-computed circle */
double *sint,*cost;
- circleTable(&sint,&cost,-slices);
+ fghCircleTable(&sint,&cost,-slices);
/* Cover the base and top */
/* Pre-computed circle */
double *sint,*cost;
- circleTable(&sint,&cost,-slices);
+ fghCircleTable(&sint,&cost,-slices);
/* Draw the stacks... */
int i, j;
double spsi, cpsi, sphi, cphi ;
- /*
- * Allocate the vertices array
- */
+ /* Allocate the vertices array */
vertex = (double *)calloc( sizeof(double), 3 * nSides * nRings );
normal = (double *)calloc( sizeof(double), 3 * nSides * nRings );
int i, j;
double spsi, cpsi, sphi, cphi ;
- /*
- * Increment the number of sides and rings to allow for one more point than surface
- */
+ /* Increment the number of sides and rings to allow for one more point than surface */
nSides ++ ;
nRings ++ ;
- /*
- * Allocate the vertices array
- */
+ /* Allocate the vertices array */
vertex = (double *)calloc( sizeof(double), 3 * nSides * nRings );
normal = (double *)calloc( sizeof(double), 3 * nSides * nRings );
/* Magic Numbers: It is possible to create a dodecahedron by attaching two pentagons to each face of
* of a cube. The coordinates of the points are:
* (+-x,0, z); (+-1, 1, 1); (0, z, x )
- * where x = 0.61803398875 and z = 1.61803398875.
+ * where x = (-1 + sqrt(5))/2, z = (1 + sqrt(5))/2 or
+ * x = 0.61803398875 and z = 1.61803398875.
*/
glBegin ( GL_LINE_LOOP ) ;
glNormal3d ( 0.0, 0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;
/* Magic Numbers: It is possible to create a dodecahedron by attaching two pentagons to each face of
* of a cube. The coordinates of the points are:
* (+-x,0, z); (+-1, 1, 1); (0, z, x )
- * where x = 0.61803398875 and z = 1.61803398875.
+ * where x = (-1 + sqrt(5))/2, z = (1 + sqrt(5))/2 or
+ * x = 0.61803398875 and z = 1.61803398875.
*/
glBegin ( GL_POLYGON ) ;
glNormal3d ( 0.0, 0.525731112119, 0.850650808354 ) ; glVertex3d ( 0.0, 1.61803398875, 0.61803398875 ) ; glVertex3d ( -1.0, 1.0, 1.0 ) ; glVertex3d ( -0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 0.61803398875, 0.0, 1.61803398875 ) ; glVertex3d ( 1.0, 1.0, 1.0 ) ;