CG第3篇-图形生成算法.ppt

  1. 1、本文档共107页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中理工大学计算机学院 陆枫 99-7 1999年7月 在图形系统部分内容中,我们已经介绍了图形输出设备的工作原理。即无论是画点设备或画线设备,其输出的图线都不是连续的,而是由离散的点或是折线近似地组成。 图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。 笔式输出设备: 图形生成算法就是如何用插补算法生成诸如直线、圆弧和文字等基本图形的方法。 点阵输出设备: 图形生成算法就是在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。 笔式输出设备 基本图形生成算法 就是介绍如何用插补算法生成诸如直线、圆弧和文字等基本图形的方法。 插补算法 逐点比较法,就是在绘图的过程中,绘图笔每走一步就与规定图形进行偏差比较,然后决定下一步的走向。这样用步步逼近理想线条的方法画出规定的图形。 点阵输出设备用一系列象素点逼近直线 3.1 直线的生成算法 在数学上,两个坐标点可以确定出一条直线,理想的直线是没有宽度的,由无数个点构成的。 在光栅图形显示器上显示一条直线时,只能在显示器给定的有限像素组成的矩阵中,确定最佳逼近于该直线的一组像素点来表示,这就是直线的扫描转换。 3.1.1 DDA画线算法 本节主要介绍三种常用的直线生成算法,即数值微分法(DDA)、中点画线法和Bresenham算法。这三种算法都是只考虑一个像素宽的直线。 max(|△x|,|△y|)=|△x|,即|k|≤1的情况: 程序,注意:round(x)=(int)(x+0.5) 3.1.3 中点Bresenham算法 直线的方程 基本原理: 假定0≤k≤1,x是最大位移方向 判别式: 初始值d的计算 0≤k≤1时中点Bresenham算法的算法步骤为: 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、d=0.5-k、x=x0、y=y0; 3.绘制点(x,y)。判断d的符号; 若d0,则(x,y)更新为(x+1,y+1),d更新为d+1-k; 否则(x,y)更新为(x+1,y),d更新为d-k。 4.当直线没有画完时,重复步骤3。否则结束。 改进:用2d△x代替d 1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。 2.计算初始值△x、△y、d=△x-2△y、x=x0、y=y0。 3.绘制点(x,y)。判断d的符号。 若d0,则(x,y)更新为(x+1,y+1),d更新为 d+2△x-2△y; 否则(x,y)更新为(x+1,y), d更新为d-2△y。 4.当直线没有画完时,重复步骤3。否则结束。 3.2 生成圆弧的常用算法 3.2.1 圆的特性 圆心位于原点的圆有四条对称轴:x=0,y=0,x=y和x=-y直线。若已知圆弧上一点(x,y),可以得到其关于四条对称轴的其它7个点,这种性质称为八对称性,如下图所示。 本节讨论的圆的生成算法,均只计算从x=0到x=y分段内(1b区域)的像素点,其余的像素位置利用八对称性即可得出。 解决问题: 3.2.3 中点Bresenham画圆 构造函数F(x,y)=x2-y2-R2。 对于圆上的点,有F(x,y)=0; 对于圆外的点,F(x,y)0; 而对于圆内的点,F(x,y)0。 ? 算法原理 当d≤0时,下一点取Pu(xi +1,yi); 当d0时,下一点取Pd(xi +1,yi-1)。 误差项的递推 d≤0: 判别式的初始值 算法步骤: 1.输入圆的半径R。 2.计算初始值d=1.25-R、x=0、y=R。 3.绘制点(x,y)及其在八分圆中的另外七个对称点。 4.判断d的符号。若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。 5.当xy时,重复步骤3和4。否则结束。 改进:用d-0.25代替d 算法步骤: 1.输入圆的半径R。 2.计算初始值d=1-R、x=0、y=R。 3.绘制点(x,y)及其在八分圆中的另外七个对称点。 4.判断d的符号。若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。 5.当xy时,重复步骤3和4。否则结束。程序 3.3 规则曲线的生成算法 以弧上斜率为-1的点作为分界,将第一象限椭圆弧分为上下两部分。 3.3.3 椭圆的中点Bresenham算法 算法原理 先推导上半部分的椭圆绘制公式 判别式 误差项的递推 d1≤0: 判别式的初始值 判别式 误差项的递推 d20: 注意: 上半部分的终止判别 下半部分

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档