Chapter-02图元.ppt

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

课程内容进展 综述 第二讲 图元和图元属性 Graphics Primitives Attributes of Graphics Primitives 图元的分类 点 直线 折线 曲线 圆(弧) 椭圆 其它曲线 图元的输出 扫描转换:(观察坐标系?设备坐标系?离散像素点) 几何坐标-屏幕坐标 (实数 - 整数) 图形精度,转换算法的时间(空间)复杂度 屏幕坐标:整数,和帧缓存中的像素位置对应, 屏幕上边 y=0 屏幕下边 y=ymax 屏幕左边 x=0 屏幕右边 x=xmax 第二讲主要内容 各类图元的输出方法 扫描转换算法 直线 圆 多边形填充 OpenGL相关函数简介 各类图元的属性 属性生成算法 OpenGL相关函数简介 反走样 第二讲小结 图形系统中基本图元在屏幕上的生成方法 点:与帧缓存位置对应 直线:bresenham算法 圆:中点算法 填充区:扫描线方法,活动边表的使用 各种图元的属性 线型属性的生成方法:掩模 线宽属性的生成方法:水平,垂直,填充 填充属性的生成方法:扫描线,图案 反走样方法 计算练习 假设系统有一个8英寸×10英寸、每英寸能显示100个像素的监视器。如果存储器的字长为一字节,起始帧缓存地址为0,并且每个像素对应存储器的1个字节,那屏幕坐标(x,y)在帧缓存中的地址是什么? 一个四边形的四个顶点坐标依次为 (1,1) (3,1) (5,4) (3,6) 欲使用扫描线多边形填充算法对该四边形填充,请给出边表和活动边表内容。 编程练习 允许用户任意输入a,b以及x坐标范围,输出y=ax+b的扫描转换结果(采用Bresenham算法) 输入若干组顶点坐标和另一个点坐标P (采用右手笛卡儿系) 对每组顶点(如果数量3) ,判断是否共面 如果分别共面,继续判断几个面片是否能构成一个三维对象表面 如果可以构成一个三维对象,再判断P是否在对象内部 用掩模的方法自定义笔刷并实现画线函数(注意避免重复点的绘制) End of 第二讲 若干类图元的 扫描转换经典算法 点的输出 (x,y)-帧缓存地址-像素颜色等 分辨率 H * V 每个像素1位 (0,0) ? Addr(0,0) (x,y) ? Addr(0,0) + y * H + x Addr(x+1,y) ? Addr(x,y) + 1 Addr(x+1,y+1) ? Addr(x,y) + H + 1 画线算法:Bresenham 思想: x 每次增加 1 (|m|1) 判断(x+1, y+1)和(x+1, y)哪个更接近线条 用整数加减法计算y的增量 假设 : 0 m 1 始点在线条的最左端 y = m (xk+1) + b d1 = y - yk = m ( xk+ 1) + b - yk d2 = ( yk + 1 ) - y = yk + 1- m ( xk + 1 ) - b d1-d2 = 2m ( xk + 1 ) - 2yk + 2b - 1 m = △y / △x ? △x0,定义决策参数p pk = △x ( d1 - d2 ) = 2△y . xk - 2△x . yk+ c c= 2△y + △x(2b-1) pk+1 = 2△y . xk+1 - 2△x. yk+1+ c pk+1 - pk = 2△y (xk+1 - xk ) - 2△x (yk+1 - yk )= 2△y - 2△x (yk+1 - yk ) pk+1 = pk + 2△y - 2△x (yk+1 - yk ) if pk 0 , d1 - d2 0 , yk+1= yk , yk+1 - yk =0, pk+1 = pk + 2△y if pk =0, d1 - d2 =0, yk+1= yk + 1, yk+1 - yk = 1, pk+1 = pk + 2△y-2△x (x0 y0 )为第一个屏幕像素,p0 = 2△y . x0 - 2△x . y0+ c = 2△y - △x Bresenham画线 例图 并行画线算法 每处理器一段线,分别使用 Bresenham 算法 每处理器一行(列)扫描线,计算与线交点 每处理器一块屏幕像素,甚至一个屏幕像素,计算像素与线条的垂直距离是否小于线宽 中点圆生成算法 f(x,y)=x2+y2-r2 每次 x 加 1 判断 (x+1, y – 0.5) 在圆内还是圆外 其它7个分区内的像素通过对称性直接得到 中点圆算法推导 f(x,y)=x2+y2-r2 pk =f(xk+1,yk-0.5)= (xk+1)2+(yk-0.5)2- r2 pk+1=f(xk+1+1,yk+1

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档