椭圆的中点生成算法

本文介绍了椭圆的中点生成算法,利用椭圆的对称性,仅需计算四分之一椭圆即可得到完整椭圆。算法分为两部分,针对斜率绝对值小于1和大于1的区域,通过决策参数P来确定下一步的坐标更新。文章包含详细的步骤解释及C++实现代码,展示了如何在不同象限绘制椭圆并进行中心位置的平移。
摘要由CSDN通过智能技术生成

椭圆对称性质原理:

1)圆是满足x轴对称的,这样只需要计算原来的1/2点的位置;

2)圆是满足y轴对称的,这样只需要计算原来的1/2点的位置;

通过上面分析可以得到实际上我们计算椭圆生成时候,只需要计算1/4个椭圆就可以实现对于所有点的生成了。

例如:分析出来目标点(x,y)必然存在(x,-y),(-x,y),(-x,-y)的另外3个点。关于中心画圆算法,通过计算x = 0 y = 0 1/4椭圆的范围,然后通过对称原理得到其他3/4个点的信息。(R2表示椭圆厂轴的半径)

椭圆中点生成算法是将椭圆在第一象限中分为两个部分:

1)对于斜率绝对值小于1的区域内在x方向取单位量;

2)对于斜率绝对值大于1的区域内在y方向取单位量;

斜率可以通过椭圆的标准方程中获得为

K = - (ry*ry)*x/(rx*rx)*y;

这里中点椭圆生成算法同样和Bresenham算法有很多相似之处,同样有一个决定下一个位置的关键值P来做权衡处理。在中点画椭圆算法中,通过平移的方法将假设圆心在坐标原点,然后计算,最后再平移到真实原心位置。

 

中点椭圆算法内容:

1 输入椭圆的两个半径r1r2,并且输入椭圆的圆心。设置初始点(x0,y0)的位置为(0,r2);

2 计算区域1中央决策参数的初始值

p = ry*ry - rx*rx*ry + 1/4*(rx*rx);

3 在区域1中的每个Xn为止,从n = 0 开始,直到|K|(斜率)小于-1时后结束;

1)如果p < 0 ,绘制下一个点(x+1,y),并且计算

p = p + r2*r2*(3+2*x);

2)如果P >=0 ,绘制下一个点(x+1,y-1),并且计算

p = p + r2*r2*(3+2*point.x) - 2*r1*r1*(y-1)

4 设置新的参数初始值;

p = ry*ry(X0+1/2)*(X0+1/2) + rx*rx*(Y0-1) - rx*rx*ry*ry;

5 在区域2中的每个Yn为止,从n = 0开始,直到y = 0时结束。

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值