#define GL_PI 3.1415f

void createCylinder(GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat radius, GLfloat h)
{
    /* function createCyliner()
    원기둥의 중심 x,y,z좌표, 반지름, 높이를 받아 원기둥을 생성하는 함수(+z방향으로 원에서 늘어남)
    centerx : 원기둥 원의 중심 x좌표
    centery : 원기둥 원의 중심 y좌표
    centerz : 원기둥 원의 중심 z좌표
    radius : 원기둥의 반지름
    h : 원기둥의 높이
    */
    GLfloat x, y, angle;

    glBegin(GL_TRIANGLE_FAN);           //원기둥의 윗면
    glNormal3f(0.0f, 0.0f, -1.0f);
    glColor3ub(139, 69, 19);
    glVertex3f(centerx, centery, centerz);

    for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(0.0f, 0.0f, -1.0f);         glVertex3f(x, y, centerz);     }     glEnd();     glBegin(GL_QUAD_STRIP); //원기둥의 옆면     for(angle = 0.0f; angle < (2.0f*GL_PI); angle += (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(sin(angle), cos(angle), 0.0f);         glVertex3f(x, y, centerz);         glVertex3f(x, y, centerz + h);     }     glEnd();     glBegin(GL_TRIANGLE_FAN); //원기둥의 밑면     glNormal3f(0.0f, 0.0f, 1.0f);     glVertex3f(centerx, centery, centerz + h);     for(angle = (2.0f*GL_PI); angle > 0.0f; angle -= (GL_PI/8.0f))     {         x = centerx + radius*sin(angle);         y = centery + radius*cos(angle);         glNormal3f(0.0f, 0.0f, 1.0f);         glVertex3f(x, y, centerz + h);     }     glEnd(); }


+ Recent posts