§3.2圆、圆弧的生成—Bresenham算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§3.2圆的生成——Bresenham算法

条件:给定圆心(x c,y c)和半径R

约定:只考虑圆心在原点,半径为整数R的圆x2+y2.=R2。对于圆心不在原点的圆,可先通过平移转换,化为圆心在原点的圆,再进行扫

描转换,把所得到的像素集合加上一个位移量,就可以把目标圆光

栅化。

在众多圆的生成算法,如逐点比较法、角度DDA法、Bresenham算法中,Bresenham画圆法是一种最简单有效的的方法。

首先注意到只要生成一个八分圆,那么,圆的其它部分就可以通过一系列的对成变换得到。

1

2

3

4

5

6

7

8

由算法生成

y=x

第一八分圆关于y=x对称变换

第一四分圆关于x=0对称变换

上半圆关于y=0对称变换

如果以点x=0,y=R为起点按顺时针方向生成圆,则在第一象限内y是x 的单调递减函数。

要在这三个像素中选择一个使其与理想圆的距离的平方达到最小,即下

列数值中的最小者。

R

(0,R)

(R,0)

x

y

这样,从圆上任一点出发,按顺时针方向生成圆时,为了最佳逼近该圆,对于下一像素的取法只有三种可能的选择,即正右方像素、正下方像素和右下角像素,分别记作:m H、m V、m D。

(x i,y i)

(x i,y i-1)

(x i+1,y i)

(x i+1,y i-1)

m H

m D

m V

m H=|(x i+1)2+(y i)2-R2|

m V=|(x i)2+(y i+1)2-R2|

m D=|(x i+1)2+(y I-1)2-R2|

m H

(x i,y i)

(x i+1,y i)

(x i+1,y i+1)

(x i+1,y i-1)

(x i-1,y i-1)

(x i,y i-1)

m V

m D

1

2

3

5

4

圆与点(x i,y i)附近光栅格网的相交关系只有五种可能。

从圆心到右下角像素(x i+1,y i-1)的距离平方m D与圆心到圆上点的距离平方R2之差等于:

Δi=(x i+1)2+(y i-1)2-R2

如果Δi<0,那么右下角像素(x i+1,y i-1)在该圆内(图中①、②),显然这时只能取像素(x i+1,y i),即m H;或像素(x i+1,y i-1),即m D。

为了确定究竟应该选择哪一个像素,首先考察情形①,为此计算理想圆到像素m H的距离平方与理想圆到像素m D的距离平方之差,即:

=|(x i+1)2+(y i)2-R2|-| (x i+1)2+(y i-1)2-R2|

如果<0,那么圆到右下方像素(m D)的距离大于圆到正右方像素(m H)的距离。反之,如果>0,圆到正右方像素(m H)的距离较大。这样

当<0,取像素m H(x I+1,y i)

当>0,取像素m D(x I+1,y I-1)

当=0时,两者距离相等,规定取正右方像素(m H)。

对于情形①,右下方像素(m D),总是位于圆内,而正右方像素(m H)总是位于圆外,即

(x i+1)2+(y i)2-R2>0

(x i+1)2+(y i-1)2-R2<0

因此的计算可简化为:

=(x i+1)2+(y i)2-R2-[ R2 -(x i+1)2-(y i-1)2]

=2[(x i+1)2+(y i-1)2- R2]+2y i-1

=2(Δi+y i)-1

其次,考虑情形②。由于y是x的单调递减函数,所以只能选择右方像素(x i+1,y i)。因为右方像素(x i+1,y i)和右下方像素(x i+1,y i-1)这时都位于圆内,故表达式中有如下关系:

(x i+1)2+(y i)2-R2<0

i i 因此,<0。:根据与情形①相同的判别准则,这时应选像素

(x i +1,y i )。

如果Δi >0,右下角像素(x i +1,y i -1)位于圆外,(图中③、④),显然这

时只能取像素(x i +1,y i -1),即m D ;或像素(x i ,y i -1),即m V 。

为了确定究竟应该选择哪一个像素,首先考察情形③,为此计算理想圆

到像素m D 的距离平方与理想圆到像素m V 的距离平方之差,即:

’=|(x i +1)2+(y i -1)2-R 2|-| (x i )2+(y i -1)2-R 2|

如果’<0,那么圆到下方像素(m V )的距离大于圆到右下方像素(m D )的距

离。反之,如果’>0,圆到右下方像素(m D )的距离较大。这样

当‘<0,取像素m D (x i +1,y i -1)

当‘>0,取像素m V (x i ,y i -1)

当’=0时,两者距离相等,规定取右下方像素(m D )。

由于右下角像素(x i +1,y i -1)位于圆外,而下方像素(x i ,y i -1)位于圆内,所

以对于情形③,作为’分量有如下关系:

(x i +1)2+(y i -1)2-R 2>0

(x i )2+(y i -1)2-R 2<0

因此’的计算可简化为:

’’=(x i +1)2+(y i -1)2-R 2-[ R 2 -(x i )2-(y i

-1)2] =2[(x i +1)2+(y i -1)2- R 2]-2x i -1

=2(Δi +x i )-1

对于情形④,再次注意到由于y 是x的单调递减函数,因此这时需选取下

方像素(x i ,y i -1)。这时正下方和右下角两像素均位于圆外,即’的分量有如下关系:

相关文档
最新文档