椭圆对称性质原理:
(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 输入椭圆的两个半径r1和r2,并且输入椭圆的圆心。设置初始点(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