中心算法画圆_第1页
中心算法画圆_第2页
中心算法画圆_第3页
中心算法画圆_第4页
中心算法画圆_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.2.2中点算法生成圆中点圆算法在一个方向上取单位间隔,在另一个方向上取的值由两种可能值的中点和圆的远近决定。 在实际处理中,通过决定变量的符号来决定像素点的选择,因此算法的效率高。一、中点圆算法的记述设显示的圆的中心为原点(0,0 ),半径为r,起点为(0,r ),终点为(,),顺时针生成八分之一圆,通过对称性扫描对全圆进行变换。为了应用中点圆法,定义圆函数F(x,y)=x2 y2-R2(2-19 )任意点(x,y )的相对位置可以通过圆函数的符号来检测F(x,y )零分(x,y )在数学圆内=0分(x,y )在数学圆上零点(x,y )在数学圆之外(2-20 )如图所示,在当前的点为Pi(xi,yi )且顺时针生成圆的情况下,下一点只能取右侧的点E(xi 1,yi )或右下方的点SE(xi 1,yi-1 )。虚线算法假设m是e和SE的中间点,则F(M)0时,m是圆内(圆弧a ),这表示点e接近圆,应把点e作为下一个像素点F(M)0时,m表示在圆之外(圆弧b ),SE点接近圆,应取SE点3、F(M)=0时,e点和SE点中自由取一个即可,所以约定取SE点。二、中点圆算法思想因此,将中点m的圆函数设为决定变量di,通过增量法反复计算下一个中点m的决定变量di 1。(2-21 )以下,将反复计算中的决定变量di 1的导出分为2个状况进行研究。1、参照图(a ),如果是di0则选择e点,下一个中点,此时的新的决定变量如下(2-22 )(a)(di0 )虚线算法从式(2-22 )减去(2-21 )后di 1=di 2xi 3(2-23 )参照图(b ),如果di0,选择SE点,下一个中点,此时的新的决定变量如下(2-24 )(b)(di0 )虚线算法从式(2-24 )减去(2-21 )后di 1=di 2(xi-yi) 5(2-25 )使用递归迭代计算这八分之一圆弧上的每个点。 每次迭代都需要两个阶段的处理(1)用上次反复计算出的决定变量的符号来决定这次选择的点。(2)关于这次选择的点,重新递归地计算新的决定变量的值。剩馀的问题在于,如下图所示,计算初始决定变量d0。 在初始点(0,r )处,顺时针生成八分之一圆,下一中点m的坐标为(2-26 )生成圆的初始条件和圆的生成方向三、中点圆算法的实现1、输入:圆半径r、圆心(x0,y0)2、确定初始值: x=0、y=r、d=5/4-r;3,While(x=y )举止使用八分对称性,以预定的颜色color描绘八个像素点(x,y )d0时举止y=y-1;d=d 2(x-y) 5;以下否则的话d=d 2x 3;x=x 1;以下四、中点圆算法的演示s五、中点圆算法完善在上述算法中,决定变量d用浮点数表示。 为了简化算法并摆脱浮点数,该算法全部使用整数,并使用e=d-1/4代替d。 当然,初始值d=5/4-r对应于e=1-r。 决定变量d0对应于e-1/4。 与算法中的其它d有关的公式可以直接用e替换d。 并且,由于e的初始值是整数,运算中的重复值也是整数,所以e总是整数,所以e-1/4相当于e0。 因此,可以写出完全用整数实现的中点圆算法。要求:写出用整数实现的中点画圆算法程序,机械调整,看执行结果。六、中点圆算法程序void MidpointCircle(int x0、int y0、int r、int color )举止int x,y;浮点d;x=0;y=r;d=5.0/4-r;while(x=y )举止putdot(x0,y0,x,y,颜色)PS (K0)d=x*2.0 3;else举止d=2.0*(x-y) 5;y-;以下x;以下以下putdot(x0,y0,x,y,颜色)举止putpixel(x0 x,y0 y,颜色)putpixel(x0 x,y0-y,颜色)putpixel(x0-x,y0 y,颜色)putpixel(x0-x,y0-y,颜色)putpixel(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论