- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
椭圆的算法原理
圆心在原点、长半轴为 a短半轴为b的椭圆方程的隐函数表达
式为:
2 2 2 2 2^2
F (x, y)二 b x ay - a b = 0
椭圆将平面划分成三个区域:对于椭圆上的点, F(x ,
y) = 0;对于椭圆外的点,F (x, y) 0;对于椭圆内的点, F (x, y)v 0,如下图所示。
考虑到椭圆对称性,可以用对称轴 x= 0, y= 0,把椭圆
分成4等份。只要绘制出第一象限内 1/4椭圆弧,如图3-10
的阴影部分I和H所示,根据对称性就可绘制出整个椭圆, 这称为四分法绘制椭圆算法。已知第一象限内的点
P (x, y),可以顺时针得到另外 3个对称点:P (x, — y), P
(-x,— y), P (— x, y)。
在处理第一象限的1/4椭圆弧时,进一步以法矢量两个 分量相等的点把它分为两部分,上半部分I和下半部分H。 该椭圆上一点P (x, y)处的法矢量为:
2a2yjdF dF
2a2yj
N (x, y) i 厂 2b xic x c y
式中,i和j是沿x轴向和沿y轴向的单位矢量。
在图3-11所示的部分I的 AC椭圆弧段,法矢量的x向 分量小于y向分量,斜率 k处处满足|k|v 1, |^x| △ y|, 所以x方向为主位移方向;在C点,法矢量的x向分量等于 y向分量,斜率 k满足k =— 1, △ x|=|Ay|;在部分□的 CB椭圆弧段,法矢量 x向分量大于y向分量,斜率k处处 满足|k| 1, |^y| △ x|,所以y方向为主位移方向。
,b2
,b2/ a2 b2
图 3-11
椭圆的中点Bresenham算法的原理:在部分I:每次在 主位移x方向上走一步,y方向上退不退步取决于中点偏差 判别式的值;在部分每次在主位移方向 y上退一步,x
方向上走不走步取决于中点偏差判别式的值。
A(0, b) 4
B (a, 0)
B (a, 0)
图3-12輛圖中点馭/n血尊法原理
先考虑图3-12所示部分I的AC段椭
圆弧。此时中Bresenham画椭圆算法要从A
J 2 +沪)顺时针确(0, b)到
J 2 +沪)顺时针确
a2 + b2 ,
a2 + b2 , b
定顺时针确定最佳逼近于该段椭圆弧的像 素点集Q
由于x方向为主位移方向,假定当前点是 P (xi, yi),
下一步只能在正右方的像素 Pu (x i+ 1, y i)和右下方的像
素 Pd(x i+ 1,yi — 1)中选取。
再考虑图3-12所示部分CB段椭圆弧。此
时中Bxesenham?椭圆算法要从C
(/(a?U)
(/
(a?U)顺时针确定最佳逼近于该段椭圆弧
b2
/ 2 +h2 )到”
像素点集。
由于y方向为主位移方向,假定当前点是 P(xi,yi),
下一步只能在正下方像素 Pl (x i, y i - 1)和右下方的像素
Pr (x i + 1, yi — 1)中选取。
1、构造上半部分I中点偏差判别式
在上半部分I, x方向每次加1, y方向上减不减1取决 于中点偏差判别式的值。从 P (xi, yi)走第一步,为了选
取下一像素点的,需将 Pu (x i + 1, y i )和Pd (x i + 1, yi
-1)的中点M (x i + 1, y i— 0.5)代入隐函数,构造中点 偏差判别式:
di 二卩仏皿)十(人 1$ -0.5)=『以 1)2 a2A —0.5)2—a2b2
当d10时,中点M在椭圆内,下一像素点应点亮 Pu, 即y方向不退步;当 d0时,中点M在椭圆外,下一像素 点应点亮Pd,即y方向退一步;当 d = 0时,中点M在椭 圆上,Pu、Pd和椭圆的距离相等,点亮 Pu或Pd均可,约
定取Pd,如图3-13所示。
因 itk 1^1 = “
兀 (1 0)
1 (心)
Pu Cxi+1, yD
Cxi, yi)
Cxi, yi)
2、上半部分I的递推公式
图3-13中,为了能够继续判断椭圆上的每个点, 需要给
出中点偏差判别式d1的递推公式和初始值。
1_i—『i-M「)?——■O——()—OM
1
_i
—
『i-M
「)
?——
■O——(
)—
O
M (xi +
Q
dKO
p
1,
--M () I + 2, yi-0.5)
4
M Cx
Cxi, yD
Mlxi +
Q
d1^0
3.5)
3、中点偏差判别式的递推公式
现在如果考虑主位移方向再走一步,应该选取哪个中点
代入中点偏差判别式以决定应该点亮的像素,如图 3-14所
示,分两种情况讨论。
⑴当d10时,下一步的中点坐标为:
M (x i+ 2, y i-0.5)。所以下一步中点偏差判别式为:
%+i)二尸(兀 +2」—0.5)二护(兀 +2丫+於@-0.5)2-^2
二
文档评论(0)