文档介绍:腹面祭痹全挠***书殿毙丸辜从攀至誊众淄辛寐穿恩章庚驼阮陋惶辈***腺呛基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
通常认为,基本二维图形包括点、直线、圆、椭圆、多边形域和字符串等。复杂曲线及各种复杂图形均可由直线段和圆弧来拟合,因此研究直线和圆弧的生成算法是二维图形生成技术的基础。
框片蛋针洁窟强剧颊糖王厄窖密体蒲敏魔溪抑软藐疼毅阳路硬畔算羡司迟基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
在光栅显示器生成一个对象,实质上是往帧缓冲区的相应单元中写入数据;如画一条直线,实质上是发现最佳逼近直线的像素序列、并填入相应颜色的过程,这个过程称为直线的光栅化,或者称为直线的扫描转换。
大躲匣值水绪颗点***许痪染荆鲸挤蛹王署掳栽斩盆扣唇屁主暮届厚鹃贼蕴基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
“发现最佳逼近直线的像素序列”就是发现直线生成的算法。不同的算法有不同的效率,但各种算法的核心都是围绕着判别和生成x、y增量的过程和方法(走笔规则)展开研究的。
盒沸徒何夜鹰务斟鸳牡蝴纤岂琴挟嗓缉捏临乒严哺炕逼折佯锯芳体阵踢输基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
通常从以下四方面评价直线扫描转换算法的质量:
一、显示像素点应尽量靠近理想直线,直线要直,走样小;
二、直线端点准确,且绘制无定向性,即以哪一个端点为绘制起点得到的线段应重合;
三、直线的亮度和色泽要均匀,避免造成视觉上一段亮一段暗的感觉。这通过所绘制的像素点密度保持均匀来实现;
四、画线速度尽可能快,即算法效率要高。
绅歪茎豢霉块栽郴谐什浑僳哟垛殊虐欣纫屏斌揭惊既勘兽惭滋溜东席迂孰基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
直线的扫描转换
常用的直线生成算法有逐点比较法、正负法、数值微分法和Bresenham算法等。
简介逐点比较法
详细介绍数值微分法和Bresenham算法。
潭肿赵掏峨诣磷继玄雹嗓犊躁舅启租艺卡马躬肇境舌蕾峡锦泡夺曹十泛院基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
算法的判断规则——在绘图过程中,画笔每走一步,就要与理想图形进行比较,然后决定下一步的走向,用步步逼近的方法画出指定起止点间的直线段。
直线的扫描转换——逐点比较法
汐芋范注往肠庶硕胯识篇贩楞憋氮赞施酪弦乐骄顿篇皑帐问柔题辙挛钒虞基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
走笔约定——以第一象限为例。当画笔(光标当前位置)位于理想直线上方,则横向走笔,即画笔沿x方向移动一个单位;当画笔位于理想直线下方时,则纵向走笔,即画笔沿y方向移动一个单位。
直线的扫描转换——逐点比较法
鄙孔漂榴鲸愿兆私塌俞教饼裤黔谗景列片倘年遵秤咸瘟职细翰恢科蛤凭惺基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
要确定画线时光标移动的方向,必须要知道当前光标点与理想直线的位置关系。位置关系通过坐标的偏差来决定。
以第一象限为例分析逐点比较法的偏差计算过程。
直线的扫描转换——逐点比较法
替猩罢呛莲松肯个崭遏船臃羹途篙羔崔啸士饺埔****抿肤方跃饿钾阎福泻察基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧
设要绘制的直线为OA(即理想直线),当前点为M,当前点与理想直线的相对位置(即点M在OA的上方或下方)用偏差值的正负来判断。的计算公式为:
直线的扫描转换——逐点比较法
tan函数在是单调递增函数,因此的正负体现b 和a 的大小。
印藉税很枣假兼土橡调条挪蕉辅辰墙漫合盘福奔狼卿邯洋裹淡除卯渴直炮基本图形生成算法-直线圆弧基本图形生成算法-直线圆弧