- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本图形生成算法 - 线性弧
通常认为,基本二维图形包括点、直线、圆、椭圆、多边形域和字符串等。复杂曲线及各种复杂图形均可由直线段和圆弧来拟合,因此研究直线和圆弧的生成算法是二维图形生成技术的基础。;在光栅显示器生成一个对象,实质上是往帧缓冲区的相应单元中写入数据;如画一条直线,实质上是发现最佳逼近直线的像素序列、并填入相应颜色的过程,这个过程称为直线的光栅化,或者称为直线的扫描转换。;“发现最佳逼近直线的像素序列”就是发现直线生成的算法。不同的算法有不同的效率,但各种算法的核心都是围绕着判别和生成x、y增量的过程和方法(走笔规则)展开研究的。;通常从以下四方面评价直线扫描转换算法的质量:
一、显示像素点应尽量靠近理想直线,直线要直,走样小;
二、直线端点准确,且绘制无定向性,即以哪一个端点为绘制起点得到的线段应重合;
三、直线的亮度和色泽要均匀,避免造成视觉上一段亮一段暗的感觉。这通过所绘制的像素点密度保持均匀来实现;
四、画线速度尽可能快,即算法效率要高。;直线的扫描转换;算法的判断规则——在绘图过程中,画笔每走一步,就要和理想图形进行比较,然后决定下一步的走向,用步步逼近的方法画出指定起止点间的直线段。;走笔约定——以第一象限为例。当画笔(光标当前位置)位于理想直线上方,则横向走笔,即画笔沿x方向移动一个单位;当画笔位于理想直线下方时,则纵向走笔,即画笔沿y方向移动一个单位。;要确定画线时光标移动的方向,必须要知道当前光标点和理想直线的位置关系。位置关系通过坐标的偏差来决定。
以第一象限为例分析逐点比较法的偏差计算过程。;设要绘制的直线为OA(即理想直线),当前点为M,当前点和理想直线的相对位置(即点M在OA的上方或下方)用偏差值? 的正负来判断。? 的计算公式为:;偏差和走笔的关系分析:
当? 0时,角b a,点M在理想直线下方,按约定,画笔应向上(+y)走一步;
当?P0时,角bPa ,点M在理想直线上方或在直线上,按约定,画笔应向右(+x)走一步。;从计算偏差值的公式;设当前位置为Mi(xi,yi),则计算偏差的函数为;例如已知前一个点的偏差值FiP0,说明点在理想直线的上方,画笔应该沿+x方向移动一个步长;反之,则应该沿+y向移动一个步长。
开始绘制直线时,光标位于理想直线的起点,因此始终有F0=0。; 若FiP0,表示第i点在直线上方,
则有xi+1= xi+1(其中1为步长)
yi+1= yi,
第i+1点的偏差判别式为: ;将递推法用数学的方法表示为:
若Fi0,表示第i点在直线下方,
则有xi+1= xi
yi+1= yi +1 (其中1为步长),
即第i+1点的偏差判别式为:;直线段
位置;【注】递推公式的作用:
意义:简化计算过程,提高效率。
原则:尽可能以加减法代替乘除法。
方法:用当前点的偏差推算出走笔方向,并计算出下一步的偏差;再以画笔的当前位置重复上述过程,推算出画笔下一步的动作。;数值微分法(Digital Differential Analyzer)
简称DDA法,利用直线的微分方程生成直线的方法。;直线的扫描转换——数值微分法;直线的扫描转换——数值微分法;绘制直线时,要确定一个方向的增量为单位增量,即确定画线的基本步进方向,另一个方向的增量由直线的斜率决定。确定基本步进方向的依据是理想直线的斜率k。
通常设:
当直线斜率小于或等于1,x方向为基本步进方向,即?x=1,?y的值由直线的斜率决定。
当直线斜率大于1,y为基本步进方向,即?y=1,?x的值由直线的斜率决定。;DDA算法的坐标迭代公式:
情况一:当 , 即 时,有:;情况二:当 ,即 时,有:;直线的扫描转换——数值微分法;直线的扫描转换——数值微分法;直线的扫描转换——数值微分法;直线的扫描转换——Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——中点Bresenham算法;直线的扫描转换——Bresenham算
文档评论(0)