基本图形生成算法.PPT
《基本图形生成算法.PPT》由会员分享,可在线阅读,更多相关《基本图形生成算法.PPT(117页珍藏版)》请在三一办公上搜索。
1、2023/10/11,华中理工大学计算机学院 陆枫 99-7,1,第5章 基本图形生成算法,提出问题,如何在指定的输出设备上根据坐标描述构造基本二维几何图形(点、直线、圆、椭圆、多边形域、字符串及其相关属性等)。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,2,图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,3,5.1 直线的扫描转换,直线的绘制要求:1.直线要直2.直线的端点要准确,即无定向性和断裂情况3.直线的亮度、
2、色泽要均匀4.画线的速度要快5.要求直线具有不同的色泽、亮度、线型等,2023/10/11,华中理工大学计算机学院 陆枫 99-7,4,5.1.1 数值微分法(DDA法),解决的问题:给定直线两端点P0(x0,y0)和P1(x1,y1),画出该直线。,直线的微分方程:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,5,DDA算法原理:,=1/max(|x|,|y|),2023/10/11,华中理工大学计算机学院 陆枫 99-7,6,max(|x|,|y|)=|x|,即|k|1的情况:,max(|x|,|y|)=|y|,此时|k|1:,2023/10/11,华中理工大学计算机学院
3、 陆枫 99-7,7,程序注意:round(x)=(int)(x+0.5),2023/10/11,华中理工大学计算机学院 陆枫 99-7,8,特点:增量算法直观、易实现不利于用硬件实现,2023/10/11,华中理工大学计算机学院 陆枫 99-7,9,5.1.2 中点Bresenham算法,直线的方程,该直线方程将平面分为三个区域:对于直线上的点,F(x,y)=0;对于直线上方的点,F(x,y)0;对于直线下方的点,F(x,y)0。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,10,2023/10/11,华中理工大学计算机学院 陆枫 99-7,11,基本原理:假定0k1,x是
4、最大位移方向,2023/10/11,华中理工大学计算机学院 陆枫 99-7,12,判别式:,则有:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,13,误差项的递推d0:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,14,误差项的递推d0:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,15,初始值d的计算,2023/10/11,华中理工大学计算机学院 陆枫 99-7,16,0k1时Bresenham算法的算法步骤为:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、d=0.5-k、x=x0、y=y0;3.绘制点
5、(x,y)。判断d的符号;若d0,则(x,y)更新为(x+1,y+1),d更新为d+1-k;否则(x,y)更新为(x+1,y),d更新为d-k。4.当直线没有画完时,重复步骤3。否则结束。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,17,改进:用2dx代替d1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、d=x-2y、x=x0、y=y0。3.绘制点(x,y)。判断d的符号。若d0,则(x,y)更新为(x+1,y+1),d更新为 d+2x-2y;否则(x,y)更新为(x+1,y),d更新为d-2y。4.当直线没有画完时,重复步骤3。否则结束。
6、程序,2023/10/11,华中理工大学计算机学院 陆枫 99-7,18,5.1.3 改进的Bresenham算法,假定直线段的0k1基本原理:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,19,误差项的计算d初=0,每走一步:d=d+k 一旦y方向上走了一步,d=d-1,2023/10/11,华中理工大学计算机学院 陆枫 99-7,20,算法步骤:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、d=0、x=x0、y=y0。3.绘制点(x,y)。4.d更新为d+k,判断d的符号。若d0.5,则(x,y)更新为(x+1,y+1),同时将d更新为
7、d-1;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,21,改进1:令e=d-0.5,e初=-0.5,每走一步有e=e+k。if(e0)then e=e-1,2023/10/11,华中理工大学计算机学院 陆枫 99-7,22,算法步骤为:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=-0.5、x=x0、y=y0。3.绘制点(x,y)。4.e更新为e+k,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为
8、(x+1,y)。5.当直线没有画完时,重复步骤3和4。否则结束。,2023/10/11,华中科技大学计算机学院 陆枫,23,改进2:用2ex来替换ee初=-x,每走一步有e=e+2y。if(e0)then e=e-2x,2023/10/11,华中理工大学计算机学院 陆枫 99-7,24,算法步骤:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。2.计算初始值x、y、e=-x、x=x0、y=y0。3.绘制点(x,y)。4.e更新为e+2y,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2x;否则(x,y)更新为(x+1,y)。5.当直线没有画完时,重复
9、步骤3和4。否则结束。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,25,程序几种画线算法的比较,2023/10/11,华中理工大学计算机学院 陆枫 99-7,26,5.2 圆的扫描转换,解决的问题:绘出圆心在原点,半径为整数R的圆x2+y2=R2,5.2.1 八分法画圆,八分法画圆,2023/10/11,华中理工大学计算机学院 陆枫 99-7,27,(y,x),(-y,x),(-x,y),(-x,-y),(-y,-x),(y,-x),(x,-y),2023/10/11,华中理工大学计算机学院 陆枫 99-7,28,解决问题:,2023/10/11,华中理工大学计算机学院 陆
10、枫 99-7,29,5.2.2 简单方程产生圆弧,算法原理:利用其函数方程,直接离散计算,圆的函数方程为:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,30,圆的极坐标方程为:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,31,5.2.3 中点Bresenham画圆,构造函数F(x,y)=x2-y2-R2。对于圆上的点,有F(x,y)=0;对于圆外的点,F(x,y)0;而对于圆内的点,F(x,y)0。算法原理,2023/10/11,华中理工大学计算机学院 陆枫 99-7,32,2023/10/11,华中理工大学计算机学院 陆枫 99-7,33,当d0时,下一
11、点取Pu(xi+1,yi);当d0时,下一点取Pd(xi+1,yi-1)。,M的坐标为:M(xi+1,yi-0.5)当F(xM,yM)0时,取Pd(xi+1,yi-1)当F(xM,yM)=0时,约定取Pu。构造判别式:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,34,误差项的递推d0:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,35,d0:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,36,判别式的初始值,2023/10/11,华中理工大学计算机学院 陆枫 99-7,37,算法步骤:1.输入圆的半径R。2.计算初始值d=1.25-R、x
12、=0、y=R。3.绘制点(x,y)及其在八分圆中的另外七个对称点。4.判断d的符号。若d0,则先将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。否则结束。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,38,改进:用d-0.25代替d算法步骤:1.输入圆的半径R。2.计算初始值d=1-R、x=0、y=R。3.绘制点(x,y)及其在八分圆中的另外七个对称点。4.判断d的符号。若d0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为
13、d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。5.当xy时,重复步骤3和4。否则结束。程序,2023/10/11,华中理工大学计算机学院 陆枫 99-7,39,5.3 椭圆的扫描转换,5.3.1 椭圆的特征,2023/10/11,华中理工大学计算机学院 陆枫 99-7,40,对于椭圆上的点,有F(x,y)=0;对于椭圆外的点,F(x,y)0;对于椭圆内的点,F(x,y)0。解决问题:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,41,以弧上斜率为1的点作为分界将第一象限椭圆弧分为上下两部分。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,42,
14、引理5-1:若在当前中点,法向量的y分量比x分量大,即,而在下一个中点,不等号改变方向,则说明椭圆弧从上部分转入下部分。,法向量,2023/10/11,华中理工大学计算机学院 陆枫 99-7,43,5.3.2 椭圆的中点Bresenham算法,算法原理,2023/10/11,华中理工大学计算机学院 陆枫 99-7,44,先推导上半部分的椭圆绘制公式,2023/10/11,华中理工大学计算机学院 陆枫 99-7,45,判别式,若d10,取Pu(xi+1,yi)若d10,取Pd(xi+1,yi-1),2023/10/11,华中理工大学计算机学院 陆枫 99-7,46,误差项的递推d10:,2023
15、/10/11,华中理工大学计算机学院 陆枫 99-7,47,d10:,判别式的初始值,2023/10/11,华中理工大学计算机学院 陆枫 99-7,49,再来推导椭圆弧下半部分的绘制公式原理,2023/10/11,华中理工大学计算机学院 陆枫 99-7,50,判别式,若d20,取Pl(xi,yi-1)若d20,取Pr(xi+1,yi-1),2023/10/11,华中理工大学计算机学院 陆枫 99-7,51,误差项的递推d20:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,52,d20:,2023/10/11,华中理工大学计算机学院 陆枫 99-7,53,注意:上半部分的终止判
16、别下半部分误差项的初值算法步骤:1.输入椭圆的长半轴a和短半轴b。2.计算初始值d=b2+a2(-b+0.25)、x=0、y=b。3.绘制点(x,y)及其在四分象限上的另外三个对称点。,2023/10/11,华中理工大学计算机学院 陆枫 99-7,54,4.判断d的符号。若d0,则先将d更新为d+b2(2x+3),再将(x,y)更新为(x+1,y);否则先将d更新为d+b2(2x+3)+a2(-2y+2),再将(x,y)更新为(x+1,y-1)。5.当b2(x+1)a2(y-0.5)时,重复步骤3和4。否则转到步骤6。6.用上半部分计算的最后点(x,y)来计算下半部分中d的初值:,2023/1
17、0/11,华中理工大学计算机学院 陆枫 99-7,55,7.绘制点(x,y)及其在四分象限上的另外三个对称点。8.判断d的符号。若d0,则先将d更新为b2(2xi+2)+a2(-2yi+3),再将(x,y)更新为(x+1,y-1);否则先将d更新为d+a2(-2yi+3),再将(x,y)更新为(x,y-1)。9.当y0时,重复步骤7和8。否则结束。程序,2023/10/11,华中理工大学计算机学院 陆枫 99-7,56,5.4 多边形的扫描转换与区域填充,多边形的扫描转换主要是通过确定穿越区域的扫描线的覆盖区间来填充,区域填充是从给定的位置开始涂描直到指定的边界条件为止。,2023/10/11
18、,华中理工大学计算机学院 陆枫 99-7,57,5.4.1 多边形的扫描转换,顶点表示用多边形的顶点序列来刻划多边形点阵表示是用位于多边形内的象素的集合来刻划多边形扫描转换多边形或多边形的填充:从多边形顶点表示到点阵表示的转换。,1.什么是多边形的扫描转换,2023/10/11,华中理工大学计算机学院 陆枫 99-7,58,2.x-扫描线算法基本思想,2023/10/11,华中理工大学计算机学院 陆枫 99-7,59,算法步骤:(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。(2)从y=ymin到y=ymax,每次用一条扫描线进行填充。(3)对一条扫
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 图形 生成 算法
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6263494.html