1. 实验目的
练习OpenGL基础编程,实现OpenGL的颜色混合和渐变效果。
2. 实验内容和要求
按要求完成以下两个绘图,提交纸质实验报告,同时提交实验报告和代码的电子版。
I). 利用OpenGL对下面的图形进行七种颜色的渐变填充,实现彩虹效果。
II). 利用OpenGL绘制如下图形,颜色利用随机函数随机设定,实现颜色混合的效果。
3.实验结果
第一题:
源代码:

#include"pch.h"  //因为我下载的是visual stdio 2017所以必须加这个头文件
#include<GL/glut.h>
#include<math.h>
#define PI 3.1415926void init(void) {glClearColor(1.0, 1.0, 1.0, 1.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(-200.0, 200.0, -200.0, 200.0);
}void lineSegment(void) {glClear(GL_COLOR_BUFFER_BIT);int i;float t, t1;for (i = 0; i < 100; i++) {t = PI / 100 * i;t1 = PI / 100 * (i + 1);glShadeModel(GL_SMOOTH);glBegin(GL_POLYGON);glColor3f(0, 0, 0); glVertex2f(32 * cos(t), 32 * sin(t));glColor3f(0, 0, 0); glVertex2f(32 * cos(t1), 32 * sin(t1));glColor3f(0, 0, 0); glVertex2f(35 * cos(t1), 35 * sin(t1));glColor3f(0, 0, 0); glVertex2f(35 * cos(t), 35 * sin(t));glEnd();glBegin(GL_POLYGON);glColor3f(0.6, 0.125, 0.94); glVertex2f(35 * cos(t), 35 * sin(t));glColor3f(0.6, 0.125, 0.94); glVertex2f(35 * cos(t1), 35 * sin(t1));glColor3f(0, 0, 1); glVertex2f(45 * cos(t1), 45 * sin(t1));glColor3f(0, 0, 1); glVertex2f(45 * cos(t), 45 * sin(t));glEnd();glBegin(GL_POLYGON);glColor3f(0, 0, 1); glVertex2f(45 * cos(t1), 45 * sin(t1));glColor3f(0, 0, 1); glVertex2f(45 * cos(t), 45 * sin(t));glColor3f(0, 1, 1); glVertex2f(55 * cos(t), 55 * sin(t));glColor3f(0, 1, 1); glVertex2f(55 * cos(t1), 55 * sin(t1));glEnd();glBegin(GL_POLYGON);glColor3f(0, 1, 1); glVertex2f(55 * cos(t), 55 * sin(t));glColor3f(0, 1, 1); glVertex2f(55 * cos(t1), 55 * sin(t1));glColor3f(0, 1, 0); glVertex2f(65 * cos(t1), 65 * sin(t1));glColor3f(0, 1, 0); glVertex2f(65 * cos(t), 65 * sin(t));glEnd();glBegin(GL_POLYGON);glColor3f(0, 1, 0); glVertex2f(65 * cos(t1), 65 * sin(t1));glColor3f(0, 1, 0); glVertex2f(65 * cos(t), 65 * sin(t));glColor3f(1, 1, 0); glVertex2f(75 * cos(t), 75 * sin(t));glColor3f(1, 1, 0); glVertex2f(75 * cos(t1), 75 * sin(t1));glEnd();glBegin(GL_POLYGON);glColor3f(1, 1, 0); glVertex2f(75 * cos(t), 75 * sin(t));glColor3f(1, 1, 0); glVertex2f(75 * cos(t1), 75 * sin(t1));glColor3f(1, 0.38, 0); glVertex2f(85 * cos(t1), 85 * sin(t1));glColor3f(1, 0.38, 0); glVertex2f(85 * cos(t), 85 * sin(t));glEnd();glBegin(GL_POLYGON);glColor3f(1, 0.38, 0); glVertex2f(85 * cos(t1), 85 * sin(t1));glColor3f(1, 0.38, 0); glVertex2f(85 * cos(t), 85 * sin(t));glColor3f(1, 0, 0); glVertex2f(95 * cos(t), 95 * sin(t));glColor3f(1, 0, 0); glVertex2f(95 * cos(t1), 95 * sin(t1));glEnd();glBegin(GL_POLYGON);glColor3f(0, 0, 0); glVertex2f(95 * cos(t1), 95 * sin(t1));glColor3f(0, 0, 0); glVertex2f(95 * cos(t), 95 * sin(t));glColor3f(0, 0, 0); glVertex2f(98 * cos(t), 98 * sin(t));glColor3f(0, 0, 0); glVertex2f(98 * cos(t1), 98 * sin(t1));glEnd();}glColor3f(0, 0, 0);glLineWidth(3);glBegin(GL_LINES);glVertex2i(32 * cos(0), 32 * sin(0));glVertex2i(98 * cos(0), 98 * sin(0));glVertex2i(32 * cos(PI), 32 * sin(PI));glVertex2i(98 * cos(PI), 98 * sin(PI));glEnd();glFlush();}
void main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(600, 600);glutCreateWindow("彩虹");init();glutDisplayFunc(lineSegment);glutMainLoop();
}

