Opengl -- 五角星的绘制

#include #include #include const double PI=acos(-1.0); //Pos[2]=五角星坐标,Length=五角星尺寸 void DrawFivestar(GLfloat Pos[2],GLfloat Length) { float Short=Length*sin(0.1*PI)/sin(0.7*PI); float p1[2],p2[2]; glColor3f(1.0,0.0,0.0); p1[0]=Length+200.0; p1[1]=0.0+200.0; p1[0]=Pos[0]+Length*cos(56/180.0); p1[1]=Pos[1]+Length*sin(56/180.0); for(int i=0;i<10;i++) { if(i%2==0) //注意不要写成i/2,因为这是取整,我们的是取余 { p2[0]=Short*cos((i+1)*0.2*PI+56/180.0)+Pos[0]; p2[1]=Short*sin((i+1)*0.2*PI+56/180.0)+Pos[1]; } else { p2[0]=Length*cos((i+1)*0.2*PI+56/180.0)+Pos[0]; p2[1]=Length*sin((i+1)*0.2*PI+56/180.0)+Pos[1]; } glVertex2fv(p1); glVertex2fv(p2); p1[0]=p2[0]; p1[1]=p2[1]; } } void display() { glClear(GL_COLOR_BUFFER_BIT); float pCenter[]={200.0,200.0}; glBegin(GL_LINES); DrawFivestar(pCenter,100.0); glEnd(); glFlush(); } void myinit() { glClearColor(1.0, 0.0, 1.0,1.0); // 白色的背景 // 设置观察条件 // 在观察坐标系中定义一个大小为50.0×50.0的观察窗口, // 窗口的左下角对应观察坐标系的坐标原点 glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 400.0, 0.0, 400.0); glMatrixMode(GL_MODELVIEW); } int main(int argc, char** argv) { // 初始化GLUT库函数的常用形式 glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 这是默认显示模式,可忽略 glutInitWindowSize(500, 500); // 大小为500×500像素的绘图窗口 glutInitWindowPosition(0, 0); // 把绘图窗口的左上角放在屏幕左上角 glutCreateWindow("Sierpinski Gasket"); // 创建绘图窗口,参数为绘图窗口的标题 glutDisplayFunc(display); // 注册显示回调函数 myinit(); // 初始化一些属性 glutMainLoop(); // 进入事件循环 return 0; // 该句不会执行,仅为了有个返回值 }

你可能感兴趣的:(OpenGL)