OpenGL 圆形投影。需要一些解释[关闭]

Posted

技术标签:

【中文标题】OpenGL 圆形投影。需要一些解释[关闭]【英文标题】:OpenGL Circle projection. Need some explanation [closed] 【发布时间】:2016-05-12 03:03:34 【问题描述】:

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

    #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();

【问题讨论】:

你有什么问题? 这既不是有效的 C 也不是有效的 C++。如果您希望从中学到一些东西:获取更好的学习资源。 【参考方案1】:

DEG2RAD=2*PI/180;

这是错误的等式使用这个:

DEG2RAD=PI/180.0f;

或者

DEG2RAD=2.0f*PI/360.0f;

Y 轴偏移也在屏幕外,从这个范围中选择另一个值

Y = [5.... 495]

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于OpenGL 圆形投影。需要一些解释[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL投影裁剪

OPENGL若干重要基础概念

OpenGL - 正交投影矩阵,glViewport

OpenGL glMatrixMode() 函数解释与例子

为啥 OpenGL 中的 3D 投影可以工作,但会留下痕迹?

设置 opengl 视图和投影转换