运行结果

第二题
源代码

#include"pch.h"  //因为我下载的是visual stdio 2017所以必须加这个头文件
#include<GL/glut.h>
#include<math.h>
#include<stdlib.h>#define PI 3.1415926void init(void) {glClearColor(1.0, 1.0, 1.0, 1.0);glEnable(GL_BLEND);//glBlendFunc(GL_ONE, GL_ZERO);// sFactor, dFactor//glBlendFunc(GL_ZERO, GL_ONE);// sFactor, dFactorglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//glBlendFunc(GL_ONE, GL_ONE);glMatrixMode(GL_PROJECTION);gluOrtho2D(-200.0, 200.0, -200.0, 200.0);
}void lineSegment(void) {float a,b,c;float t,t1;glClear(GL_COLOR_BUFFER_BIT);for (int i = 0; i < 10; i++) {t = 2 * PI / 10 * i;a = rand() % 256 / 255.0;b = rand() % 256 / 255.0;c = rand() % 256 / 255.0;glColor4f(a, b, c , 0.5);glBegin(GL_POLYGON);for (int j = 0; j < 2000; j++) {t1 = 2 * PI / 2000 * j;glVertex2f(35 * cos(t) + 35 * cos(t1), 35 * sin(t)+ 35 * sin(t1));}glEnd();}glFlush();}
void main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(600, 600);glutCreateWindow("扇形图");init();glutDisplayFunc(lineSegment);glutMainLoop();
}

运行结果

