美文网首页openGL
openGL——01、二维螺旋线demo

openGL——01、二维螺旋线demo

作者: 长青之木 | 来源:发表于2018-04-07 13:11 被阅读37次

    需求

    使用opengl实现如下图所示的二维螺旋线:

    螺旋线.png

    原理

    利用圆的参数方程

    x = x0 + r * cos(θ);
    y = y0 + r * sin(θ);
    

    在变化角度的同时,圆的半径也匀速减小。

    代码:

    vs环境可运行。

    /**
     * @date: 2017.06.05
     * @description: 螺旋线。
     */
    
    #include <GL/glut.h>
    #include <math.h>
    
    void init(void) {
        glClearColor(1.0, 1.0, 1.0, 0.0);
        glMatrixMode(GL_PROJECTION);
        gluOrtho2D(0.0, 1000.0, 0.0, 900.0);
    }
    
    void simulate(void) {
        GLfloat pi2 = 3.1415936 * 2;
        GLfloat one = 1.0;
        GLfloat zero = 0.0;
        GLfloat r = 450;
        GLfloat x = 500.0;
        GLfloat y = 450.0;
        GLfloat c = 0.08;
    
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(0.0, 0.0, 0.0);
    
        glBegin(GL_POINTS);
    
        for (GLfloat j = 0; j < pi2 * 10; j += 0.01) {
            r = r < zero ? zero : r;
            glVertex2f(x + r * cos(j) + one, y + r * sin(j) + one);
            glVertex2f(x + r * cos(j) + one, y + r * sin(j) - one);
            glVertex2f(x + r * cos(j) - one, y + r * sin(j) + one);
            glVertex2f(x + r * cos(j) - one, y + r * sin(j) - one);
            glVertex2f(x + r * cos(j), y + r * sin(j));
            r -= c;     
    
        }
    
        glEnd();
        glFlush();
    }
    
    int main(int argc, char** argv) {
    
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowPosition(50, 100);
        glutInitWindowSize(1000,900);
        glutCreateWindow("an example OpenGL Program");
    
        init();
        glutDisplayFunc(simulate);
        glutMainLoop();
    
        return 0;
    }
    
    

    More

    上述代码中的:gluOrtho2D(0.0, 1000.0, 0.0, 900.0);glutInitWindowSize(1000, 900);,前者表示裁剪窗口的参数,后者表示视口的参数,其高宽比若不一致,则会导致图像拉伸。

    可以在githup上面查看:
    https://github.com/lifeSo/graphicsDemo/blob/master/01.get start/02.spiral line.c

    相关文章

      网友评论

        本文标题:openGL——01、二维螺旋线demo

        本文链接:https://www.haomeiwen.com/subject/ywcyhftx.html