通過這個例子可以更加深刻的了解割圓術的原理,明白如何的化曲為直,且看代碼;
#include <windows.h> //#include <GLUT/glut.h> #include <GL/glut.h> #include <stdlib.h> #include <stdio.h> #include <math.h> const int n=10; const GLfloat R=0.5f; const GLfloat Pi=3.1415926536f; void MyDisplay() { int i; glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); for(int i=0;i<n;i++) glVertex2f(R*cos(2*Pi/n*i),R*sin(2*Pi/n*i)); glEnd(); glFlush(); } int main(int argc,char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); glutInitWindowPosition(100,100); glutInitWindowSize(400,400); glutCreateWindow("opengl程序"); glutDisplayFunc(&MyDisplay); glutMainLoop(); return 0; }
當n為10時,可以明顯的看到圓的不平滑,見圖:
當n為20時,可以明顯的看到圓變得相對平滑,見圖: