2015-02-06 190 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)。