最新计算机图形学第二章a课件.ppt

上传人(卖家):晟晟文业 文档编号:4969122 上传时间:2023-01-29 格式:PPT 页数:67 大小:1.23MB
下载 相关 举报
最新计算机图形学第二章a课件.ppt_第1页
第1页 / 共67页
最新计算机图形学第二章a课件.ppt_第2页
第2页 / 共67页
最新计算机图形学第二章a课件.ppt_第3页
第3页 / 共67页
最新计算机图形学第二章a课件.ppt_第4页
第4页 / 共67页
最新计算机图形学第二章a课件.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、上海师范大学计算机图形学上海师范大学计算机图形学第二章第二章a int getx(void);int gety(void);2.直线 void line(int x0,int y0,int x1,int y1);当前坐标(x,y)void lineto(int x,int y);void linerel(int deltax,int deltay);当前坐标(x+deltax,y+deltay)例题:arc(40,40,0,120,30);8 DRAKGRAY9 LIGHTBLUE10 LIGHTGREEN11 LIGHTCYAN12 LIGHTRED13 LIGHTMAGENTA14 YEL

2、LOW15 WHITE 6.void setlinestyle(int linestyle,unsigned upattern,int thickness);Linestyle取值:SOLID-LINE 0 实线 DOTTED-LINE 1 点线 CENTER-LINE 2 中心线 DASHED-LINE 3 虚线 USERBIT-LINE 4 用户定义的线 upattern仅在userbit-line时起作用 thickness线宽 NORM-WIDTH 1 一个象素宽 THICK-WIDTH 3 三个象素宽例题:setlinestyle(DASHED-LINE,0,THICK-WIDTH)

3、;或 setlinestyle(3,0,3);line(300,50,300,200);上机作业2:画出如下图形第二章 基本图形的生成和计算 如何在指定的输出设备上描述构造基本二维几何图形(点、直线、圆、椭圆、多边形、字符串及其相关属性等)2.1 直线的生成算法图形的扫描转换:图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。图5-1 用一系列的象素点来逼近直线用一系列的象素点来逼近直线2.1 直线的生成算法2.1.1直线DDA算法(Digital Differential Analyser)设直线起点(x1,y1),终点(x2,y2)xy(x1,y1)(x2,y2

4、)则斜率mm=(y2-y1)/(x2-x1)=dy/dxxy(x1,y1)(x2,y2)dydxxy(x1,y1)(x2,y2)dydxdy/dx=Dy/Dxxi+1=xi+Dxyi+1=yi+DyDy=m*Dx(xi,yi)(xi+1,yi+1)DxDyxy1b1a4a4b3b3a2a2bxi+1=xi+1yi+1=yi+mxi+1=xi-1yi+1=yi-m(x1,y1)(x2,y2)Oxi+1=xi+1/myi+1=yi+1象限 Dx Dy 象限 Dx Dy1a 1 m 4a 1 -m1b 1/m 1 4b 1/m -12a -1 m 2b -1/m 13a -1 -m3b -1/m -

5、1结论:1.当|m|1时,|Dx|=1,|Dy|=m 否则|Dx|=1/m,|Dy|=1结论:2.Dx,Dy的符号与dx,dy的符号相同。缺点:1.浮点增量的连续迭加,误差积累使长线段计算的象素位置偏离实际线段 2.浮点运算十分耗时1965年由Bresenham提出设直线起点(x1,y1),终点(x2,y2)y=mx+bb=y1-m*x1m=(y2-y1)/(x2-x1)=dy/dx2.1.2 直线Bresenham算法1312111010111213(11,11)(12,11)或(12,12)当直线方向限于1a象限(x1,y1)(x2,y2)当直线方向限于1a象限,则xi+1=xi+1 yi

6、+1yi+1d2,则yi+1=yi+1,否则yi+1=yid1=y-yi d2=yi+1-yd1-d2=2y-2yi-1y=m(xi+1)+bm=dy/dx d1=y-yi d2=yi+1-yd1-d2=2dy/dx(xi+1)+2b-2yi-1 两边*dx,令Pi=(d1-d2)dx 则Pi=2dy(xi+1)+2b*dx-2yi*dx-dx =2xidy-2yidx+2dy+(2b-1)dx 由于dx0,则Pi可用来判断符号 Pi+1=2xi+1dy-2yi+1dx+2dy+(2b-1)dx =2(xi+1)dy-2yi+1dx+2dy+(2b-1)dx =Pi+2dy-2yi+1dx+2

7、yidx =Pi+2dy-2(yi+1-yi)dxPi=2xidy-2yidx+2dy+(2b-1)dxP1=2x1dy-2y1dx+2dy+(2b-1)dx =2x1dy-2y1dx+2dy+2(y1-(dy/dx)x1)-1dx =2x1dy-2y1dx+2dy+2y1dx-2x1dy-dx =2dy-dxPi=2xidy-2yidx+2dy+(2b-1)dxb=y1-m*x11.画点(x1,y1)dx=x2-x1 dy=y2-y1 P1=2dy-dx i=12.xi+1=xi+1 当Pi0,则 yi+1=yi+1 ,否则yi+1=yi3.画点(xi+1,yi+1)画线步骤:P1=2dy-

