- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第二章
基本图形的生成与计算
图形的扫描转换(光栅化):确定一个像素集合,用于显示一个图形的过程。步骤如下:确定有关像素用图形的颜色或其它属性,对像素进行写操作。对一维图形,不考虑线宽,则用一个像素宽的直线来显示图形。二维图形的光栅化,即区域的填充:确定像素集,填色或图案。任何图形的光栅化,必须显示在一个窗口内,否则不予显示。即确定一个图形的哪些部分在窗口内,哪些在窗口外,即裁剪。
扫描转换---〉裁剪:算法简单;图形显示前需要:扫描转换+裁剪裁剪---〉扫描转换:最常用,节约计算时间。
直线的扫描转换:确定最佳逼近于该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作。三个常用算法:数值微分法(DDA)中点画线法Bresenham算法。2.1直线的生成算法
直线DDA算法设直线起点为(x1,y1),终点(x2,y2),则斜率m为
这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。增量算法:在一个迭代算法中,如果每一步的x、y值是用前一步的值加上一个增量来获得,则称为增量算法。DDA算法就是一个增量算法。计算yi+1=mxi+1+b =mxi+b+k?x =yi+m?x当?x=1; yi+1=yi+m即:当x每递增1,y递增m(即直线斜率);注意上述分析的算法仅适用于?m?≤1的情形。在这种情况下,x每增加1,y最多增加1。当?m??1时,必须把x,y地位互换
1a011b022b032a043a053b064b074a08(x1,y1)09(x2,y2)10
直线从(x1,y1)到(x2,y2)的方向不同,分为8个极限。方向在第1a象限内的直线,取增量Dx=1,Dy=m;在1b象限内的,取增量Dy=1,Dx=1/m。表2.1象限|dx||dy|?DxDy象限|dx||dy|?DxDy1aTrue1m3aTrue-1-m1bFalse1/m13bFalse-1/m-12aTure-1m4aTure1-m2bFalse-1/m14bFalse1/m-1
研究表2.1的数据,可以得到如下规律:当|dx||dy|时|Dx|=1,|Dy|=m否则|Dx|=1/m,|Dy|=1Dx,Dy的符号与dx,dy的符号相同依据上述规律可以生成直线,每生成一条直线做两次除法,画线中的每点做两次加法,所以DDA算法生成直线的速度还是很快的。
voidDDALine(intx0,inty0,intx1,inty1,intcolor)?intx; floatdx,dy,y,k; dx=x1-x0;dy=y1-y0; k=dy/dx;y=y0; for(x=x0;x?x1,x++) ?drawpixel(x,int(y+0.5),color); y=y+k;??
例:画直线段P0(0,0)--P1(5,2)xint(y+0.5) y+0.50 0+0.50 0.4+0.51 0.8+0.5 1 1.2+0.52 1.6+0.52 2.0+0.5
缺点:在此算法中,y、k必须是float,且每一步都必须对y进行舍入取整,不利于硬件实现。
当M在Q的下方-P2离直线更近更近-取P2在Q的上方-P1离直线更近更近-取P1M与Q重合,P1、P2任取一点。问题:如何判断M与Q点的关系?直线中点画线法
01假设直线方程为:ax+by+c=0其中a=y0-y1,b=x1-x0,c=x0y1-x1y0由常识知:020304∴欲判断M点是在Q点上方还是在Q点下方,只需把M代入F(x,y),并检查它的符号。直线中点画线法
构造判别式:d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c当d0,M在直线(Q点)下方,取右上方P2;当d0,M在直线(Q点)上方,取右方P1;当d=0,选P1或P2均可,约定取P1;能否采用增量算法呢?直线中点画线法
若d?0-M在直线上方-取P1;01d1=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)+c03增量为a05此时再下一个象素的判别式为02=a(xp+1)+b(yp+0.5)+c+a=d+a;04直线中点画线法
若d0-M在直线下方-取P2;此时再下一个象素的判别式为d2=
您可能关注的文档
最近下载
- 内部调动审批表(模板) .pdf VIP
- 《职工非因工伤残或因病丧失劳动能力程度鉴定标准(试行)》.doc VIP
- 民宿项目建设可行性研究报告.docx VIP
- IEC 61133-2006 车辆组装和运行前的整车试验规范(中文).docx VIP
- 部编人教版七年级历史上册第19课《北魏政治和北方民族大交融》说课课件(共24张).ppt VIP
- 2025年儿童青少年近视防控白皮书.pdf VIP
- 2024年执业助理医师(临床)考试备考重点题库(600题版).doc VIP
- 2023年口腔助理医师考试备考重点题库(600题版).docx VIP
- 临床研究答辩.pptx VIP
- 西门子S7-200 SMART PLC应用技术图解项目教程全册教案.docx VIP
文档评论(0)