正负算法画圆_第1页
正负算法画圆_第2页
正负算法画圆_第3页
全文预览已结束

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——正负算法画圆2.2.3正负算法生成圆

正负法是利用平面曲线将平面划分成正负区域,对当前点产生的圆函数进行符号判别,利用负反馈调整以决定下一个点的产生来直接生成圆弧。

一、正负画圆算法描述

设要显示圆的圆心在原点(0,0),半径为R,初始点的坐标为(0,R),顺时针生成八分之一圆,令:F(x,y)=x2+y2-R2

则圆的方程为:

F(x,y)=0(2-27)当点(x,y)在圆内时,则F(x,y)0;当点(x,y)在圆上时,则F(x,y)=0;

二、正负画圆算法思想

现以下图的AB弧为例,来说明正负画圆法(顺时针生成圆)。

假设当前点为Pi(xi,yi),取下一个点Pi+1(xi+1,yi+1)的原则是:

1、当F(xi,yi)≤0时:取xi+1=xi+1,yi+1=yi。即向右走一步,从圆内走向圆外。对应图(a)中的从Pi到Pi+1。

2、当F(xi,yi)>0时:取xi+1=xi,yi+1=yi-1。即向下走一步,从圆外走向圆内。对应图(b)中的从Pi到Pi+1。

由于向圆内或向圆外走取决于F(xi,yi)的正负,因此称为正负法。下面分两种状况求出F(xi,yi)的递推公式:

(1)当F(xi,yi)≤0时,向右走,取xi+1=xi+1,yi+1=yi,则

F(xi+1,yi+1)=F(xi+1,yi)=(xi+1)2+yi2-R2=(xi2+yi2-R2)+2xi+1=F(xi,yi)+2xi+1(2-28)(2)当F(xi,yi)>0时,向下走,取xi+1=xi,yi+1=yi-1,则

F(xi+1,yi+1)=F(xi,yi-1)=xi2+(yi-1)2-R2=(xi2+yi2-R2)-2yi+1=F(xi,yi)-2yi+1初始时,x=0,y=R,故

F(0,R)=(02+R2)-R2=0公式(2-28)、(2-29)和(2-30)就构成正负画圆算法的核心。给象素坐标(x,y)及F赋初始值后,进入循环画点;

画点后,根据F的符号进行F值的递推和下一个点的获取,直到x>y为止。同前面介绍的一样,利用圆的八分对称性,循环一次,画八个点。

三、正负画圆算法实现

(2-30)(2-29)注意:初值不同、圆的生成方向不同时,当前点和下一个点的获取原则是不同的,见下图。例如,初始点(R,0),逆时针生成圆,从图(b)可知:若当前点Pi在圆内,则下一点Pi+1(xi,yi+1),即向上走一步;若当前点Pi在圆外,则下一点Pi+1(xi-1,yi),即向左走一步;

(a)顺时针生成圆(b)逆时针生成圆

四、正负画圆算法演示

五、正负画圆算法特点

物理意义明白,程序中只含整数运算,因此算法速度快。

六、正负画圆算法程序

//顺时针生成

温馨提示

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

评论

0/150

提交评论