8、dx4.求Pi+1,当Pi0 则 Pi+1=Pi+2dy-2dx 否则Pi+1=Pi+2dy5.i=i+1 如i0,且m1,则交换x,y之间规则2.2 圆的生成算法2.2.1基础知识 设圆心坐标(xc,yc),半径 r 1.直角坐标法 (x-xc)2+(y-yc)2=r2 y=yc(r2-(x-xc)2)1/2 x-xc从-rr作加1递增,可求出y坐标但圆周上的点不均匀即象素位置间的间距不一致。122.2 圆的生成算法2.极坐标法 x=xc+rcos y=yc+rsinr0,/4,利用对称法则(x,y)yy=-xy=x(y,x)(-y,x)(-x,y)(-x,-y)(-y,-x)(y,-x)(

9、x,-y)2.2 圆的生成算法2.2.2 圆的Bresenham算法 Bresenham圆算法通过比较象素与圆的距离的平方而避免了平方根运算。设圆心坐标(0,0)半径为r起点(0,r)顺时针方向1/8圆周xi+1=xi+1 yi+1=yi或yi+1=yi-1xyxixi+1yiyyi-1d21/2d11/22.2 圆的生成算法y2=r2-(xi+1)2d1=yi2-y2=yi2-r2+(xi+1)2d2=y2-(yi-1)2=r2-(xi+1)2-(yi-1)2令Pi=d1-d2 =2(xi+1)2+yi2+(yi-1)2-2r2 Pi+1=Pi+4xi+6+2(yi+12+1-yi2)-2(

10、yi+12+1-yi2)当P0,则yi+1=yi,否则yi+1=yi-12.2 圆的生成算法Pi+1=2(xi+2)2+yi+12+(yi+1-1)2-2r2 =2(xi+1)2+4xi+6+yi+12+(yi+1-1)2-2r2 =Pi+4xi+6-yi2-(yi-1)2+yi+12+(yi+1-1)2 =Pi+4xi+6+2(yi+12-yi2)-2(yi+1-yi)当P1(x1=0,y1=r)P1=2+r2+(r-1)2-2r2 =3-2r2.3 区域填充算法2.3.1基本知识1.区域填充定义:给出一个区域的边界,要求对边界范围内的所有象素单元赋予指定的颜色代码。最常用的是多边形填色。2

11、.3 区域填充算法2.数学方法:扫描交点的奇偶数判断法1)将多边形画在平面上2)用一根水平扫描线从左到右通过多边形,从而与多边形的边界相交,扫描线与边界相交奇数次后进入多边形,偶次数后走出多边形。ABC错判错判错判1.扫描线填色算法:按扫描线顺序计算扫描线与多边形的相交区间,再用要求的颜色或图案显示这些区间的象素,需提供多边形各顶点的坐标填色算法2.种子填色算法:要求给出边界颜色 特征区域内的一个点的坐标。2.3.2 扫描线填色算法1.用水平扫描线由上往下扫描多边形2.每根扫描线与多边形各边产生一系列交点,采用递归算法3.将交点按x坐标进入分类,将分类后的交点成对取出,作为两个端点,以所需要填

12、的色彩画水平直线。扫描线与边的求交点方法采用递归算法:以(x1,y1),(x2,y2)为端点的边与第i+1条扫描线的交点:yi+1=yi-1 ,xi+1=xi-(x2-x1)/(y2-y1)即 xi+1=xi-1/m,yi(x2,y2)Pi(xi,yi)(x1,y1)Pi+1(xi+1,yi+1)yi+1左右顶点处理:(以1、2、3次序画多边形外框)左顶点2:y1y2y2y3一个顶点同属于多边形两条边的端点,如果所交的顶点是左顶点或右顶点,填色因扫描交点的奇偶计数出错而出现错误。解决方法:删去左右顶点的入边的终点,(即1-2边)123123对于左顶点,(x1,y1),(x2,y2)改为 (x1

13、,y1),(x2-1/m,y2-1)对于右顶点,(x1,y1),(x2,y2)改为 (x1,y1),(x2+1/m,y2+1)删去水平边123123水平边处理 删去水平边2.3.3 种子填色算法已知多边形边界位置及颜色以及多边形内的一点(x,y)位置。(x,y)方法:1.从(x,y)开始检测相邻位置以确定它们是否是边界颜色,若不是,则用填充颜色涂色,并检测其相邻位置。2.直至检测完所有象素。常用的:四邻法和八邻法四邻法不能通过狭窄区域种子填色算法void seed_filling(x,y,fill_color,boundary_color)int x,y,fill_color,boundary_color;int c;c=inquire_color(x,y);if(cboundary_color)&(cfill_color)setpixel(x,y,fill_color);seed_filling(x,y+1,fill_color,boundary_color);seed_filling(x,y-1,fill_color,boundary_color);seed_filling(x-1,y,fill_color,boundary_color);seed_filling(x+1,y,fill_color,boundary_color);种子填色算法种子填色算法(上,下,左,右)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(最新计算机图形学第二章a课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|