OpenGL Circle投影。需要一些解释

时间:2016-05-12 03:03:34

标签: c++ c opengl

我似乎无法理解下面的代码。明天有我的实验室外部,如果有人可以解释代码将会有很大的帮助。请强调下面的圆形功能。如果可能的话,请看这个代码中的错误,我看不到输出(只是白屏)。!

    #include<GL/glut.h>
    #include<stdio.h>
    #define PI 3.14

    void circle()
    {
     glClear(GL_COLOR_BUFFER_BIT);

     float i;
        float X=350,Y=630;
        float Radius=5;

      float DEG2RAD=2*PI/180;

       glColor3f(0,0,0);

      glBegin(GL_LINE_LOOP);

      for(i=0;i<360;i++)

    {

        float DEGINRAD=i*DEG2RAD;

        glVertex3f(X+cos(DEGINRAD)*Radius,Y+sin(DEGINRAD)*Radius,0);



    }

    glEnd();

glFlush();
}

void myinit()
{
 glClearColor(1.0,1.0,1.0,1.0);
 glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluOrtho2D(0,499,0,499);

}
void main(int argc,char **argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 glutInitWindowSize(500,500);
 glutCreateWindow("Circle");
 glutDisplayFunc(circle);
 myinit();
 glutMainLoop();
}

2 个答案:

答案 0 :(得分:1)

DEG2RAD = 2 * PI / 180;

这是错误的等式使用它:

DEG2RAD = PI / 180.0f;

或者

DEG2RAD = 2.0F * PI / 360.0f;

Y偏离屏幕也会从此范围中选择另一个值

Y = [5 .... 495]

答案 1 :(得分:0)

这只是数学。循环(for)围绕圆心的每个度创建一个顶点。只需像mofed8461已经说过的那样更改DEG2RAD=2.0f*PI/360.0f;,并按照圈子在屏幕上的方式定位中心(X,Y)。