1、DDA画圆算法
已知圆的方程:
角增量(弧度)的选取:
n越大,点越多,速度越慢。所以在不同精度下,对于不同半径给定不同的的精度下,对于不同的半径给定不同的角增量。为精度计划,取
2、圆扫描算法
圆的对称性:
八分圆的对称性特点。八分圆的圆周上的某点(x,y)可计算出其他七个八分圆圆周上对应的点的坐标。
2、中点画圆算法
利用圆的对称性,只讨论1/8圆(第一象限中的第二个八分圆),基本原理与中点画线算法相似。
圆的表达式,点M为P1P2的中点,。有如下结论:
若d<0则P1为下一个像素,判别式为
否则P1为下一个像素,判别式为:
d的初值为:(x0,y0=R)
改进方法A:用d-0.25代替d
改进方法B:
每当x递增1,d递增dx=2;dx初值为3
每当y递增1,d递减dy=2;dy初值为-2r+2
4、Bresenham算法
为讨论方便,仅考虑圆心在原点,半径为R的第一象限上的一段圆弧。且取(0,R)为起点,按顺时针方向绘制该1/4圆弧。
如图,HDY三像素中距离圆周边距离最小者,即为所求的像素点。
下一像素为H时,则;
下一像素为D时,则;
下一像素为V时,则;
的初值为2(1-R)
五、椭圆的扫描转换
原理和中点画圆差不多,省流:
(1)上半(x递增)
d<=0时,
d>0时,
(2)下半(y递增)
d<=0时,
d>0时,
(3)上下半
上半初始值:
初始点:(0,b)
误差项的初始值:
下半初始值(误差项):
上半终止判别: