2015-02-06 188 views
-1

在我的OpenGL程序中繪製七邊形時遇到困難。我想繪製一個矩形內的七邊形,到目前爲止,我可以繪製紅色的矩形,但七邊形沒有顯示出來。繪製2D七邊形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

你有沒有嘗試刪除矩形,看看有什麼東西出現?你有沒有調試過,看看你的計算座標是否正確?順便說一句,「sin」是'y','cos'是'x'。 – vesan 2015-02-06 02:57:07

+1

剛注意到你的'半徑'被設置爲0,之後沒有修改 - 所以所有的點可能會被計算爲(0,0) – vesan 2015-02-06 02:59:02

+0

是的,半徑是問題。我應該刪除這個問題嗎? – Goose 2015-02-06 03:23:33

回答

0

問題是radius被初始化爲0,並沒有改變,因此所有點的計算公式爲(0,0)。