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

上传人(卖家):三亚风情 文档编号:3256986 上传时间:2022-08-13 格式:PPT 页数:66 大小:789.50KB
下载 相关 举报
计算机图形学第二章a课件.ppt_第1页
第1页 / 共66页
计算机图形学第二章a课件.ppt_第2页
第2页 / 共66页
计算机图形学第二章a课件.ppt_第3页
第3页 / 共66页
计算机图形学第二章a课件.ppt_第4页
第4页 / 共66页
计算机图形学第二章a课件.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、二.绘图函数 1.点 void putpixel(int x,int y,int color);color 符号名,取值为015 void moveto(int deltax,int deltay);例题:当前坐标CP putpixel(100,200,5);(100,200)moveto(50,30);(50,30)moverel(10,20);(60,50)第1页,共66页。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);v

2、oid linerel(int deltax,int deltay);当前坐标(x+deltax,y+deltay)例题:arc(40,40,0,120,30);第2页,共66页。3.矩形 void rectangle(int left,int top,int right,int bottom);左上角坐标(left,top);右下角坐标(right,bottom);第3页,共66页。5.多边形 void drawpoly(int numpoints,int*polypoints);numpoints:为多边形的顶点数 polypoints:各顶点坐标的整数序列 共有2*numpoints个整

3、数,若第一个点和最后一个点坐标相同,则画出封闭多边形,否则为多边形折线第4页,共66页。多边形例题 int p2*6=45,50,75,30,85,75,180,65,70,5,45,50;drawpoly(6,p);(45,50)第5页,共66页。三.颜色控制 1.void setbkcolor(int color);默认色为黑色 2.void setcolor(int color);设置当前画线颜色,默认色为白色(15)3.int getbkcolor(void);返回当前背景色 4.int getcolor(void);返回当前绘图颜色 5.int getpixel(int x,int

4、y);第6页,共66页。4.圆,圆弧和椭圆 void circle(int x,int y,int radius);void arc(int x,int y,int stangle,int endangle,int radius);起始角stangle,终止角endangle 0。-360。void ellipse(int x,int y,int stangle,int endangle,int xradius,int yradius);从起始角stangle开始画椭圆弧至终止角endangle,xradius,yradius分别为方向x,y的半径第7页,共66页。0 BLACK1 BLUE2

5、 GREEN3 CYAN 4 RED5 MAGENTA6 BROWN7 LIGHTGRAY第8页,共66页。8 DRAKGRAY9 LIGHTBLUE10 LIGHTGREEN11 LIGHTCYAN12 LIGHTRED13 LIGHTMAGENTA14 YELLOW15 WHITE 第9页,共66页。6.void setlinestyle(int linestyle,unsigned upattern,int thickness);第10页,共66页。Linestyle取值:SOLID-LINE 0 实线 DOTTED-LINE 1 点线 CENTER-LINE 2 中心线 DASHED-

6、LINE 3 虚线 USERBIT-LINE 4 用户定义的线 upattern仅在userbit-line时起作用第11页,共66页。thickness线宽 NORM-WIDTH 1 一个象素宽 THICK-WIDTH 3 三个象素宽第12页,共66页。例题:setlinestyle(DASHED-LINE,0,THICK-WIDTH);或 setlinestyle(3,0,3);line(300,50,300,200);第13页,共66页。上机作业2:画出如下图形第14页,共66页。第二章 基本图形的生成和计算 如何在指定的输出设备上描述构造基本二维几何图形(点、直线、圆、椭圆、多边形、字

7、符串及其相关属性等)第15页,共66页。2.1 直线的生成算法图形的扫描转换图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。图5-1 用一系列的象素点来逼近直线用一系列的象素点来逼近直线第16页,共66页。2.1 直线的生成算法2.1.1直线DDA算法(Digital Differential Analyser)设直线起点(x1,y1),终点(x2,y2)xy(x1,y1)(x2,y2)第17页,共66页。则斜率mm=(y2-y1)/(x2-x1)=dy/dxxy(x1,y1)(x2,y2)dydx第18页,共66页。xy(x1,y1)(x2,y2)dydxdy/

8、dx=Dy/Dxxi+1=xi+Dxyi+1=yi+DyDy=m*Dx(xi,yi)(xi+1,yi+1)DxDy第19页,共66页。xy1b1a4a4b3b3a2a2bxi+1=xi+1yi+1=yi+mxi+1=xi-1yi+1=yi-m(x1,y1)(x2,y2)Oxi+1=xi+1/myi+1=yi+1第20页,共66页。象限 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 -1结论:1.当|m|1时,|Dx|=1,|Dy|=m 否则|Dx|=1/m,|Dy|=1第21页,共6

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

