欢迎来到天天文库
浏览记录
ID:58657671
大小:1.75 MB
页数:110页
时间:2020-10-05
《计算机图形学--基本光栅图形生成算法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章基本光栅图形生成算法主要内容光栅图形生成算法是计算机图形学的基础,本章主要包括直线和圆弧的生成算法、多边形的填充以及其他相关的图形基本元素的生成算法。直线和圆弧等是图形的基本元素,生成基本元素算法的效率对图形系统的效率有直接关系。虽然很多智能绘图机和图形显示器都有自己生成直线和圆弧的功能,但也有很多情况下要自己编写一些设备的驱动程序,在图形软件包中用软件生成直线和圆弧有时也是十分必要的。多边形的填充算法是面显示的基础,其思想可用于解决计算机图形学中的消隐、真实感显示等许多问题,本章主要讨论此类图
2、元的绘制问题。主要章节直线生成算法4.1圆弧生成算法4.2多边形的填充4.3区域填充4.4光栅图形的反走样算法4.54.1直线生成算法图形的扫描转换或光栅化确定一个像素集合及其颜色,用于显示一个图形的过程图形扫描转换的一般步骤1确定有关像素2用图形的颜色或其它属性,对像素进行某种写操作几点重要的预备知识直线的扫描转换或光栅化严格定义上的直线是没有宽度的,我们在光栅显示器上确定最佳逼近于直线的一组像素,并且按照扫描线顺序,用当前写方式对这些像素进行写操作,就是直线的光栅化,或叫用显示器绘制直线。设计和讨
3、论直线生成算法应注意的要求首先要使所生成的直线具有:起码所画直线外观笔直,具有精确的起点和终点显示的亮度沿直线应该保持不变,且与直线的长度和方向无关直线生成速度要快还要满足:端点次序(与次序无关)端点形状(连接时的完美吻合)坐标系的建立xy计算机图形显示设备有多种类型,如随机扫描图形显示器、光栅扫描图形显示器、绘图仪、打印机等,且它们的工作原理不尽相同,但是计算机把其保存的图形数据转换为显示输出设备上的图形的转换原理却是类似的。基本方法是:由计算机产生X、y两个正交方向的“步进”控制信号,以控制显示设
4、备的电子束、绘图笔、打印头的偏转或移动,并在图形显示设备的设备坐标系(整数平面直角坐标系)上画点或画线,即用这种逐点逐线描绘逼近的方法,达到在显示设备上显示图形的目的。直线方程根据直线的几何特征可确定直线路径的象素位置截距方程端点对任何沿直线给定的x的增量,由上式可得y增量同理,对于指定的的x的增量在光栅系统中,通过象素绘制直线,水平和垂直方向的步长受到象素的间距的限制,必须在离散位置上对直线取样,在每个取样位置上确定距直线最近的象素。用一系列的像素点来逼近直线生成直线(段)的方法DDA算法正负算法B
5、resenham算法改进后的Bresenham算法约定:像素由其左下角坐标点表示4.1.1生成直线的DDA算法图中圆黑点表示用DDA法生成的直线P2P1一个坐标轴上以单位间隔取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。一、算法思想则直线的参数方程为xyo先考虑具有正斜率的线段设第步判断得到的逼近直线的点则第个点并且有?xy数字微分法(DDA)的本质用数值方法解微分方程,通过同时对和各增加一个小增量,计算下一步的,值DDA法的体现转为用数值方法求解xy当ΔX>ΔY>0,即直线斜率小于1,应使x
6、方向每次增加1,y方向最多增加1,此时取Δt=1/ΔX;当ΔY>ΔX>0,即直线斜率大于1,应使y方向每次增加1,x方向每次最多增加1,此时应取Δt=1/ΔY;的选择所以上述处理基于从左端点到右端点,若处理过程取反,即起始端点在右侧具有负斜率的线段若ys>ye若ys7、dda(intx1,inty1,intx2,inty2)//直线DDA{intk,i;floatx,y,dx,dy;k=abs(x2-x1);if(abs(y2-y1)>k)k=abs(y2-y1);dx=float(x2-x1)/k;dy=float(y2-y1)/k;x=float(x1);y=float(y1);for(i=0;i8、值微分法判断逼近点的位置为快速很好地求出表示直线的像素,采用参数方程的表达形式为了提高速度,用等步长来计算直线上的点DDA算法是一个增量算法三、算法特点增量算法解释:在一个迭代算法中,如果每一步的x,y值是用前一步的值加上一个增量来获得的,就称其为一增量算法。有除法运算,每一步要进行舍入取整,不利于硬件的读取在第一象限内用简单的DDA算法考虑从(0,0)到(5,5)的直线段的生成再从(0,0)到(5,2)生成一直线段四、例习题01234512345五、例
7、dda(intx1,inty1,intx2,inty2)//直线DDA{intk,i;floatx,y,dx,dy;k=abs(x2-x1);if(abs(y2-y1)>k)k=abs(y2-y1);dx=float(x2-x1)/k;dy=float(y2-y1)/k;x=float(x1);y=float(y1);for(i=0;i8、值微分法判断逼近点的位置为快速很好地求出表示直线的像素,采用参数方程的表达形式为了提高速度,用等步长来计算直线上的点DDA算法是一个增量算法三、算法特点增量算法解释:在一个迭代算法中,如果每一步的x,y值是用前一步的值加上一个增量来获得的,就称其为一增量算法。有除法运算,每一步要进行舍入取整,不利于硬件的读取在第一象限内用简单的DDA算法考虑从(0,0)到(5,5)的直线段的生成再从(0,0)到(5,2)生成一直线段四、例习题01234512345五、例
8、值微分法判断逼近点的位置为快速很好地求出表示直线的像素,采用参数方程的表达形式为了提高速度,用等步长来计算直线上的点DDA算法是一个增量算法三、算法特点增量算法解释:在一个迭代算法中,如果每一步的x,y值是用前一步的值加上一个增量来获得的,就称其为一增量算法。有除法运算,每一步要进行舍入取整,不利于硬件的读取在第一象限内用简单的DDA算法考虑从(0,0)到(5,5)的直线段的生成再从(0,0)到(5,2)生成一直线段四、例习题01234512345五、例
此文档下载收益归作者所有