计算机图形学:实验二——OpenGL绘制基本图形相关推荐

  1. 计算机图形学实验二 《绘制任意斜率的直线》

    计算机图形学实验二 <绘制任意斜率的直线> 视频讲解地址 一.Bresenham算法 用视频讲会好点我之前也录过相关视频可以先凑合看 二.设计CLine类 之前也说了C++一个类是由源文件 ...

  2. 计算机图形学实验二交互式绘制多边形

    一.实验目的 掌握双缓冲绘图技术. (2)掌握人机交互技术. (3)掌握填充动态多边形的有效边表算法. 二.实验步骤 (1)在VS2017环境下创建MFC应用程序工程(单文档) (2)添加命令消息处理 ...

  3. 深圳大学计算机图形学实验一——OpenGL绘制布布头像

    尝试利用OpenGL绘制一些可爱的表情包. 一二布布是较为流行的一套萌系表情包.我选择绘制一二布布系列的一张表情包.这张表情包描绘了趴在窗户上的一只小棕熊布布. 表情包印在手机壳的样例如下: 头的绘制 ...

  4. 计算机图形学 | 实验四:绘制一个球体

    计算机图形学 | 实验四:绘制一个球体 计算机图形学 | 实验四:绘制一个球体 封装Shader 为什么要封装Shader 如何使用 绘制球模型 球面顶点遍历 构造三角形图元 开启线框模式 开启面剔除 ...

  5. 计算机图形学 | 实验三:绘制一个四边形

    计算机图形学 | 实验三:绘制一个四边形 计算机图形学 | 实验三:绘制一个四边形 初始化 顶点输入 数据处理 VAO.VBO 顶点属性 顶点着色器和片段着色器 渲染 EBO 完整代码 华中科技大学& ...

  6. 计算机图形学实验——二维卡通人物交互

    计算机图形学实验1.2卡通人物交互 OpenGL卡通人物交互 基础"图元"绘制 OpenGL拾取物体 反走样 略提反走样问题 OpenGL实现二维反走样 放缩.旋转和拖动 小结 O ...

  7. 计算机图形学 实验二 三维模型读取与控制【OpenGL】

    文章目录 实验2.1 OpenGL的控制与交互方式 一. 实验目的 二. 理论背景 三. 实验内容 1. 创建基本工程项目 2. 在子窗口中绘制图形 3. 在子窗口中通过键盘事件更换椭圆形状颜色 4. ...

  8. 计算机图形学五角星c语言,计算机图形学实验——利用OpenGL函数绘制五角星

    一.实验名称:五角星的绘制 二.实验目的:了解 OpenGL 程序设计结构,掌握编程环 三.境的设置,掌握绘制线段的方法. 四.实验内容: 1.在 VC++ 环境下 ,练习利用 OpenGL 绘制三角 ...

  9. 计算机图形学——实验二 几何图形变换实验

    实验二 几何图形变换实验 一.实验目的和要求 进一步掌握二维.三维变换的数学知识.变换原理.变换种类.变换方法: 利用OpenGL实现二维.三维图形变换,在屏幕上显示变换过程或变换结果: 掌握Open ...

最新文章

  1. 一起学spring--spring事件机制--监听器
  2. python数据结构之二叉树的实现
  3. 20211231 使用windows 10代理时,快捷设置“手动设置代理”的“不使用代理”条目
  4. 复杂性思维中文第二版 附录 A、算法分析
  5. java数据类型及表示范围_Java数据类型及对应取值范围
  6. Simple IOCP Server代码解读
  7. 用友nc java_用友NC系统使用过程中常见问题和解决方法!收藏!
  8. COMSOL35a下载地址
  9. 在无线网中,通过添加IP地址连接东芝打印机
  10. 互联网公司纷纷裁员,大家都在说互联网行业进入了寒冬期,你怎么看待这个说法?
  11. 深入理解TTL 与 CMOS 电路
  12. 手提电脑无法管理计算机,细说笔记本键盘无法输入怎么办
  13. Java经典兔子问题(10个月幼兔,小兔,成兔数量各多少对?)
  14. 华为服务器新机安装配置,安装驱动,制作raid,raid5
  15. 【微服务|Sentinel】实时监控|RT|吞吐量|并发数|QPS
  16. 分布式数据库中间件 MyCat 搞起来!
  17. 汽车防滑控制不同控制策略车辆abs 门阈值 模糊pid
  18. yum配置文件 重启后还原_电脑里重启后,重启前所有设置都还原到以前了,怎么办啊...
  19. STM32学习笔记--DAC
  20. 老男孩-筷子兄弟(歌词)

热门文章

  1. python字典中删除键值对的del语句与pop方法
  2. 单片机四个按键做加减乘除功能
  3. 塔望食品品牌策划:中国鳗鱼行业市场现状及发展趋势分析
  4. 常规诊疗条件下比较依那西普生物类似药(益赛普)与阿达木、英夫利西对RA的疗效[EULAR2015_SAT0360]...
  5. 复化梯形公式c语言实验,实验4_数值积分与数值微分(完成版).doc
  6. 计算机试题幻灯片盒状展开,2017年职称计算机考试《PowerPoint》精选练习11
  7. 【错误记录】Flutter 编译报错 ( The parameter ‘‘ can‘t have a value of ‘null‘ because of its type, but the im )
  8. Codeforces 1593C Save More Mice
  9. VS2017-C++-使用CSpreadSheet写EXCEL
  10. 基于Altium Designer进行单片机逻辑系统及模拟电路原理图设计