書上又一例子,畫公式 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循環裡做一些更改就可以畫另一個函數圖了