安装过程
vc2019
glut安装包下载地址
https://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
安装位置
绘制五角星
#include <GL/glut.h>
#include<math.h>
#include<stdio.h>
void myDisplay(void)
{
glClearColor(1.0, 1.0, 1.0, 1.0);//bgcolor
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(0.5);
glColor4f(1.0, 0, 0, 0);//最后一个参数 透明度
//loop 顺序链接每一个点 最后连接第一个
/*
正多边形内角和(n-2)*180
五角星度数为36°
以正中心点为原点
每个点与原点连接线段与x轴相交度数
cos sin
*/
//角度转换弧度 x/360*2*pi
GLfloat xA = 0.8f * cos(90 * 2 * 3.1415926 / 360);
GLfloat yA = 0.8f * sin(90 * 2 * 3.1415926 / 360);
GLfloat xB = 0.8f * cos(306 * 2 * 3.1415926 / 360);
GLfloat yB = 0.8f * sin(306 * 2 * 3.1415926 / 360);
GLfloat xC = 0.8f * cos(162 * 2 * 3.1415926 / 360);
GLfloat yC = 0.8f * sin(162 * 2 * 3.1415926 / 360);
GLfloat xD = 0.8f * cos(18 * 2 * 3.1415926 / 360);
GLfloat yD = 0.8f * sin(18 * 2 * 3.1415926 / 360);
GLfloat xE = 0.8f* cos(234 * 2 * 3.1415926 / 360);
GLfloat yE = 0.8f* sin(234 * 2 * 3.1415926 / 360);
glBegin(GL_LINE_LOOP);
glVertex2f(xA, yA);
glVertex2f(xB, yB);
glVertex2f(xC, yC);
glVertex2f(xD, yD);
glVertex2f(xE, yE);
glEnd();
glColor4f(1.0, 0,0, 0);
glBegin(GL_LINE_LOOP);
glVertex2f(xA, yA);
glVertex2f(xD, yD);
glVertex2f(xB, yB);
glVertex2f(xE, yE);
glVertex2f(xC, yC);
glEnd();
int n;
int R =1.0;
int G = 0.1;
int B = 1.0;
glColor4f(R, G, B, 0);
glBegin(GL_LINE_LOOP);
for (n = 3; n <= 10; n++) {
for (int i = 0; i < n; i++) {
glVertex2f(0.8f * cos(2 * 3.1415926 / n * i), 0.8f * sin(2 * 3.1415926 / n * i));
}
}
int n1 = 200;
for (int i = 1; i <= n1; i++)
{
glVertex2f(0.6f * cos(2 * 3.1415926 / i * n1), 0.3f * sin(2 * 3.1415926 / i * n1));
}
glEnd();
/*glBegin(GL_LINES);
glColor3f(0.5, 0, 0);
//此处修改坐标,绘制多边形
glVertex2f(0.1f, 0.1f);
glVertex2f(0.1f, 0.2f);
glVertex2f(0.2f, 0.1f);
//printf("sdf");
glEnd();*/
glFlush();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("五角星及内接多边形");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
成功绘制五角星。在整个编写代码过程中,利用到了较多的数学知识。代码设计部分并不困难。确定原点,利用数学知识,得知并绘制各点的坐标。利用GL_LINE_LOOP参数,连接各点并连接首尾点,最终绘制五角星。在五角星基础上扩展,绘制圆内接多边形,当圆内接多边形边数足够多的时候,就形成了圆。进一步理解了OpenGL基础图形绘制函数的用法。在实验过程中,遇到了一些问题如数学上的点的坐标计算,通过上网学习,解决问题。