ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:122KB ,
资源ID:1095020      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1095020.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机图形学实验报告.docx

1、计算机图形学实验报告计算机图形学实验报告姓名: 学号: 班级: 时间: 2016年12月 实验一 OpenGL 编程与图形绘制1 实验目的了解 OpenGL 编程,并熟悉 OpenGL 的主要功能、绘制流程和基本语法。学会配置OpenGL 环境,并在该环境中编程绘图。2 实验内容OpenGL 的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位 图和图像处理、纹理映射、实时动画和交互技术。OpenGL 的绘制流程分为两个方面:一个完整的窗口系统的 OpenGL 图形处理系统的 结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为 OpenGL , 最上面的层为

2、应用软件; OpenGL 命令将被放在一个命令缓冲区中, 这样命令缓冲区中包含 了大量的命令、 顶点数据和纹理数据。 当缓冲区被清空时, 缓冲区中的命令和数据都将传递 给流水线的下一个阶段。OpenGL 的基本语法中相关库有: OpenGL 核心库: gl、 OpenGL 实用程序库: glu 、 OpenG 编程辅助库: aux 、OpenGL 实用程序工具包 ( OpenGL utility toolkit ,GLUT ):glut 、 Windows 专用库: wgl 。OpenGL 的基本语法中命名规则为: OpenGL 函数都遵循一个命名约定,即采用以下 格式: 。了解了上述基础知识

3、后, 配置好 OpenGL 环境,然后在该环境中编程练习图形的绘制, 本次实验主要是对点的绘制、直线的绘制和多边形面的绘制 。3 实验代码及结果3.1 点的绘制:#includevoid Initial(void)glClearColor(1.0f,1.0f,1.0f,1.0f); / 设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION); / 指定设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void)glClear(GL_COLOR_BUFFER_BIT);/用当前背景颜色填充窗口glColor

4、3f(1.0f,0.0f,0.0f); / 设置当前的绘图颜色为红/ glRectf(50.0f,100.0f,150.0f,50.0f); / 绘制一个矩形glPointSize(10); /三个点glBegin(GL_POINTS);glColor3f(1.0f,0.0f,0.0f);glVertex2i(2,148);glVertex2i(100,75);glVertex2i(198,2);glEnd();glFlush(); /清空 OpenGL 命令缓冲区, 执行 OpenGL 程序int main(int argc,char*argv)glutInit(&argc,argv); g

5、lutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(400,300);glutInitWindowPosition(100,120);glutCreateWindow(矩形 );glutDisplayFunc(Display);/初始化窗口的显示模式/设置窗口的尺寸/设置窗口位置/创建一个名为矩形的窗口/设置当前窗口的显示回调函数/完成窗口初始化Initial();return 0;运行结果:3.2直线的绘制:#in cludevoid In itial(void)glClearColor(1.0f,1.0f,1.0f,1.

6、0f); / 设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION); / 指定设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0); 设置投影参数void Display(void)glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口glColor3f(1.0f,0.0f,0.0f); / 设置当前的绘图颜色为红色/ glRectf(50.0f,100.0f,150.0f,50.0f); / 绘制一个矩形glBegin(GL_LINE_LOOP); / 五角星glVertex2i(10,10);glVertex2i(

7、30,35);glVertex2i(50,10);glVertex2i(5,25);glVertex2i(55,25);glEnd();glFlush(); /清空int main(int argc,char*argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowSize(400,300);glutInitWindowPosition(100,120);glutCreateWindow(矩形 );OpenGL 命令缓冲区, 执行 OpenGL 程序/初始化窗口的显示模式/设置窗口的尺寸

8、/设置窗口位置/创建一个名为矩形的窗口/设置当前窗口的显示回调函数glutDisplayFunc(Display);return 0;运行结果:3.3多边形面的绘制:#in cludevoid In itial(void)glClearColor(1.0f,1.0f,1.0f,1.0f); / 设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION); / 指定设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0); 设置投影参数glutMai nLoop();/完成窗口 GLUT事件处理循环void Display(void)glClear(GL_CO

9、LOR_BUFFER_BIT); /用当前背景颜色填充窗口glColor3f(1.0f,0.0f,0.0f); / 设置当前的绘图颜色为红色/ glRectf(50.0f,100.0f,150.0f,50.0f); / 绘制一个矩形glBegin(GL_TRIANGLES); /等边三角形glVertex2f(0.0,0.0);glVertex2f(15,25.95);glVertex2f(30,0);glEnd();/清空 OpenGL 命令缓冲区, 执行 OpenGL 程序glFlush();int main(int argc,char*argv)/初始化窗口的显示模式/设置窗口的尺寸/设

10、置窗口位置/创建一个名为矩形的窗口/设置当前窗口的显示回调函数/完成窗口初始化glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(400,300);glutInitWindowPosition(100,120);glutCreateWindow(矩形 );glutDisplayFunc(Display);Initial();return 0;运行结果:睡 1叵X实验二直线绘制实验1.实验目的为了进一步熟悉OpenGL编程,了解基本图形生成算法中的直线绘制,学会直线绘制算法中最常用

11、的三种算法:数值微分法、中点画线算法和 Bresenham算法。2.实验内容(一)数值微分法P0(X0,Y0)和数值微分法直接从直线的微分方程生成直线。给定直线的两端点:P1(X1,Y1) ,得到直线的微分方程 dy/dx= y/ x=(Y1-Y0)/(X1-X0)=k数值微分算法的原理是,由于直线的一阶导数是连续的,而且 x和是成比例的,因此通过在当前位置(Xi,Yi)分别加上两个小增量x和&( &为无穷小的正数)来求下一点 ( X(i+1),Y(i+1) )的 x, y 坐标。(二)中点画线算法给定直线的两端点:P0(X0,Y0) 和 P1(X1,Y1) ,可得到直线方程 F(x,y)=y

12、-kx-b=0 且 k= x=(Y1-Y0)/(X1-X0)。绘图过程如下:0输入直线的两端点 PO(XO,YO)和P1(X1,Y1)。计算初始值 x, A(,d= &-2 /,x=XO,y=YO.绘制点(x,y)。判断d的符号,若d0,则(x,y)更新为(x+1,y+1),同样将e更新为e-2;否则(x,y)更新为(x+1,y) o05 .当直线没有画完时,重复步骤0 3和04;否则结束。3.实验代码及结果3.1 数值微分算法编程绘制直线代码:#include#includevoid Initial(void)glClearColor(1.0f,1.0f,1.0f,1.0f); / 设置窗口

13、背景颜色为白色 glMatrixMode(GL_PROJECTION); / 指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); /设置投影参数void Display(void)glClear(GL_COLOR_BUFFER_BIT); /用当前背景颜色填充窗口glColor3f(1.0f,0.0f,0.0f); / 设置当前的绘图颜色为红色glBegin(GL_LINES);int x0=10;int y0=20;int x1=30;int y1=40;int color=10;int dx,dy,epsl,k;float x,y,xIncre,yIncre;dx=x1-x0;dy=y1-y0;x=x0;y=y0; /if(abs(dx)abs(dy)epsl=abs(dx);else epsl=abs(dy);xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k=epsl;k+)glVertex2i(int(x+0.5),(int)(y+0.5);x+=xIncre;y+=yIncre;glEnd();glFlush(); /清空 OpenGL 命令缓冲区, 执行 OpenGL 程序int main(int argc,char

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1