天天看點

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

書上又一例子,畫公式 f(x) = e-x cos(2*pi*x) 的曲線,效果如下:

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

這是我在visual studio 2005 下編譯通過的源代碼:

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

//  Draw the "dot plots" of a function

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

// P52 in <Computer Graphics Using OpenGL(Second Edition)>

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

#include < math.h >

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

#include < GL / glut.h >

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

const   int  screenWidth  =   640 ;    //  width of screen window in pixels

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

const   int  screenHeight  =   480 ;   //  height of screen window in pixels

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

GLdouble A,B,C,D;  //  values used for scaling and shifting

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

// ----------Initialization--------------

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

void  init( void )

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

... {

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glClearColor(1.0,1.0,1.0,0.0); // Set white background color

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glColor3f(0.0f,0.0f,0.0f);    // Drawing color is black

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glPointSize(2.0);             // a 'dot' is 2 by 2 pixels

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glMatrixMode(GL_PROJECTION);  // Set "camera shape"

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glLoadIdentity();

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    gluOrtho2D(0.0,(GLdouble)screenWidth,0.0,(GLdouble)screenHeight);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    // Set values used for scaling and shifting

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    A = screenWidth/4.0;

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    B = 0.0;

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    C = D = screenHeight/2.0;

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

}

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

//  --------Draw the "dot plots" of a function------

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

void  dotPlots( void )

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

... {

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glClear(GL_COLOR_BUFFER_BIT);       //clear the screen

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glBegin(GL_POINTS);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

        for(GLdouble x = 0;x<4.0;x += 0.005)

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

        ...{

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

            GLdouble func = exp(-x) * cos(2*3.14159265*x);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

            glVertex2d(A*x+B,C*func+D);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

        }

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glEnd();

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    // Draw a horizontal line

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glBegin(GL_LINES);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

        glVertex2i(0,screenHeight/2);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

        glVertex2i(screenWidth,screenHeight/2);

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glEnd();

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glFlush(); //send all output to display

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

}

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

// --------main-----------

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

void  main( int  argc, char **  argv)

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像
用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

... {

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutInit(&argc, argv);  // Initialize the toolkit

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);  // Set display mode

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutInitWindowPosition(100, 150);  // Set window pozition on screen

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutInitWindowSize(screenWidth, screenHeight);      // Set window size

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutCreateWindow("Dot plot of a Function"); // Open the screen window

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutDisplayFunc(dotPlots); // Register redraw function 

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    init();

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

    glutMainLoop();  // Go into a perpetual loop

用OpenGL在 visual studio 2005 下畫簡單的二維函數圖像

}

在上面的 dotPlot()中的for循環裡做一些更改就可以畫另一個函數圖了

上一篇: C99标準特性
下一篇: C99标準變化