#include <GL/glut.h>
#include <math.h>
const int n = 200;
const float R = 0.5;
const float Pi = 3.1415926536;/*画一个圆*/
void myDisplay1(void)
{int i;float x, y;glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POLYGON);for (i = 0; i < n; ++i){x = R * cos(2 * Pi / n * i);y = R * sin(2 * Pi / n * i);glVertex2f(x, y);}glEnd();glFlush();
}
/*画一个五角星*/
/* 首先,根据余弦定理列方程,
计算五角星的中心到顶点的距离a (假设五角星对应正五边形的边长为.0)
a = 1 / (2-2*cos(72*Pi/180));
然后,根据正弦和余弦的定义,计算B的x坐标bx和y坐标by,
以及C的y坐标 (假设五角星的中心在坐标原点)
bx = a * cos(18 * Pi/180);
by = a * sin(18 * Pi/180);
cy = -a * cos(18 * Pi/180);
五个点的坐标就可以通过以上四个量和一些常数简单的表示出来 */
void myDisplay2(void)
{GLfloat a = 1 / (2 - 2 * cos(72 * Pi / 180));GLfloat bx = a * cos(18 * Pi / 180);GLfloat by = a * sin(18 * Pi / 180);GLfloat cy = -a * cos(18 * Pi / 180);GLfloat PointA[2] = { 0, a },PointB[2] = { bx, by },PointC[2] = { 0.5, cy },PointD[2] = { -0.5, cy },PointE[2] = { -bx, by };glClear(GL_COLOR_BUFFER_BIT);// 按照A->C->E->B->D->A的顺序,可以一笔将五角星画出 glBegin(GL_LINE_LOOP);glVertex2fv(PointA);glVertex2fv(PointC);glVertex2fv(PointE);glVertex2fv(PointB);glVertex2fv(PointD);glEnd();glFlush();
}/*画出正弦函数的图形 */
/* 由于OpenGL默认坐标值只能从-1到1,
(可以修改,但方法留到以后讲) 所以我们设置一个因子factor,
把所有的坐标值等比例缩小, 这样就可以画出更多个正弦周期
试修改factor的值,观察变化情况 */
const GLfloat factor = 0.1f;
void myDisplay3(void)
{GLfloat x;glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_LINES);glVertex2f(-1.0f, 0.0f);glVertex2f(1.0f, 0.0f); // 以上两个点可以画x轴 glVertex2f(0.0f, -1.0f);glVertex2f(0.0f, 1.0f); // 以上两个点可以画y轴 glEnd();glBegin(GL_LINE_STRIP);for (x = -1.0f / factor; x < 1.0f / factor; x += 0.01f){glVertex2f(x*factor, sin(x)*factor);}glEnd();glFlush();
}int main(int argc, char *argv[])
{/*初始化*/glutInit(&argc, argv);/*设置显示方式:RGB颜色,单缓冲*/glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);/*设置在窗口的中心位置*/glutInitWindowPosition(100, 100);/*设置窗口大小*/glutInitWindowSize(200, 200);/*创建窗口*/glutCreateWindow("Paint1");/*设置一个函数*/glutDisplayFunc(&myDisplay1);/*创建窗口*/glutCreateWindow("Paint2");/*设置一个函数*/glutDisplayFunc(&myDisplay2);/*创建窗口*/glutCreateWindow("Paint3");/*设置一个函数*/glutDisplayFunc(&myDisplay3);/*进行一个消息循环*/glutMainLoop();return 0;
}

【计算机图形学】实验报告1用OpenGL画线命令绘制一个多边构成图形或场景相关推荐

  1. OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动

    OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...

  2. OpenGL南邮计算机图形学实验报告四——用键盘控制物体

    OpenGL南邮计算机图形学实验报告四--用键盘控制物体 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 环境配置. ...

  3. OpenGL南邮计算机图形学实验报告三——实现类似地月系统的两物体环绕移动

    OpenGL南邮计算机图形学实验报告三--实现类似地月系统的两物体环绕移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SO ...

  4. 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...

    华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...

  5. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  6. 计算机图学实验报告,计算机图形学实验报告实验1

    计算机图形学实验报告实验1 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学实验报告学院:计算机科学与信息专业:计科班级:101 ...

  7. 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...

    PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...

  8. 计算机图形学实验报告 裁剪,计算机图形学-实验报告三-图形裁剪算法

    <计算机图形学-实验报告三-图形裁剪算法>由会员分享,可在线阅读,更多相关<计算机图形学-实验报告三-图形裁剪算法(9页珍藏版)>请在人人文库网上搜索. 1.图形裁剪算法1. ...

  9. 计算机图形动画处理实训报告,西安石油大学计算机图形学 实验报告.doc

    文档介绍: 西安石油大学计算机图形学_实验报告实验报告 -计算机图形学实验大作业 课程名称计算机图形学 实验名称二维绘图系统与计算机动画 姓名 学号 专业班级 成绩 指导教师爨莹 实验报告 课程名称计 ...

最新文章

  1. mysql 字段必填 属性_如何判断数据库中的字段是否具有必填属性(50分)
  2. 前端使用 Nginx 反向代理彻底解决跨域问题
  3. 拖链电缆 机器人电缆_尼龙拖链在机器中起着电缆的作用
  4. DEV GridLookUpEdit属性设置
  5. SAP Hybris Commerce启用customer coupon的前提条件
  6. 算法设计与分析——动态规划——01背包问题
  7. 关于计算机网络的未来综述,计算机网络综述
  8. SpringBoot加载自定义yml文件
  9. redis介绍和安装
  10. Linux打开关闭ping
  11. 2021 王道考研 计算机网络+习题讲解
  12. python如何拼读英语单词怎么写_如何拼读英语单词
  13. 动手深度学习--windows环境安装
  14. python requests 登录接口场景使用案例
  15. OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
  16. mysql 1033 frm_修复mysqldump Incorrect information in file frm (1033)
  17. HTTPS安全通信:HTTPS与SSL
  18. C# Process.HasExited准确性
  19. Redis使用方法介绍
  20. 常见的机器学习数据挖掘知识点

热门文章

  1. 软件设计模式学习(十四)外观模式
  2. DSP28335:多功能复用引脚GPIO
  3. 使用ffmpeg从视频中提取音频文件
  4. 使用Fiddler/Charles+Jmeter进行接口自动化测试和接口性能测试(关联接口测试、接口自动化测试、脚本录制、软件测试、性能测试、测试工具)
  5. javaWeb的分页
  6. 最大子段和(C++)
  7. 拉格朗日插值法 C语言实现
  8. centOS关机重启,保存内存中数据
  9. salesforce中常用技能总结(纯粹干货,深度积累)图解
  10. Ubuntu18.04.5-server网络配置介绍