A perfect cylinder is two circles (the ends) separated by some distance with the middle space filled in. The best way to render one is to approximate the circles with triangles. Pick the number of slices of a circle you want to use (think slices of a pie), pick a radius, and pick a length of the cylinder.

Now, the coordinates of a circle are r*sin(theta) and r*cos(theta), so I’m going to use a for loop, increment theta, and use those values to construct the cylinder.

Something like this:

```
float radius, halfLength;
int slices;
for(int i=0; i<slices; i++) {
float theta = ((float)i)*2.0*M_PI;
float nextTheta = ((float)i+1)*2.0*M_PI;
glBegin(GL_TRIANGLE_STRIP);
/*vertex at middle of end */ glVertex3f(0.0, halfLength, 0.0);
/*vertices at edges of circle*/ glVertex3f(radius*cos(theta), halfLength, radius*sin(theta));
glVertex3f (radius*cos(nextTheta), halfLength, radius*sin(nextTheta));
/* the same vertices at the bottom of the cylinder*/
glVertex3f (radius*cos(nextTheta), -halfLength, radius*sin(nextTheta));
glVertex3f(radius*cos(theta), -halfLength, radius*sin(theta));
glVertex3f(0.0, -halfLength, 0.0);
glEnd();
}
```