三下-图形学第5-10讲_第1页
三下-图形学第5-10讲_第2页
三下-图形学第5-10讲_第3页
三下-图形学第5-10讲_第4页
三下-图形学第5-10讲_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1Chapter3

BasicRasterGraphicsAlgorithmsforDrawing2DPrimitives

基本二维图元的生成算法2本章内容(outline)直线的扫描转换(SCANCONVERTINGLINES)圆与椭圆的扫描转换(SCANCONVERTINGCIRCLEANDELLIPSE)区域填充(FILLINGREGION)字符生成(GENERATINGCHARACTERS)反走样(ANTIALIASING)二维裁剪(2DCLIPPING)3图形扫描转换(scan-conversion)Scan-conversion:确定一个象素集合及其颜色,用于显示一个图形的过程,称为图形的扫描转换或光栅化。图形扫描转换分为两步:

确定有关(组成图形的)象素;用图形的颜色或其他属性对象素进行写操作。4TheoutputpipelineToclipaprimitivepriortoscanconversionMostoftenforlines,rectangles,polygonsToscanconvertaprimitivepriortoclippingGeneralizestoarbitraryclipregionsGeneratetheentirecollectionofprimitivesintoatemporarycanvasandthentocopyPixelonlythecontentsofthecliprectangletothedestinationcanvasOftenusedfortext5Scanconvertinglines用离散点集逼近采用几何方式定义的直线段(注意斜率slope)6SCANCONVERTINGLINES(直线的扫描转换)问题

给定直线段的两个端点(x0,y0)和(x1,y1),

把其在光栅扫描显示器上显示出来.描述

理想的直线段:没有线宽,由无数个点构成光栅扫描显示器上:有限个象素组成,有线宽.7ScanconvertinglineEqualsto:GiventheendpointsandthecolorofthelineComputingthecoordinatesofthepixelsthatlieonornearanideallineWritingthepixelsbythecolor8p0p1●●●●●●表示:用最靠近直线的一些网格点来代表它直线的表示直线的表示(therepresentationoflines)9两种基本的直线扫描转换算法数值微分法(DigitalDifferentialAnalyzer-DDA)也称为基本增量法(BasicIncrementalAlgorithm)中点画线法(MidpointLineAlgorithm)BresenhamLineAlgorithm10PrincipleofBasicIncrementalAlgorithm(1)(xi,Round(yi))(xi,yi)(xi+1,Round(yi+k))(xi+1,yi+k)11方法数值微分法(DDA---DigitalDifferentialAnalyzer)

12数值微分法(DDA)13令yir=round(yi)所求点坐标为(round(xi+1),round(yi+1))其中,xi+1=xi+1,yi+1=yi+m;数值微分法(DDA)14数值微分法(DDA)●●●●●p1p0●●问题若|m|>1,则x向每变化1个单位,y向有可能超出1个步长15数值微分法(DDA)最大步长(步距)步进方向:的方向16数值微分法(DDA)17数值微分法(DDA)算法:18数值微分法(DDA)voidLine(/*Assumes-1<m<l,x0<x1*/int

x0,int

y0,/*Leftendpoint*/

int

x1,int

y1,/*Rightendpoint*/int

value)/*Valuetoplaceinline'spixels*/{int

x;/*xrunsfromx0tox1inunitincrements*/double

dy=y1-y0:double

dx=x1-x0;double

m=dy/dx;double

y=y0;for

(x=x0;x<=x1;x++){PutPixel(x,Round(y),value);/*Setpixeltovalue*/y+=m;/*Stepybyslopem*/}}/*Line*/

Theincrementallinescan-conversionalgorithm.19算法优点:简单、自然。算法缺点:用到了浮点运算,计算效率低。自变量的选择可根据斜率确定,以得到最佳的直线效果:数值微分法(DDA)20中点画线法(MidpointLineAlgorithm)问题引出

为解决DDA算法中需要浮点数进行运算,且输出时需取整的不利条件,可以用中点画线法。假设直线的斜率m∈[0,1],两个端点分别是(x0,y0),(x1,y1)。21P(xp,yp)P1(xp+1,yp)中点判别方法示意图QP2(xp+1,yp+1)MMidpointLineAlgorithm(1)22思想当前一点已确定,用P(xp,yp)来代表时,下一点仅有可能在P1和P2中选,用M表示P1,P2的中点,M(xp+1,yp+0.5)。Q是理想直线上x=xp+1处的点.比较M和Q的位置关系,以确定下一点的走向.MidpointLineAlgorithm(2)23比较M和Q:若M位于Q的下方,即ym<yq,则应取p2点;若M位于Q的上方,即ym>yq,则应取p1点;原则:

当两侯选点的中点落在直线下方时,选较高点,否则选较低点。MidpointLineAlgorithm(3)24直线的正负划分性l=F(x,y)=0(x0,y0)F(x0,y0)>0F(x0,y0)<025直线的正负划分性则该直线将其所在空间一分为二:设平面直线方程为:26MidpointLineAlgorithm(4)定义直线函数:特点:其中:27MidpointLineAlgorithm(5)Definedecisionfunction(构造判别函数):Definedecisionvariable(引入判别参数):其中:28MidpointLineAlgorithm(6)算法描述:(假设X方向的步长为1)问题:如何快速计算判别参数的值?采用增量计算方法优化判别公式的计算29如黄色线所示情形如蓝色线所示情形MidpointLineAlgorithm(7)30MidpointLineAlgorithm(8)P(xp,yp)P2(xp+1,yp+1)P1(xp+1,yp)QMM1P4(xp+2,yp+1)P3(xp+2,yp)(xp+2,yp+0.5)31MidpointLineAlgorithm(9)32MidpointLineAlgorithm(10)ThefirstdecisionvariabledstartisThefirstmidpointisat(x0+1,y0+0.5),33算法的递推公式是:MidpointLineAlgorithm(11)递推公式:34消除浮点数的算法公式是:MidpointLineAlgorithm(12)当直线斜率的绝对值大于1时,x,y互换;此时应判别点在直线的左/右侧关系。35例:用中点画线法光栅化一条连接两点(0,0)和(5,2)的直线段,写出计算过程。Example(1)36xydOutpixel初始x=012340123450011221-33-151(0,0)(1,0)(2,1)(3,1)(4,2)(5,2)递推如下:Example(2)37456321001234567Example(3)Thepixelsthatapproximatethelinefrompoint(0,0)topoint(5,2)usingmidpointalgorithmandtheidealline.381.思考题:请考虑如何将该算法推广到任意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论