图形光栅化1.pptVIP

  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文档。上传文档
查看更多
图形光栅化1

基本图形光栅化 在光栅显示器上显示任何一种图形,实际上都是一些具有一种或多种颜色的象素的集合。 对图形的扫描转换一般分为两个步骤:先确定有关象素,再用图形的颜色或其它属性,对象素进行某种写操作。 图形光栅化时,还有窗口内图形显示的裁剪和反走样的技术。 直线的扫描转换 直线的扫描转换 确定最佳逼近于该直线的一组象素 按扫描线顺序,对这些象素进行写操作 三个常用算法 数值微分(DDA)算法 中点画线法 Bresenham画线算法 数值微分(DDA)算法 假定直线的起点、终点分别为:(x0,y0), (x1,y1),且都为整数。  (X i+1 ,Yi + k) (X i , Int(Yi +0.5)) (X i , Yi) 栅格交点表示象素点位置 。 。 。 。 数值微分(DDA)算法 已知过端点P0 (x0, y0), P1(x1, y1)的直线段L:y=kx+b 直线斜率为: 这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。 数值微分(DDA)算法 计算yi+1= kxi+1+b = kxi+b+k?x = yi+k?x 当?x =1; yi+1 = yi+k 即:当x每递增1,y递增k(即直线斜率); 注意上述分析的算法仅适用于?k? ≤1的情形。在这种情况下,x每增加1,y最多增加1。 当 ?k? ?1时,必须把x,y地位互换 数值微分(DDA)算法 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; ? ? 数值微分(DDA)算法 例:画直线段P0(0,0)--P1(5,2) x int(y+0.5) y+0.5 0 0 0+0.5 1 0 0.4+0.5 2 1 0.8+0.5 3 1 1.2+0.5 4 2 1.6+0.5 5 2 2.0+0.5 数值微分(DDA)算法 增量算法:在一个迭代算法中,如果每一步的x、y值是用前一步的值加上一个增量来获得,则称为增量算法。 DDA算法就是一个增量算法。 缺点:在此算法中,y、k必须是float,且每一步都必须对y进行舍入取整,不利于硬件实现。 中点画线法 原理: 假定直线斜率0K1,且已确定点亮象素点P(XP,YP),则下一个与直线最接近的像素只能是P1点或P2点。设M (XP+1,YP+0.5)为中点,Q为直线与垂直线X = XP+1交点,现需确定下一个点亮的象素。 中点画线法 当M在Q的下方,P2离直线更近-取P2; M在Q的上方,P1离直线更近-取P1; M与Q重合, P1、P2任取一点。 问题:如何判断M与Q点的关系? 中点画线法 假设直线方程为:F(x,y)=ax+by+c=0 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 由常识知: 欲判断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

文档评论(0)

189****6821 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档