【计算机图形学】实验报告1用OpenGL画线命令绘制一个多边构成图形或场景
#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画线命令绘制一个多边构成图形或场景相关推荐
- OpenGL南邮计算机图形学实验报告二——两个纹理的渐变变换和移动
OpenGL南邮计算机图形学实验报告二--两个纹理的渐变变换和移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 ...
- OpenGL南邮计算机图形学实验报告四——用键盘控制物体
OpenGL南邮计算机图形学实验报告四--用键盘控制物体 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 环境配置. ...
- OpenGL南邮计算机图形学实验报告三——实现类似地月系统的两物体环绕移动
OpenGL南邮计算机图形学实验报告三--实现类似地月系统的两物体环绕移动 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SO ...
- 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...
华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...
- 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...
计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...
- 计算机图学实验报告,计算机图形学实验报告实验1
计算机图形学实验报告实验1 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学实验报告学院:计算机科学与信息专业:计科班级:101 ...
- 计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...
PAGE 32 PAGE 7 计算机图形学 实验报告 班级 计算机工硕班 学号 2011220456 姓名 王泽晶 实验一:直线段扫描转换 实验目的 通过本次试验,学生可以掌握直线段的扫描转换算法及其 ...
- 计算机图形学实验报告 裁剪,计算机图形学-实验报告三-图形裁剪算法
<计算机图形学-实验报告三-图形裁剪算法>由会员分享,可在线阅读,更多相关<计算机图形学-实验报告三-图形裁剪算法(9页珍藏版)>请在人人文库网上搜索. 1.图形裁剪算法1. ...
- 计算机图形动画处理实训报告,西安石油大学计算机图形学 实验报告.doc
文档介绍: 西安石油大学计算机图形学_实验报告实验报告 -计算机图形学实验大作业 课程名称计算机图形学 实验名称二维绘图系统与计算机动画 姓名 学号 专业班级 成绩 指导教师爨莹 实验报告 课程名称计 ...
最新文章
- mysql 字段必填 属性_如何判断数据库中的字段是否具有必填属性(50分)
- 前端使用 Nginx 反向代理彻底解决跨域问题
- 拖链电缆 机器人电缆_尼龙拖链在机器中起着电缆的作用
- DEV GridLookUpEdit属性设置
- SAP Hybris Commerce启用customer coupon的前提条件
- 算法设计与分析——动态规划——01背包问题
- 关于计算机网络的未来综述,计算机网络综述
- SpringBoot加载自定义yml文件
- redis介绍和安装
- Linux打开关闭ping
- 2021 王道考研 计算机网络+习题讲解
- python如何拼读英语单词怎么写_如何拼读英语单词
- 动手深度学习--windows环境安装
- python requests 登录接口场景使用案例
- OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
- mysql 1033 frm_修复mysqldump Incorrect information in file frm (1033)
- HTTPS安全通信:HTTPS与SSL
- C# Process.HasExited准确性
- Redis使用方法介绍
- 常见的机器学习数据挖掘知识点