2015-02-06 10 views
-1

OpenGL 프로그램에서 heptagon을 그리는 데 문제가 있습니다. 나는 직사각형 내에서 heptagon을 그리기를 원한다. 지금까지 나는 빨간 사각형을 그릴 수 있지만 heptagon은 나타나지 않는다.2D Heptagon 그리기 OpenGL

오른쪽으로 회전하고 싶지 않으면 각도로 변환해야한다고 생각하지 않습니다.

void CChildView::OnGLDraw(CDC* pDC) 
{ 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    int width, height; 
    GetSize(width, height); 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0.0, // left 
     1.0, // right 
     0.0, // bottom 
     GLdouble(height)/GLdouble(width), // top 
     1.0, // near 
     -1.0); // far 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 

    glColor3d(1., 0., 0.); 

    glBegin(GL_POLYGON); // Rectangle 
    glVertex2d(0.25, 0.25); 
    glVertex2d(0.75, 0.25); 
    glVertex2d(0.75, 0.75); 
    glVertex2d(0.25, 0.75); 
    glEnd(); 

    glColor3d(1., 1., 1.); 

    int numPoints = 7; // Heptagon 
    double x, y; 
    double radius = 0; 
    double centerx = 0; 
    double centery = 0; 

    glBegin(GL_POLYGON); 

    for (int i = 0; i < numPoints; i++) 
    { 
     x = centerx + radius * sin(2.0*M_PI*i/numPoints); 
     y = centery + radius * cos(2.0*M_PI*i/numPoints); 

     glVertex2d(x, y); 

    } 
    glEnd(); 

    glColor3d(0., 1., 0.); 

    glBegin(GL_LINES); 
    glVertex2d(m_linefmx, m_linefmx); 
    glVertex2d(m_linetox, m_linetoy); 
    glEnd(); 

} 
+0

사각형이 제거되었는지 확인하기 위해 시도 했습니까? 계산 된 좌표가 정확한지 디버깅 해 보셨습니까? Btw 대개 '죄'는 'y'이고 'cos'은'x '입니다. – vesan

+1

'반지름'이 0으로 설정되고 나중에 수정되지 않는 것으로 나타났습니다. 따라서 모든 점은 (0,0)으로 계산됩니다. – vesan

+0

예, 반경이 문제였습니다. 이 질문을 삭제해야합니까? – Goose

답변

0

문제는 radius 그래서 모든 점 (0,0)로 계산되며 0으로 초기화하고 변경되지 않습니다이다 : 여기 내 코드입니다.