书签 分享 收藏 举报 版权申诉 / 67
上传文档赚钱

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

  • 上传人(卖家):晟晟文业
  • 文档编号:4969122
  • 上传时间:2023-01-29
  • 格式:PPT
  • 页数:67
  • 大小:1.23MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《最新计算机图形学第二章a课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    最新 计算机 图形学 第二 课件
    资源描述:

    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);种子填色算法种子填色算法(上,下,左,右)

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:最新计算机图形学第二章a课件.ppt
    链接地址:https://www.163wenku.com/p-4969122.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库