通过这个例子可以更加深刻的了解割圆术的原理,明白如何的化曲为直,且看代码;
#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时,可以明显的看到圆变得相对平滑,见图: