计算机地图制图原理与方法-基本图形生成算法.ppt

计算机地图制图原理与方法-基本图形生成算法.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 基本图形生成算法图形 基本图形的生成 3.2、直线的生成算法  即是找出逼近直线的一组象素,按扫描线顺序,对这些象素进行写操作。 3.2.1. 数值微分法(DDA) 假定直线的起点、终点分别为:(X0,Y0), (X1,Y1),且都为整数。  直线的斜率:    k = (Y1-Y0)/(X1-X0) 为讨论方便,假定 |k|=1 直线方程:    Y= k*X+B 设X的增量为Dx=1,可得如下Y的增量方程: Yi+1 = k Xi+1 + B = k (Xi + Dx) + B = kXi + B + k Dx = Yi + k Dx = Yi + k 画直线的DDA算法 从起点开始朝终点方向 画点(x, y) 在x轴或y轴上走一个单位长(沿x轴还是y轴取决于直线的倾斜角) 由直线的倾斜程度(斜率或斜率的倒数)决定另一坐标的增量,获得下一点的座标 将x或y四舍五入,得(x, y) 若(x, y)不是终点则继续 void DDALine(int x0,int y0,int x1,int y1,int color) { int x; float dx, dy, y, k; dx = x1-x0; dy=y1-y0; k=dy/dx;y=y0; for (x=x0;x= x1;x++) {SetPixel (x,int(y+0.5),color); y=y+k; } } 中点画线算法示例 原理: void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy; float k, e; dx = x1-x0;dy = y1- y0;k=dy/dx; x=x0,;y=y0; e=-0.5; for (i=0;i=dx;i++) { Setpixel (x, y, color); x=x+1;e=e+k; if (e≥0) { y++; e=e-1;} } } 思考题: 如何去除上述程序中的浮点运算、乘除法? 程序改进 void Bresenhamline (int x0,int y0,int x1, int y1,int color) { dx = x1-x0,;dy = y1- y0,;e=-dx; x=x0; y=y0; for (i=0; i=dx; i++) {Setpixel (x, y, color); e=e+2*dy; x++; if (e≥0) { y++; e=e-2*dx} } } Bresenham画线算法示例 关于线型线宽的说明 实线就是将选到所有的点都画出来 虚线就是在所选的点中选相邻的几个画,然后接着相邻的几个不画 点线就是在所选的点中,每隔几个就画一个 线宽只对实线有效,实际上就是根据其倾斜角然后选定是在选中的点的(x+-width/2, y)或者(x, y+-width/2)也画出来,相当于一把近似垂直于直线的刷子 关于多边形和圆形的作图 多边形 确定多边形的顶点 用直线顺序连接起来 圆形 根据圆的对称性将其扩展到四个象限即可获得整圆 二、圆的生成算法 即是找出逼近圆的一组象素,按扫描线顺序,对这些象素进行写操作。 下面仅以圆心在原点的圆为例,讨论圆的生成算法。 1. 圆弧扫描算法 X2 + Y2 = R2 Y = ?Sqrt(R2 - X2) 在一定范围内,每给定一X值,可得一Y值。 当X取整数时,Y须圆整。 缺点:浮点运算,开方,圆整,不均匀。 2. 角度DDA法 x = x0 + Rcos? y = y0 + Rsin? dx =- Rsin?d? dy = Rcos?d? xn+1 =x n + dx y n+1 =y n + dy xn+1 =x n - (y n - y 0 )d?

文档评论(0)

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

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

1亿VIP精品文档

相关文档