您的位置:首页 > 理论基础

计算机图形学-OpenGL-绘制五角星

2017-05-26 21:48 204 查看

计算机图形学-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;
}


效果预览

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: