计算机图形学上机实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学上机实验报告 计算机科学与技术学院 TOC \o 1-5 \h \z \o Current Document \h 实验一基本图形的绘制 2 \o Current Document \h 实验目的与要求 2 实验内容 2 实验结果 3 实验体会 5 源程序 5 \o Current Document \h 实验二日地月模型 15 实验目的与要求 15 实验内容 15 实验结杲 15 实验体会 17 源程序 17 实验一:基本图形的绘制 一、 实验目的与要求 理解glut程序框架; 理解窗口到视区的变换; 理解OpenGL实现动画的原理; 添加代码实现中点Bresenham算法画直线; 添加代码实现改进Bresenham算法画在线; 添加代码实现関的绘制(nJ以适当対框架坐标系进行修改); 添加代码实现椭圆的绘制。 二、 实验内容 屮点Bresenham算法画肓线思想:先考虑0WkWl,由于最人位移方向为x,因此,每 次x方向上加1,而y方向上或加1或加0。判别式初值d= dx-2*dy,若dvO,则(x,y)更新为 (x+l,y+l), d 更新为 d+2*dx?2*dy;否则(x,y)更新为(x+l,y), d 更新为 d ?2*dy。 改进Bresenham算法画总线思想:判别式初值e= -dx,e每次加2*dy,判断e的符号,若e0, 则(x,y)更新为(x+l,y+l),同时将e更新为e-2*dx;否则(x,y)更新为(x+l,y)°之后在考虑斜率 为其他值的处理办法。对于kl的直线,我们只需在原来的基础上对给定的两个坐标进行 x,y值互换,然后还是按照0=k=l的d值來进行更新坐标值,只是在输出坐标点时在将要 输出的坐标值按照(y,x)方式输出。同理对于k-l和-l=k0的情况也是按这种方式处理。 Bresenham算法绘制圆的算法思想:若考虑第一象限内xW「0, R/VT J的1/8圆弧, 此吋最大位移方向为x,因此,每次x方向上走一步,而y方向上或减1或减0。判別式初 值为d= 1-R,若d0,则先将d更新为d+2*x+3 ,再将(x,y)更新为(x+l,y);否则先将d更新为 d+2* (x-y) +5,再将(x,y)更新为(x+l,y?l)。但是,当圆心不在原点时,不妨设圆心为(xO,yO), 则此时判别式初值为d= 1-R,若d0,则先将d更新为d+2*(x?x0)+3;否则先将d更新为 d+2*( (x-xO) -(y-yO)) +5。而且此时 8 个对称点分别为(x,y)、(x,2*y0?y)、(y?yO+xO,yO+xO?x)、 (xO+yO?y,yO+xO-x)、(2*x0?x,2*y0?y)、(2*x0?x,y)、(xO+yO?y,yO+x?xO)、(xO+y-yO,yO+x-xO)。即 在tai 1/8圆弧上任一点时,需要同时画出另外7个点,最后即可得到整个圆。 由于要实现动画,所以需要创建一个循环,在每次调川显示回调两数Z前给当前像素点 着色,使其看起来像是在直线上连续的画出一个个像素点。为了不断的调用显示回调函数, 需要利用函数 glutTimerFunc(unsigned int msecs, (*func) (int value), int value),指定一个定 时器回调函数,即经过msecs毫秒后由GLUT调用指定的函数,并将v^ue值传递给他。被 定时器调用的函数原型为void TimerFunction(int value),注意,该函数与其他的回调函数不 一样的地方在于该函数只会被激发一次。所以为了实现连续的动画,必须在定时器函数中再 次重新设置定时器回调函数。 程序操作。程序运行后,会牛成一个(1024*768) *0.8大小的绘图窗口,窗口中绘制好 了一个个10*10大小的网格,每一个网格即代表一个像素点。共有5种绘制模式:1、DDA 算法画直线(起点(0,0),终点(15,20), k二4/3); 2、中点Bresenham算法画直线(起点(0,20), 终点(15,-10), k二4/3); 3、改进 Bresenham W法画直线(起点(0,20),终点(15,10), k二3/4); 4、八分法绘制圆(圆点(15,12),半径10); 5、Bresenham算法画椭圆(中心坐标(15,12), 长半轴10,短半周8)。分别通过按键盘上的数字键1?5来调用控制。在画每一个像素点时, 同时会显示当前各点处标和判别式的值。 三、实验结果 实验结果主要通过截图來表示,适当的选儿副就可,注意每幅图都要编号,按照 的方式,并J1要有图的名称;图的编号利名称用小五号宋体字。 1、DDA画线算法,各点坐标、以及最终画出的直线 图1-1 DDA画直线,

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档