实验3实验报告书.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文档。上传文档
查看更多
实验3实验报告书

实验3实验报告格式 《计算机图形学》实验3实验报告 信息:张凯 班级:信息1103 学号:201101010331 实验题目:直线(光栅化)实数型Bresenham算法 在用户坐标系和Java AWT坐标系下显示图像 实验内容:1 直线(光栅化)实数型Bresenham算法原理及程序。 2 直线(光栅化)DDA算法原理及程序。 3 在用户坐标系和Java AWT坐标系下显示图像的算法原理及实现。 写程序调用验证之。 参考资料:1 课件:光栅图形生成算法.PPT 2 Bresenham算法演示程序已经在MyCanvas包里,DDA算法applet演示程序DDA.java 3 有一个示范程序imageDrawApplet.java 基本概念:(详细叙述自己对实验内容的理解) 光栅化:光栅图形显示器可以看作一个像素的矩阵。在光栅显示器上显示的每一种图形,实际上都是具有一种或多种颜色的像素集合。确定最佳逼近图形的像素集合,并用指定属性写像素的过程称为图形的扫描转换或光栅化。 直线光栅化:寻找出最逼近直线的一组像数序列,表示该直线,并且填充色彩数据,这个过程就叫做直线的光栅化。 DDA算法基本原理:舍入法求解最佳逼近;利用微分思想,即每一个点坐标都可以由前一个坐标变化一个增量得到。 Bresenham算法原理:Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在?n维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,不会用到除法。?各点选择的原则是看精确值y 与yi及yi+1的距离d1及d2的大小而定。 算法设计:(详细叙述自己设计的Bresenham算法以及程序的功能、不同坐标系下图像显示的算法) 程序功能:用DDA算法画出直线,在不同的坐标系下显示图像。 Bresenham算法: 用坐标为(xi,yi,r)的象素来表示直线上的点,则第i+1个点只能在C和D中选取。令d1=BC、d2=DB d1-d2 = (yi+1–yi,r)-( yi,r+1-yi+1) =2yi+1–yi,r–(yi,r+1) = 2yi+1–2yi,r–1 令ε(xi+1)= yi+1–yi,r–0.5 = BC-AC=BA=B-A = yi+1–(yi,r+ yi,r+1)/2 (1)当ε(xi+1)≥0时,yi+1,r= yi,r+1,即选D点,即下个点( xi+1,yi+1 )对应的象素( xi+1, yi+1,r )为( xi+1, yi,r+1 ) (2)当ε(xi+1)0时,yi+1,r= yi,r,即选C点,即下个点( xi+1,yi+1 )对应的象素( xi+1, yi+1,r )为( xi+1, yi,r ) 不同坐标系下图像显示的算法:定义自己的坐标系,将用户坐标系转换为Java?awt坐标,调用Graphics类的drawImage方法即可。 代码:(给出和实验内容相关的Java程序和注解,不要辅助代码,否则扣分) //******线段光栅化的成员变量******** protected Image image; //Java图像类的对象 protected MemoryImageSource mis; //内存图像数据源 protected int pixelWidth; //图像点阵的宽度(像素数) protected int pixelHeight; //图像点阵的高度(像素数) protected int[] pixel; //存放图像点的颜色(行优先一维存放) protected int xoffset; //像素数据窗口内X坐标的偏移 protected int yoffset; //像素数据窗口内Y坐标的偏移 //直线(光栅化)实数型Bresenham算法 public void rasterizeDrawLine(double x1,double y1,double x2,double y2) { double leftTopx,leftTopy; //从用户坐标到Java AWT坐标 int ix1=getX(x1); int iy1=windowHeight-getY(y1); //到窗口下方的像素数 int ix2=getX(x2); int iy2=windowHeight-getY(y2); //到窗口下方的像素数 if(x1x2){ leftTopx=x1; //左上角的X坐标值设为x1(用户坐标) xoffset=ix1; //窗口中的偏移量是Java AWT坐标 } else{ leftTopx=x2; //左上角的X坐标值设为x2(用户坐标) xof

文档评论(0)

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

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

1亿VIP精品文档

相关文档