- e.x = cos (theta2) * cos(theta3);
- e.y = sin (theta2);
- e.z = cos (theta2) * sin(theta3);
- p.x = c.x + r * e.x;
- p.y = c.y + r * e.y;
- p.z = c.z + r * e.z;
-
- glNormal3f (e.x, e.y, e.z);
- glTexCoord2f (i / (double)slices,
- 2*(j+1) / (double)stacks2);
- glVertex3f (p.x, p.y, p.z);
- if (wire) la = p;
-
- e.x = cos(theta1) * cos(theta3);
- e.y = sin(theta1);
- e.z = cos(theta1) * sin(theta3);
- p.x = c.x + r * e.x;
- p.y = c.y + r * e.y;
- p.z = c.z + r * e.z;
-
- glNormal3f (e.x, e.y, e.z);
- glTexCoord2f (i / (double)slices,
- 2*j / (double)stacks2);
- glVertex3f (p.x, p.y, p.z);
- if (wire) lb = p;
+ n.x = cos (theta2) * cos(theta3);
+ n.y = sin (theta2);
+ n.z = cos (theta2) * sin(theta3);
+ p.x = c.x + r * n.x;
+ p.y = c.y + r * n.y;
+ p.z = c.z + r * n.z;
+
+ array[out].p = p; /* vertex */
+ array[out].n = n; /* normal */
+ array[out].s = i / (GLfloat) slices; /* texture */
+ array[out].t = 2*(j+1) / (GLfloat) stacks2;
+ out++;
+
+ if (wire_p) la = p;
+
+ n.x = cos(theta1) * cos(theta3);
+ n.y = sin(theta1);
+ n.z = cos(theta1) * sin(theta3);
+ p.x = c.x + r * n.x;
+ p.y = c.y + r * n.y;
+ p.z = c.z + r * n.z;
+
+ array[out].p = p; /* vertex */
+ array[out].n = n; /* normal */
+ array[out].s = i / (GLfloat) slices; /* texture */
+ array[out].t = 2*j / (GLfloat) stacks2;
+ out++;
+
+ if (out >= arraysize) abort();
+
+ if (wire_p) lb = p;
+ polys++;