10、1yi+1d2,则yi+1=yi+1,否则yi+1=yid1=y-yi d2=yi+1-y第29页,共66页。d1-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第30页,共66页。由于dx0,则Pi可用来判断符号 Pi+1=2xi+1dy-2yi+1dx+2dy+(2b-1)dx =2(xi+1)dy-2yi+1dx+2dy+(2b-1)dx

11、 =Pi+2dy-2yi+1dx+2yidx =Pi+2dy-2(yi+1-yi)dxPi=2xidy-2yidx+2dy+(2b-1)dx第31页,共66页。P1=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*x1第32页,共66页。1.画点(x1,y1)dx=x2-x1 dy=y2-y1 P1=2dy-dx i=12.xi+1=xi+1 当Pi0,则 yi+1=yi+1

12、 ,否则yi+1=yi3.画点(xi+1,yi+1)画线步骤:P1=2dy-dx第33页,共66页。4.求Pi+1,当Pi0 则 Pi+1=Pi+2dy-2dx 否则Pi+1=Pi+2dy5.i=i+1 如i0,且m1,则交换x,y之间规则第40页,共66页。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坐标但圆周上的点不均匀即象素位置间的间距不一致。第41页,共66页。12第42页,共66页。2.2 圆的生成算法2.极坐标法 x=xc

13、+rcos y=yc+rsinr0,/4,利用对称法则 第43页,共66页。(x,y)yy=-xy=x(y,x)(-y,x)(-x,y)(-x,-y)(-y,-x)(y,-x)(x,-y)第44页,共66页。2.2 圆的生成算法2.2.2 圆的Bresenham算法 Bresenham圆算法通过比较象素与圆的距离的平方而避免了平方根运算。设圆心坐标(0,0)半径为r起点(0,r)顺时针方向1/8圆周xi+1=xi+1 yi+1=yi或yi+1=yi-1第45页,共66页。xyxixi+1yiyyi-1d21/2d11/2第46页,共66页。2.2 圆的生成算法y2=r2-(xi+1)2d1=y

14、i2-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(yi+12+1-yi2)当P0,则yi+1=yi,否则yi+1=yi-1第47页,共66页。2.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

15、-yi2)-2(yi+1-yi)当P1(x1=0,y1=r)P1=2+r2+(r-1)2-2r2 =3-2r第48页,共66页。2.3 区域填充算法2.3.1基本知识1.区域填充定义:给出一个区域的边界,要求对边界范围内的所有象素单元赋予指定的颜色代码。最常用的是多边形填色。第49页,共66页。2.3 区域填充算法2.数学方法:扫描交点的奇偶数判断法1)将多边形画在平面上2)用一根水平扫描线从左到右通过多边形,从而与多边形的边界相交,扫描线与边界相交奇数次后进入多边形,偶次数后走出多边形。第50页,共66页。第51页,共66页。ABC错判错判错判第52页,共66页。1.扫描线填色算法:按扫描线

16、顺序计算扫描线与多边形的相交区间,再用要求的颜色或图案显示这些区间的象素,需提供多边形各顶点的坐标填色算法2.种子填色算法:要求给出边界颜色 特征区域内的一个点的坐标。第53页,共66页。2.3.2 扫描线填色算法1.用水平扫描线由上往下扫描多边形2.每根扫描线与多边形各边产生一系列交点,采用递归算法3.将交点按x坐标进入分类,将分类后的交点成对取出,作为两个端点,以所需要填的色彩画水平直线。第54页,共66页。扫描线与边的求交点方法采用递归算法:以(x1,y1),(x2,y2)为端点的边与第i+1条扫描线的交点:yi+1=yi-1 ,xi+1=xi-(x2-x1)/(y2-y1)即 xi+1

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

18、123第58页,共66页。水平边处理 删去水平边第59页,共66页。2.3.3 种子填色算法已知多边形边界位置及颜色以及多边形内的一点(x,y)位置。(x,y)第60页,共66页。方法:1.从(x,y)开始检测相邻位置以确定它们是否是边界颜色,若不是,则用填充颜色涂色,并检测其相邻位置。2.直至检测完所有象素。第61页,共66页。常用的:四邻法和八邻法第62页,共66页。四邻法不能通过狭窄区域第63页,共66页。种子填色算法void seed_filling(x,y,fill_color,boundary_color)int x,y,fill_color,boundary_color;int

19、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);第64页,共66页。种子填色算法第65页,共66页。种子填色算法(上,下,左,右)第66页,共66页。

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

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

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


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

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


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