- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2000年3月 本章内容 直线的扫描转换 圆与椭圆的扫描转换 区域填充 二维裁剪 字符生成 反走样 第二节 圆与椭圆的扫描转换 圆的扫描转换 中点画圆算法 Bresenham画圆算法 内接正多边形迫近法 椭圆的扫描转换 中点画法 若干相关问题 圆的表示 代数离散法 圆的属性分析 圆的扫描转换的数学模型 找到逼近如下圆弧线的像素点集合: 中点画圆算法的原理 续: 结论 二阶差分方法 任意多项式均可使用该方法实现增量计算 中点画圆算法伪代码 Void MidPointCircle(int r, int color) { int x,y,d; x=0;y=r;d=1-r; delta1=3;delta2=5-2r; drawpiexl(x,y,color); while(yx){ if(d0){ d+=delta1; delta2+=2; } else{ d+=delta2; delta2+=4; y--} delta1+=2; x++; drawpiexl(x,y,color); drawotherpiexl(x,y,color); }//while }//end Bresenham画圆算法(1) 原理:选择与圆心距离与半径之差较小的一点。 Bresenham画圆算法(2) Bresenham画圆算法(3) Bresenham画圆算法(4) 初始值的计算 圆的内接正多边形迫近法 基础知识(1)--三角函数 基础知识(2)--矩阵表示 基础知识(3)--矢量及其运算 圆的内接正多边形迫近法(1) 圆的内接正多边形迫近法(2) 使用增量计算确定多边形顶点: 圆的内接正多边形迫近法(3) 圆的内接正多边形迫近法(4) 圆的内接正多边形迫近法(5) 圆的等面积正多边形迫近法 原理: 椭圆的扫描转换算法 椭圆弧的几何特点(1) 定义:到两个定点的距离之和为定长的点的集合。 假设:椭圆中心在坐标原点。 椭圆弧的几何特点(2) 椭圆弧上一点处的切线 椭圆弧的几何特点(3) 椭圆的扫描转换 第一象限内椭圆弧的划分 割点位置计算: 切线斜率为–1的点 梯度的定义: 椭圆的中点扫描转换算法 椭圆弧上部的扫描转换(1) 根据决策参数的取值,成立: 椭圆弧上部的扫描转换(2) 初始条件: 椭圆弧上部的扫描转换(3) 椭圆弧上部的扫描转换(4) 椭圆弧上部的扫描转换(5) 椭圆弧下部的扫描转换(1) 同理对椭圆弧的下部进行扫描转换。 椭圆弧下部的扫描转换(2) 椭圆弧的扫描转换 从(0,ry)开始,绘制椭圆弧的上部,采用判别参数为d1i; 当绘制当前点满足切线斜率大于-1时,椭圆弧上部绘制完成; 从(rx,0)开始,绘制椭圆弧的下部,采用判别参数为d2i; 当绘制当前点的坐标与椭圆弧上部的最后一点交叉时,椭圆弧下部绘制完成; 根据椭圆的对称性完成整个椭圆的绘制. 若干相关问题(1) 若干相关问题(2) 直线绘制算法的并行实现: 任何线生成算法都可以通过线段分割而适用于并行实现。 有足够多的处理器时,按照屏幕的不同区域分配处理器。 若干相关问题(3) 图元几何尺寸的保留: 在扫描转换过程中注意象素集合的实际尺寸,如线段的始末点坐标的定义。 不同图元的尺寸变化不同。 若干相关问题(4) 线宽控制 标准线宽的直线被扫描转换为一个象素宽的直线段。 其它线宽的实现可以采用笔或刷的方式。 通过沿相邻平行线路径画额外的象素可以定义标准线宽的正整数倍的其它线宽。 线刷子方法实现的线宽控制:分水平和垂直两种。 垂直线刷子:一般地,对于任意线段,当某点切矢斜率在[-1,1]之间时,扫描转换过程是:给定x以固定步长,确定y方向的增量,所以可用垂直线刷子扫过象素,即得到所要求的线段。 水平线刷子:对于其切矢斜率在[-1,1]之外的线段,可用水平线刷子扫过即可。 ? 线刷子的设计简单高效。但它有以下的缺陷 若干相关问题(6) 线型控制 线型属性:实线、虚线和点划线等。 线型的实现方式:通过设置沿线路径显示的实线段的长度和间距来修改画线算法得到不同类型的线。 具体地,用布尔数组定义出指定的类型如虚线:1111100000(1表示绘制点,0表示不绘制点),并使其在直线段的有效定义范围内不断重复,即扫描转换后得到的象素点依序与线型定义数组一一对应,并根据线型定义数组决定该象素点的绘制与否。 若干相关问题(7) 采用上述固定划线长度的实现方法会在直线方向定义不同时产生出不等长的划线段。 原因在于相同个数的象素沿不同方向将生成不同长度的线段。 为实现精确的线型定义,应按照线的斜率调整线型
原创力文档


文档评论(0)