电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

华中科技大学计算机图形学实验报告——画直线、日地月模型

21页
  • 卖家[上传人]:第***
  • 文档编号:69715759
  • 上传时间:2019-01-14
  • 文档格式:PDF
  • 文档大小:496.97KB
  • / 21 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、计算机图形学基础实验报告计算机图形学基础实验报告 专业:专业: 班级:班级: 姓名:姓名: 学号:学号: 日期:日期: OpenGLOpenGL 简介简介 (1)OpenGL 作为一个性能优越的图形应用程序设计界面(API),它独立 于硬件和窗口系统,在运行各种操作系统的各种计算机上都可用,并能在网络 环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的 标准图形库。 它具有以下功能。 1. 模型绘制 2. 模型观察 在建立了三维景物模型后,就需要用 OpenGL 描述如何观察所建立的三维 模型。 3. 颜色模式的指定 OpenGL 应用了一些专门的函数来指定三维模型的颜色。 4. 光照应用 用 OpenGL 绘制的三维模型必须加上光照才能更加与客观物体相似。 5. 图象效果增强 OpenGL 提供了一系列的增强三维景观的图象效果的函数,这些函数通过 反走样、混合和雾化来增强图象的效果。 6. 位图和图象处理 OpenGL 还提供了专门对位图和图象进行操作的函数。 7. 纹理映射 8. 实时动画 9. 交互技术 图 1.1 OpenGL 图形处理系统的层次结构 (2)

      2、OpenGL 的操作步骤 在 OpenGL 中进行的图形操作直至在计算机屏幕上渲染绘制出三维图形景观 的基本步骤如下: 1. 根据基本图形单元建立景物模型,得到景物模型的数学描述(OpenGL 中把点、线、多边形、图像和位图都作为基本图形单元); 2. 把景物模型放在三维空间中的合适的位置,并且设置视点(Viewpoint) 以观察所感兴趣的景观; 3. 计算模型中所有物体的色彩,同时确定光照条件、纹理粘贴方式等; 4. 把景物模型的数学描述及其色彩信息转换至计算机屏幕上的像素,这个 过程也就是光栅化(rasterization)。 在这些步骤的执行过程中,OpenGL 可能执行其他的一些操作,例如自动消 隐处理等。另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对象素 数据进行操作。 (3)OpenGL 的组成 OpenGL 不是一种编程语言,而是一种 API(应用程序编程接口),它实际 上是一种图形与硬件的接口,包括了多个图形函数。OpenGL 主要由以下函数库 组成。 1. OpenGL 核心库 OpenGL 核心库中包含了 115 个最基本的命令函数,它们都是以“gl”为前

      3、 缀,可以在任何 OpenGL 的工作平台上应用。这部分函数用于常规的、核心的图 形处理,如建立各种各样的几何模型,产生光照效果,进行反走样以及进行纹 理映射,以及进行投影变换等等。由于许多函数可以接收不同数据类型的参数, 因此派生出来的函数原形有 300 多个。 2. OpenGL 实用程序库 OpenGL 的实用程序库包含有 43 个函数,以“glu”为前缀,在任何 OpenGL 平台都可以应用。这部分函数通过调用核心库的函数,来实现一些较为复杂的 操作,如纹理映射、坐标变换、网格化、曲线曲面以及二次物体(圆柱、球体 等)绘制等。 3. OpenGL 编程辅助库 OpenGL 的辅助库包含 31 个函数,以“aux”为前缀,但它们不能在所有的 OpenGL 平台上使用。OpenGL 的辅助库的函数主要用于窗口管理、输入输出处理 以及绘制一些简单的三维形体。 4. OpenGL 实用程序工具包 OpenGL 实用程序工具包(OpenGL utility toolkit,GLUT)包含 30 多个函 数,函数名前缀是“glut”。其中的函数主要提供基于窗口的工具,如窗口系 统的初始化,

      4、多窗口管理,菜单管理,字体以及一些较复杂物体的绘制等。由 于 glut 库中的窗口管理函数是不依赖于运行环境的,因此 OpenGL 中的工具库 可以在所有的 OpenGL 平台上运行,在后面的示例中,我们均使用 glut 库建立 OpenGL 程序运行框架。 5. Windows 专用库 Windows 专用库函数包含有 6 个,每个函数以 wgl 开头,用于连接 OpenGL 和 Windows NT,这些函数用于在 Windows NT 环境下的 OpenGL 窗口能够进行渲 染着色,在窗口内绘制位图字体以及把文本放在窗口的某一位置等这些函数把 Windows 和 OpenGL 揉合在一起。 6. Win32 API 函数库 这部分函数没有专用的前缀,主要用于处理像素存储格式和双帧缓存。 实验一实验一 一、实验目的一、实验目的 理解 glut 程序框架;理解窗口到视区的变换;理解 OpenGL 实现动画 的原理理解所学的画直线以及圆的各种算法,利用所学的算法,绘制基本 的直线以及圆。 二、二、实验内容实验内容 1.添加代码实现中点 Bresenham 算法画直线 2.添加代码实现改

      5、进 Bresenham 算法画直线 3.添加代码实现圆的绘制(可以适当对框架坐标系进行修改) 三、实验算法分析三、实验算法分析 1. 中点 Bresenham 算法:根据直线的斜率确定或选择变量在 x 或 y 方 向上每次递增一个单位,而另一方向的增量为 1 或 0,它取决于实际直线与相 邻象素点的距离,这一距离称为误差项。 判别式: 则有: 误差项的递推:d=0: ) 1(5 . 0)5 . 0, 1(),(bxkyyxFyxFd iiiiMM )0( )0( 1 1 1 1 dy dy y xx i i i ii bxky yxFd ii ii ) 1(5 . 0 )5 . 0, 1( 1 bxky yxFd ii ii )2(5 . 1 )5 . 1, 2( 2 kd kbxkyd ii 1 1) 1(5 . 0 1 2 bxky yxFd ii ii ) 1(5 . 0 )5 . 0, 1( 1 bxky yxFd ii ii )2(5 . 0 )5 . 0, 2( 2 kd kbxkyd ii 1 2 ) 1(5 . 0 初始值 d 的计算: 则有:0k1 时 Bresenh

      6、am 算法的算法步骤为: (1)输入直线的两端点 P0(x0,y0)和 P1(x1,y1)。 (2)计算初始值x、y、d=0.5-k、x=x0、y=y0; (3)绘制点(x,y)。判断 d 的符号;若 d0) then d=d-1if (e0) then e=e-1 改进 2:用 E=2ex 来替换 e; e 初=-0.5E 初=-0.5*2x=-x 每走一步有 e=e+k每走一步有 E=(e+k)*2x=E+2y if (e0) then e=e-1if (e0) then E=(e-1)*2x=E-2x 算法步骤: (1)输入直线的两端点 P0(x0,y0)和 P1(x1,y1)。 (2)计算初始值x、y、e=-e=-x x、x=x0、y=y0。 (3)绘制点(x,y)。 (4)e 更新为 e+2e+2y y,判断 e 的符号。若 e0,则(x,y)更新为(x+1,y+1),同时 将 e 更新为 e-2e-2x x;否则(x,y)更新为(x+1,y)。 (5)当直线没有画完时,重复步骤 3 和 4。否则结束。 3.画圆算法: k kbkxy bxky yxFd 5 . 0 5 .

      7、0 ) 1(5 . 0 )5 . 0, 1( 00 00 000 0.5)(d 0.5)(d 1 1 1 1 i i i ii y y y xx 0.5)(d 0.5)(d 1 1 1 1 i i i ii y y y xx 0)(e 0)(e 1 1 1 1 i i i ii y y y xx 八分画圆法 中点 Bresenham 画圆: 构造判别式: 当 d0 时,下一点取 Pu(xi+1,yi); 当 d0 时,下一点取 Pd(xi+1,yi-1)。 d0: d0: 初始值: 用 d-0.25 代替 d 则: 025. 0 025. 0 dd dd 算法步骤: (1)输入圆的半径 R。 (2)计算初始值 d=1-Rd=1-R、x=0、y=R。 (3)绘制点(x,y)及其在八分圆中的另外七个对称点。 (x,y) y y=-xy=x 222 )5 . 0() 1()5 . 0, 1(),(RyxyxFyxFd iiiiMM 222 2 )5 . 1()2( )5 . 1, 2( Ryx yxFd ii ii 5)(2 5)(2)5 . 0() 1( 1)5 . 0(2)5 . 0(3

      8、2) 1( ) 15 . 0() 11( 1 22 222 222 2 ii iiii iiii ii yxd yxyx Ryyxx Ryxd 222 2 )5 . 0()2( )5 . 0, 2( Ryx yxFd ii ii 32 )5 . 0(32) 1( )5 . 0() 11( 1 222 222 2 i iii ii xd Ryxx Ryxd R RR RF yxFd 25. 1 )5 . 0(1 )5 . 0, 1 ( )5 . 0, 1( 22 000 Rd dyxdd dxdd ii i 1 25. 05)(2 25. 032 0 (4)判断 d 的符号。若 d #include #include “stdio.h“ int m_PointNumber = 0; /动画时绘制点的数目 int m_DrawMode = 4;/绘制模式1DDA 算法画直线 /2中点 Bresenham 算法画直线 /3改进 Bresenham 算法画直线 /4八分法绘制圆 /5四分法绘制椭圆 /绘制坐标线 void DrawCordinateLine(void) int i = 0 ;

      9、/坐标线为黑色 glColor3f(0.0f, 0.0f ,0.0f); glBegin(GL_LINES); for (i=10;i abs(dy) epsl = abs(dx); else epsl = abs(dy); xIncre = (float)dx / epsl ; yIncre = (float)dy / epsl ; for(k = 0; k=num-1) printf(“x=%f,y=%f,取整后 x=%d,y=%dn“, x, y, (int)(x+0.5),(int)(y+0.5); break; x += xIncre; y += yIncre; if(x = 25 | y = 25) break; / /中点 Bresenham 算法画直线(0x1) x=x1;x1=x0;x0=x; y=y1;y1=y0;y0=y; x=x0;y=y0; dx=x1-x0; dy=y1-y0; d=dx-2*dy; UpIncre=2*dx-2*dy; DownIncre=-2*dy; while(x=num-1) printf(“x=%d,y=%dn“, x, y); brea

      《华中科技大学计算机图形学实验报告——画直线、日地月模型》由会员第***分享,可在线阅读,更多相关《华中科技大学计算机图形学实验报告——画直线、日地月模型》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.