计算机图形学-OpenGL-绘制五角星
本次实验我们将利用OpenGL绘制五角星图案,集成开发环境采用VS2013。
预备知识
五角星五个顶点的计算方法:
五个顶点均匀分布在圆周上,可以用如下公式计算:
-
Xi=R∗cos(2∗π∗i5)
-
Xi=R∗sin(2∗π∗i5)
-
i=0,1,2,3,4
实验步骤
- 按上述公式计算5个顶点坐标,记为ABCDE;
- 画线段:AC、CE、EB、BD、DA。
- 设置合适的线段宽度、颜色。
- 将图形移动到屏幕中央:glTranslate2f(dx, dy)
实验代码
#include <GL/glut.h>
#include <math.h>
#include <cstdio>
const GLfloat Pi = 3.1415926536f; //定义Pi值
GLfloat X[5], Y[5]; //用数组声明5组坐标
int R = 1; //定义半径
void init() //初始化函数
{
glClearColor(1.0, 1.0, 1.0, 0.0); //设置背景颜色
for (int i = 0; i <= 4; i++)
{
//在圆上初始化5个坐标点
X[i] = R*cos(2 * Pi*i / 5);
Y[i] = R*sin(2 * Pi*i / 5);
}
}
void myDisplay(void) //显示函数
{
glClear(GL_COLOR_BUFFER_BIT); //清除颜色
glColor3f(1.0, 0.0, 0.0); //设置线条颜色
glBegin(GL_LINE_LOOP); //按照顺序开始画线,AC->CE->EB->BD->DA
glVertex2f(X[0], Y[0]);
glVertex2f(X[2], Y[2]);
glVertex2f(X[4], Y[4]);
glVertex2f(X[1], Y[1]);
glVertex2f(X[3], Y[3]);
glEnd();
glFlush(); //保证前面的命令立即执行
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100); //设置显示位置
glutInitWindowSize(400, 400); //设置窗口大小
glutCreateWindow("五角星图案"); //设置窗口标题
init(); //运行初始化函数
glutDisplayFunc(&myDisplay); //调用显示窗口
glutMainLoop();
return 0;
}