计算机图形学实习指导书、作业.doc

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《计算机图形学》 实验指导书、作业 学期: 班级: 姓名: 学号: 测绘工程学院 目录 实验一 直线段生成算法实现 1 实验二 圆生成算法的实现 5 实验三 二维图形几何变换的实现 8 实验四 直线段裁剪算法的实现 13 实验五 Bezier曲线生成算法的实现 19 实验报告1 21 实验报告2 27 实验报告3 32 实验报告4 39 实验报告5 46 实验一 直线段生成算法实现 一、实验目的 熟练掌握DDA直线生成算法、中点直线生成算法、Bresenham直线生成算法的算法思想,了解各个算法中寻找直线段上的像素点的过程。 二、实验学时 2学时 三、实验类型 现代实验式 1.根据指导书所给的参考代码,每人至少实现两种直线段的生成算法。 2.要求能够实现任意起始点和终止点坐标的直线段的绘制。 3.能够实现不同线型(实线、虚线、点划线)、不同线宽(单像素宽度、多像素宽度)的直线段的绘制。 五、实验原理与步骤 原理: 1.数值微分法(DDA)(xs , ys)和(xe , ye)。则直线段在X和Y方向的增量分别为: △x=xe- xs ,△y= ye- ys 设△t=max(|△x|,|△y|) 取时间步长为1/△t,若当前像素点坐标为(xi, yi),则下一个像素点                xi+1=xi+dx=xi+Dx/Dt   yi+1=yi+dy=yi+Dy/Dt 2.中点直线生成算法: 假定直线斜率0m1,且已确定点亮象素点P(Xi ,Yi ),则下一个与直线最接近的像素只能是P1点或P2点。设M为中点,Q为交点,现需确定下一个点亮的象素。 当M在Q的下方- P2离直线更近更近-取P2 。 M在Q的上方- P1离直线更近更近-取P1 M与Q重合, P1、P2任取一点。 假设直线方程为:ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 F(x,y)=0 点在直线上面 F(x,y)0 点在直线上方 F(x,y)0 点在直线下方 欲判断M点是在Q点上方还是在Q点下方,只需把M代入F(x,y),并检查它的符号。 令d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c 当d0,M在直线(Q点)下方,取右上方P2; 当d0,M在直线(Q点)上方,取右方P1; 当d=0,选P1或P2均可,约定取P1; 若d(0-M在直线上方-取P1; 此时再下一个象素的判别式为 d1=F(xp+2, yp+0.5)=a(xp+2)+b(yp+0.5)+c = a(xp +1)+b(yp +0.5)+c +a =d+a; 增量为a 若d0-M在直线下方-取P2; 此时再下一个象素的判别式为 d2= F(xp+2, yp+1.5)=a(xp+2)+b(yp+1.5)+c = a(xp +1)+b(yp +0.5)+c +a +b =d+a+b ; 增量为a+b 画线从(x0, y0)开始,d的初值 d0=F(x0+1, y0+0.5)= a(x0 +1)+b(y0 +0.5)+c= F(x0, y0)+a+0.5b = a+0.5b 由于只用d 的符号作判断,为了只包含整数运算, 可以用2d代替d来摆脱小数,提高效率,同时d每次的增量也已相应乘2操作。 3.Bresenham画线算法 (以斜率在0~1之间的直线段为例) 这种情况下, 选择X方向为计长方向,即增量dx=1。如图Pi (xi,yi)是已选定的离直线最近的像素, Pi+1是D还是C。 显然, 若d0.5, 则C比较靠近直线, 应选; d=0.5, 则应选D。(m= △y/△x) e=d-0.5(初值为-0.5), 即有: e 0时, Pi+1(xi+1, yi), 更新e=e+m; e =0时, Pi+1(xi+1, yi+1), 更新e=e+m-1; 为计算简便(整数计算), 将判别式e替换为 e= 2e△x; 初值e= -△x 结论:得到递推公式 e0时, Pi+1(xi+1, yi); e=e+2 △y e=0时, Pi+1(xi+1, yi+1);

文档评论(0)

ygxt89 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档