欢迎来到天天文库
浏览记录
ID:55728034
大小:1.41 MB
页数:39页
时间:2020-06-02
《图形学课件 第三章 基本图形的扫描转换.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章基本图形的扫描转换扫描转换的基本概念JackEltonBresenham简介直线的扫描转换算法圆的扫描转换算法本章学习目标直线的扫描转换圆的扫描转换本章小结本章内容直线、圆、椭圆是二维场景中的最基本图形。尽管MFC的CDC类已经提供了相关的绘制函数,但直接使用这些函数仍然无法满足真实感图形绘制的要求。光栅扫描显示器是画点设备,基本图形的光栅化就是在像素点阵中确定最佳逼近于理想图形的像素点集,并用指定颜色显示这些像素点集的过程。当光栅化与按扫描线顺序绘制图形的过程结合在一起时,也称为扫描转换。本章从基本图形的生成原理出发,使用绘制像素点函数实现基本图形的扫描转换。绘制像素点函数的原型
2、为BOOLSetPixelV(intx,inty,COLORREFcrColor);直线、圆、椭圆的扫描转换主要使用Bresenham算法实现。JackEltonBresenhamPlottermovementBresenham算法最初是为数字绘图仪提出,但同样适用于CRT光栅显示器。BresenhamretiredfromofserviceatIBMasaSeniorTechnicalStaffMemberin1987.Hetaughtfor16yearsatWinthropUniversity.Bresenham‘slinealgorithm,developedin1965,ishi
3、smostwell-knowninnovation.“Algorithmforcomputercontrolofadigitalplotter”。Itdetermineswhichpointsona2-dimensionalrastershouldbeplottedinordertoformastraightlinebetweentwogivenpoints,andiscommonlyusedtodrawlinesonacomputerscreen.Itisoneoftheearliestalgorithmsdiscoveredinthefieldofcomputergraphics.直
4、线的扫描转换是在屏幕像素点阵中确定最佳逼近于理想直线的像素点集的过程。计算机图形学要求直线的绘制速度要快,即尽量使用加减法(增量算法),避免乘、除、开方、三角等复杂运算。最著名的算法是由J.E.Bresenham于1965年提出的Bresenham算法。3.1直线的扫描转换直线的扫描转换光栅扫描显示器的本质决定它难以生成完美的直线段,也不能保证直线段精确地通过起点和终点。绘制直线段的基本要求:直线要直。要求具有精确的起点和终点。直线无方向性。从起点绘制到终点的直线段与从终点绘制到起点的直线段要重合。直线的绘制速度要快。即尽量使用加减法整数运算,避免乘、除、开方、三角等复杂运算。Brese
5、nham算法的特点:Bresenham算法是一个经典的增量算法。在一个迭代算法中,如果每一步的x,y值是用前一步的值加上一个增量来获得的,那么这种算法就称为增量算法。Bresenham算法有几种变体,计算方法略有不同。本章只介绍中点Bresenham算法(MidpointBresenhamAlgorithm)。对于直线,中点Bresenham算法与Bresenham算法产生同样的像素点,而且还可以扩展为更复杂的图形扫描转换算法,如绘制圆的中点Bresenham算法和绘制椭圆的中点Bresenham算法。3.1.1算法原理直线的中点Bresenham算法的原理:每次在主位移方向上走一步,另
6、一个方向上走不走步取决于中点误差项的值。给定理想直线的起点坐标为P0(x0,y0),终点坐标为P1(x1,y1),则直线的隐函数方程为:(3-1)其中,直线的斜率:直线水平方向位移:直线垂直方向位移:理想直线将平面划分成三个区域:对于直线上的点,F(x,y)=0;对于直线上方的点,F(x,y)>0;对于直线下方的点,F(x,y)<0。假设直线的斜率为0≤k≤1,则
7、△x
8、≥
9、△y
10、,x011、一步,下一点只能在Pu和Pd两点中选取,Pu和Pd的中点为M。显然,若中点M在理想直线的下方,则Pu点距离直线近,否则选取Pd。3.1.2构造中点误差项从Pi(xi,yi)点出发选取下一像素时,需将Pu和Pd的中点M(xi+1,yi+0.5)代入隐函数方程,构造中点误差项di。(3-2)(3-3)3.1.3递推公式1.中点误差项的递推公式M(xi+2,yi+1.5)M(xi+2,yi+0.5)Pi(xi,yi)(a)di<0(b)d
11、一步,下一点只能在Pu和Pd两点中选取,Pu和Pd的中点为M。显然,若中点M在理想直线的下方,则Pu点距离直线近,否则选取Pd。3.1.2构造中点误差项从Pi(xi,yi)点出发选取下一像素时,需将Pu和Pd的中点M(xi+1,yi+0.5)代入隐函数方程,构造中点误差项di。(3-2)(3-3)3.1.3递推公式1.中点误差项的递推公式M(xi+2,yi+1.5)M(xi+2,yi+0.5)Pi(xi,yi)(a)di<0(b)d
此文档下载收益归作者所有