其他计算机图形学实验见 链接
使用OpenGL绘制如图所示图形
有穷的:
#include <GL/glut.h>
#include <math.h>
#include<stdio.h>
const GLfloat Pi = 3.1415926536f;
//GLfloat R = 1.0f;
void display()
{
GLfloat R = 1.0f;
glClear(GL_COLOR_BUFFER_BIT);
for (int k = 0; k < 100; k++)
{
//方
glBegin(GL_LINE_LOOP);
if (k % 2 == 0)
for (int i = 1; i <= 4; ++i)
glVertex2f(R * cos(Pi * i / 2), R * sin(Pi * i / 2));
else
for (int i = 1; i <= 4; i++)
glVertex2f(R * cos(Pi * i / 2 - Pi / 4), R * sin(Pi * i / 2 - Pi / 4));
R = sqrt(2) / 2 * R;
glEnd();
//圆
glBegin(GL_LINE_LOOP);
for (int i = 1; i <= 150; ++i)
glVertex2f(R * cos(2 * Pi / 150 * i), R * sin(2 * Pi / 150 * i));
glEnd();
}
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //设置显示方式
glutInitWindowPosition(500, 100);
glutInitWindowSize(700, 700);
glutCreateWindow("图形学"); //根据前面设置的信息创建窗口。参数将被作为窗口的标题。
glutDisplayFunc(&display);
glutMainLoop();
return 0;
}
无穷的:
#include <GL/glut.h>
#include <math.h>
#include<stdio.h>
const GLfloat Pi = 3.1415926536f;
//GLfloat R = 1.0f;
void display()
{
GLfloat R = 1.0f;
glClear(GL_COLOR_BUFFER_BIT);
int k = 0;
for (/*int k = 0; k < 100; k++*/;;)
{
//方
glBegin(GL_LINE_LOOP);
if (k % 2 == 0)
for (int i = 1; i <= 4; ++i)
glVertex2f(R * cos(Pi * i / 2), R * sin(Pi * i / 2));
else
for (int i = 1; i <= 4; i++)
glVertex2f(R * cos(Pi * i / 2 - Pi / 4), R * sin(Pi * i / 2 - Pi / 4));
R = sqrt(2) / 2 * R;
glEnd();
//圆
glBegin(GL_LINE_LOOP);
for (int i = 1; i <= 150; ++i)
glVertex2f(R * cos(2 * Pi / 150 * i), R * sin(2 * Pi / 150 * i));
glEnd();
//无穷尽焉的glFlush();就写在这里
glFlush();
k++;
}
//glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //设置显示方式
glutInitWindowPosition(500, 100);
glutInitWindowSize(700, 700);
glutCreateWindow("图形学"); //根据前面设置的信息创建窗口。参数将被作为窗口的标题。
glutDisplayFunc(&display);
glutMainLoop();
return 0;
}