- 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();
- }