APP下载

基于Bresenham算法圆弧的设计与算法分析

2021-07-13唐启见湖南软件职业学院

现代经济信息 2021年18期
关键词:区域

唐启见 湖南软件职业学院

一、圆的构建

圆形是在GUI设计过程中不可规避的重要图形,可以通过确定“一点一线”来描述一个圆形,“一点”为圆心,“一线”为圆的半径,圆心确定了圆的位置,半径确定了圆的大小。圆形及圆弧的生成算法主要有数值微分法、Bresenham画圆算法和中点画线法等。

由于圆形是一个对称的结构,不但左右对称,而且中心对称,所以利用Bresenham画圆算法只需要绘制出圆的一段圆弧,然后通过对称复制的方法即可实现整个圆的绘制。首先确定目标圆的圆心,然后以圆心为坐标原点建立对称坐标系,如先绘制第一象限的1/8段圆弧(如图1所示)。设最先确定的逼近像素点Pi-1的坐标为(xi-1,yi-1),那么在圆弧附近有两个或者多个逼近像素点,如图1中的Si(xi-1+1,yi-1)和Ti(xi-1+1,yi-1-1)点,在这两个点的选择时需要计算这两个点离理论圆弧的距离,选择离理论圆弧比较近的那个点作为圆弧构建的下一个像素点,以此类推,可以形成一段1/8段圆弧。下面来讨论一下Si点和Ti点到理论圆弧的距离,设Si点和Ti点到理论圆弧的距离分别为D(Si)、D(Ti),计算公式如下:

图1 Bresenham算法构建1/8段圆弧

因为Si点和Ti点的坐标分别为(xi-1+1,yi-1)、(xi-1+1,yi-1-1),那么Si点和Ti点分别离坐标原点即圆心的距离的平方分别为:(xi-1+1)2+yi-12、(xi-1+1)2+(yi-1-1)2,将它们与圆的半径的平方做差就可以得出Si点和Ti点离理论圆弧的距离大小了。假设Si点在圆弧的外部,Ti点在圆弧的内部。

D(Si)=[(xi-1+1)2+yi-12]-R2

D(Ti)=R2-[(xi-1+1)2+(yi-1-1)2]

令di=D(Si)-D(Ti),如果di>0,说明Ti点比Si点更靠近理论圆弧,即选择Ti点更合适;反之选择Si点。

di=D(Si)-D(Ti)=[(xi-1+1)2+yi-12]-2R2+[(xi-1+1)2+(yi-1-1)2] (1)

将i+1代入(1)式中,得:

di+1=[(xi+1)2+yi2]-2R2+[(xi+1)2+(yi-1)2]

将di+1-di,得:

di+1-di=2[(xi+1)2-(xi-1+1)2]+(yi2-yi-12)+(yi-1)2-(yi-1-1)2

如果di≥0,则选择Ti点,即:

xi=xi-1+1,yi=yi-1-1,di+1=di+4(xi-1-yi-1)+10

若di<0,则选择Si点,即:

登录APP查看全文

猜你喜欢

区域
分割区域
探寻区域创新的密码
基于BM3D的复杂纹理区域图像去噪
小区域、大发展
论“戎”的活动区域
区域经济
关于四色猜想
分区域
公司治理与技术创新:分区域比较
基于严重区域的多PCC点暂降频次估计