计算机图形生成算法(线).ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形生成算法(线)

计算机图形生成算法 ?内容: 目标:掌握二维图形学的基本思想,理解扫描转换法生成图形的基本原理。 要求:掌握图形的扫描转换、区域填充、裁剪、反走样等概念。 掌握直线段的扫描转换算法、区域填充的扫描线算法、多边形裁剪算法、反走样的基本思想。 熟悉多边形的扫描转换算法、区域采样的基本思想。 了解圆弧的扫描转换算法、字符的基本概念。 第三章 输出图元 直线段扫描转换 DDA算法 Bresenham画线算法 中点画线法 圆弧扫描转换 Bresenham画圆算法 中点画圆算法 椭圆弧扫描转换 填充区域图元 输出图元 输出图元是基本几何结构。 输出图元种类:点、直线线段、圆、圆锥曲线、二次曲面、样条线段、多边形填色区域、字符串等。 图元的生成   所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换。通常也称扫描转换图元。 像素逼近示意图 3.1 直线的扫描转换算法 直线的绘制要求: 1.直线要直 2.直线上的点要准确,即无不定向性和断裂情况 3.直线的亮度、色泽要均匀 4.画线的速度要快 5.要求不同直线可具有不同的色泽、亮度、线型等 直线的扫描转换算法 提出问题:对于给定直线两端点P0(x0,y0)和P1(x1,y1),如何在屏幕上画出该直线。 三个常用算法: 数值微分法(DDA) Bresenham算法 中点画线法 3.1.1 DDA算法(Digital Differential Algorithm) 3.1.2 直线的Bresenham算法 2.1.3 中点画线法 基本思想 当前象素点为(xp, yp) 。下一个象素点为P1或P2。 设M=(xp+1, yp+0.5),为p1与p2 之中点,Q为理想直线与x=xp+1 垂线的交点。将Q与M的y坐标进 行比较。 当M在Q的下方,则P2 应为 下一个象素点; M在Q的上方,应取P1为下一点。 构造判别式:d=F(M)=F(xp+1,yp+0.5) =a(xp+1)+b(yp+0.5)+c 其中a=y0-y1, b=x1-x0, c=x0y1-x1y0 当d0,M在L(Q点)下方,取右上方P2为下一个象素; 当d0,M在L(Q点)上方,取右方P1为下一个象素; 当d=0,选P1或P2均可,约定取P1为下一个象素; d是xp, yp的线性函数,因此可采用增量计算,提高运算效率。 若当前象素处于d?0情况,则取正右方象素P1(xp+1, yp), 要判下一个象素位置,应计算 d1=F(xp+2, yp+0.5)=a(xp+2)+b(yp+0.5)=d+a; 增量为a 若d0时,则取右上方象素P2(xp+1, yp+1)。要判断再下一象素,则要计算 d2= F(xp+2, yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b ;增量为a+b 画线从(x0, y0)开始,d的初值 d0=F(x0+1, y0+0.5)=F(x0, y0)+a+0.5b =a+0.5b。 可以用2d代替d来摆脱小数,提高效率。 令 d0=2a+b, d1=2a, d2=2a+2b,我们有如下算法 。 例:用中点画线法P0(0,0) P1(5,2) a = y0-y1=-2, b = x1-x0 = 5 d0 = 2a+b = 1, d1= 2a = - 4, d2 = 2(a+b)=6 i xi yi d 1 0 0 1 2 1 0 -3 3 2 1 3 4 3 1 -1 5 4 2 5 void Midpoint Line (int x0,int y0,int x1, int y1,int color) { int a, b, d1, d2, d, x, y; a=y0-y1, b=x1-x0, d=2*a+b; d1=2*a, d2=2* (a+b); x=x0, y=y0; setpixel(x, y, color); while (xx1) { if (d0) {x++, y++, d+=d2; } else {x++, d+=d1;} setpixel (x, y, color); } /* while */ } /* mid PointLine */ 齐次坐标(Homogeneous Coordinate) 在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档