void ramie(double r1, double r2, double h, double d) { double angle, x, y; glColor3d(0, 64, 128); glBegin(GL_TRIANGLE_FAN); glVertex3d(0.0f, 0.0f, 0.0f); for (angle = GL_PI; angle <= (2.0f*GL_PI); angle += (GL_PI / 8.0f)) { x = r1*sin(angle); y = r1*cos(angle); glVertex3d(x, y, 0.0); } glEnd(); glFrontFace(GL_CW); glBegin(GL_QUAD_STRIP); for (angle = (GL_PI); angle <= (2.0f * GL_PI); angle += (GL_PI / 8.0f)) { x = r1*sin(angle); y = r1*cos(angle); glVertex3d(x, y, h); glVertex3d(x, y, 0); } glEnd(); glFrontFace(GL_CCW); glBegin(GL_TRIANGLE_FAN); glVertex3d(0.0f, 0.0f, h); for (angle = 0.0f; angle >= -(GL_PI); angle -= (GL_PI / 8.0f)) { x = r1*sin(angle); y = r1*cos(angle); glVertex3d(x, y, h); } glEnd(); glBegin(GL_QUADS); glColor3d(1, 0.5, 0); glVertex3d(0, r1, h); glVertex3d(0, -r1, h); glVertex3d(d, -r2, h); glVertex3d(d, r2, h); glColor3d(1, 0.5, 0); glVertex3d(0, r1, 0); glVertex3d(0, r1, h); glVertex3d(d, r2, h); glVertex3d(d, r2, 0); glColor3d(1, 0.5, 0); glVertex3d(0, r1, 0); glVertex3d(d, r2, 0); glVertex3d(d, -r2, 0); glVertex3d(0, -r1, 0); glColor3d(1, 0.5, 0); glVertex3d(0, -r1, 0); glVertex3d(d, -r2, 0); glVertex3d(d, -r2, h); glVertex3d(0, -r1, h); glEnd(); glColor3d(0, 64, 128); glBegin(GL_TRIANGLE_FAN); glVertex3d(d, 0.0f, 0.0f); for (angle = 0; angle <= (GL_PI); angle += (GL_PI / 8.0f)) { x = r2*sin(angle) + d; y = r2*cos(angle); glVertex3d(x, y, 0.0); } glEnd(); glFrontFace(GL_CW); glBegin(GL_QUAD_STRIP); for (angle = 0; angle <= GL_PI; angle += (GL_PI / 8.0f)) { x = r2*sin(angle) + d; y = r2*cos(angle); glVertex3d(x, y, h); glVertex3d(x, y, 0); } glEnd(); glFrontFace(GL_CCW); glBegin(GL_TRIANGLE_FAN); glVertex3d(d, 0.0f, h); for (angle = -(GL_PI); angle >= -(2.0f * GL_PI); angle -= (GL_PI / 8.0f)) { x = r2*sin(angle) + d; y = r2*cos(angle); glVertex3d(x, y, h); } glEnd(); }