计算机图形学基础-第2章 光栅图形学.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学基础-第2章 光栅图形学

第2章 光栅图形学 第2章 光栅图形学 图形的扫描转换(光栅化):确定一个最佳逼近图形的像素集合,并用指定属性写像素的过程。步骤如下: (1)确定有关像素 (2)用图形的颜色或其它属性,对像素进行写操作。 对一维图形,若不考虑线宽,则用一个像素宽的直线来显示图形。二维图形的光栅化,即区域的填充:确定像素集,填色或图案。 任何图形的光栅化,必须显示在一个窗口内,否则不予显示。即确定一个图形的哪些部分在窗口内,哪些在窗口外,即裁剪。 裁剪通常在扫描转换之前进行 第2章 光栅图形学 第2章 光栅图形学 消隐 当不透光的物体阻挡了某些来自物体部分的光线,使其无法到达观察者时,这些物体部分是隐藏部分。 隐藏部分是不可见的,如果不删除隐藏的线或面,就可能发生对图形的错误理解。 为了使计算机图形能够真实地反映这一现象,必须把隐藏的部分从图形中删除,称为消除隐藏线和隐藏面,简称消隐。 本章主要内容 直线 圆弧 多边形 字符 裁剪 反走样 消隐 2.1 直线段的扫描转换算法 直线的扫描转换: 确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作。 直线段扫描转换算法: 数值微分法DDA算法 中点画线法 Bresenham画线算法 2.1 直线段的扫描转换算法 ? 直接计算法 假定直线的起点、终点分别为:P0(x0,y0), P1(x1,y1),且都为整数。 计算出斜率k=(y1-y0)/(x1-x0) , 在Y轴的截距b=y0-k*x0 2.1 直线段的扫描转换算法 ? 直接计算法 这样一来,只要给定 x的值,根据解析式立即可以计算出对应的y值,然后输出(x,round(y)). 特点:这种方法直观,但效率太低,因为每一步需要一次浮点乘法、一次浮点加法和一次舍入运算。 2.1 直线段的扫描转换算法 ? 数值微分法 假定直线的起点、终点分别为: (x0, y0), (x1, y1),且都为整数。 2.1 直线段的扫描转换算法 ? 数值微分法 基本思想 已知过端点P0 (x0, y0), P1(x1, y1)的直线段L: y=kx+b 直线斜率为 考虑当x从xi?xi+1时y的变化规律:设?x=xi+1-xi , xi+1= xi+ ?x 计算yi+1= kxi+1+b= k(xi+ ?x)+b= kxi+b+k?x = yi+k?x 当?x =1; yi+1 = yi+k,即:当x每递增1, y递增k(即直线斜率) 2.1 直线段的扫描转换算法 ? 数值微分法 注意上述分析的算法仅适用于?k? ≤1的情形。在这种情况下, x每增加1, y最多增加1。 当 ?k? ?1时, 必须把x, y地位互换 ? 增量算法: 在一个迭代算法中, 如果每一步的x, y值是用前一步的值加上一个增量来获得,则称为增量算法。 DDA算法就是一个增量算法。 2.1 直线段的扫描转换算法 ? 数值微分法 void DDALine(int x0,int y0,int x1,int y1,int color) ? int x; float dx, dy, y, k; dx = x1-x0, dy=y1-y0; k=dy/dx, y=y0; for (x=x0; x?x1, x++) ? drawpixel (x, int(y+0.5), color); y=y+k; ? ? 2.1 直线段的扫描转换算法 ? 数值微分法 例:画直线段P0(0,0)--P1(5,2), k=0.4 x y int(y+0.5) 0 0 0 1 0.4 0 2 0.8 1 3 1.2 1 4 1.6 2 5 2.0 2 2.1 直线段的扫描转换算法 ? 中点画线法 原理 假定直线斜率0k1,且已确定点亮象素点P(xp, yp), 则下一个与直线最接近的像素只能是 P1(xp+1, yp)点 或 P2(xp+1, yp+1)点。 设M(xp+1, yp+0.5)为中点,Q为理想直线与x=xp+1的交点。 需确定下一个点亮的象素。 2.1 直线段的扫描转换算法 ? 中点画线法 需确定下一个点亮的象素 (Q为实际点) M在Q的下方→P2离直线更近更近→取P2 M在Q的上方→P1离直线更近更近→取P1 M与Q重合, P1, P2任取一点。 问题:如何判断M与Q点的关系? 由常识知: 若y=kx+b, 设 F(x,y) = y – kx

文档评论(0)

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

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

1亿VIP精品文档

相关文档