chapt4 基本图形生成算法.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文档。上传文档
查看更多
计算机图形学 基本图形生成算法 目录 画线 数值微分(DDA)法 中点画线法 Bresenham算法 画圆 中点画圆法 Bresenham画圆法 画椭圆 画线 画线概述 在数学上,理想的点和直线都是没有宽度的。光栅显示器只能近地似显示直线。当我们对直线进行光栅化时,需要在显示器有限个像素中,确定最佳逼近该直线的一组像素,并且按扫描线顺序,对这些像素进行写操作,这个过程称为用显示器绘制直线或直线的扫描转换。 对于水平线、垂直线和45o斜线,选择哪些像素是显而易见的,但是对于其它的直线,确定用哪些像素来表示它就不那麽简单了。因此如何逼近的表示一条直线是画线算法需要解决的第一个问题。 由于在一个图形中,可能包含成千上万条直线,所以要求绘制算法应尽可能地快。如何更快的画线是画线算法需要解决的第二个问题。 目录 画线 数值微分(DDA)法 中点画线法 Bresenham算法 画圆 画线---DDA法 数值微分法(Digital Differential Analyzer) 已知过端点P0 (x0, y0), P1(x1, y1)的直线段L,表示为y=kx+b 直线斜率为 从x的左端点x0开始,向x右端点步进,步长=1(个像素) X步进后,用y=kx+B,计算相应的y坐标 最后取像素点(x, round(y))作为当前点的坐标。 注意: round(y)为取计算后y的整数,取整函数 画线---DDA法 计算 当 时; 即:当x每递增1,y递增k(即直线斜率); 画线---DDA法 数值微分法(Digital Differential Analyzer) 画线---DDA法 例:画直线段 x int(y+0.5) y+0.5 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法 注意上述分析的算法仅适用于?k? ≤1的情形。在这种情况下,x每增 加1,y最多增加1。当 ?k? ?1时,必须把x,y地位互换 画线---DDA法 数值微分法的思考 优点: 最简单,最直接的画线算法 采用增量的思想,每计算一个像素,只需计算一个加法 缺点: 由于斜率很可能是小数(浮点数),因此每个加法都意味着是浮点运算 每次加法 后还必须进行一次四舍五入后的取整运算 浮点运算不利于硬件实现 画线---DDA法 数值微分法的思考 目录 画线 数值微分(DDA)法 中点画线法 Bresenham算法 画圆 中点画线法 中点画线法基本思想 当前像素点为(xp, yp) 。下一个像素点为P1 或P2 。 设M=(xp+1, yp+0.5),为p1与p2 之中点,Q为理想直线与x=xp+1 垂线的交点。将Q与M的y坐标进 行比较。 当M在Q的下方,则P2 应为 下一个像素点; M在Q的上方,应取P1为下一点。 中点画线法 中点画线法---直线表示方式 直线方程:F(x, y) = ax+by+c=0 (x0,y0)(x1,y1)直线两端点 其中: a=y0-y1 -整数 b=x1-x0 -整数 c=x0y1-x1y0 在直线上的点:F(x,y) = 0 直线上方的点:F(x,y) 0 直线下方的点:F(x,y) 0 中点画线法 中点画线法---方程推导 中点画线法 中点画线法---方程继续向前推导一个像素 若当前像素处于d?0情况,则取正右方像素P1 (xp+1, yp ), 要判下一个像素位置,应计算:d=a(xp+1)+b(yp+0.5)+c d’=F(xp+2, yp+0.5)=a(xp+2)+b(yp+0.5)+c=d+a; 增量为a 若d0时,则取右上方像素P2 (xp+1, yp+1)。要判断再下一像素,则要计算 d’= F(xp+2, yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b ;增量为a+b 中点画线法 中点画线法---方程继续向前推导一个像素 根据前一点的

文档评论(0)

海川电子书城 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档