椭圆生成算法
非严格地说,椭圆是拉长了的圆。还可以说椭圆是经过修改的圆,它的半径从一个方向的最大值变到其正交方向的最小值。椭圆内部这两个正交方向的直线段称为椭圆的长轴和短轴。
椭圆的特征
通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,那么椭圆的通用方程可以表示为
用焦点坐标F1=(x1,y1)和F2 = (x2,y2)来表示距离d1和d2,可以得到
对方程求平方,去除剩余的根,再平方,可以按照下列形式重写通用椭圆方程:
其中,系数A, B, C, D,E, F依据焦点坐标和长轴及短轴的尺寸而求得。长轴是通过焦点从椭圆的一侧到另一侧的线段。短轴是横跨椭圆的较短尺寸,它在两个焦点之间的中点位置(椭圆中心)将长轴二等分。
在任意方向指定一个椭圆的交互方法是输入两个焦点和椭圆边界上一个点。利用这三个坐标位置,就可以求出方程(3.35)中的常数。然后就可以求出方程(3.36)中的系数,并利用其生成沿椭圆路径的像素。
如果短轴和长轴与坐标轴方向平行,那么椭圆方程就可以大大简化。图3.22给出了一个“标准位置”的椭圆。长轴和短轴平行于x和y轴。此例中参数rx标识长轴,参数ry标识短轴。对于图3.22中的椭圆方程,可以借助于椭圆中心坐标和参数rx和ry而改写为
利用极坐标:r和θ,也可以按照参数方程的形式来描述标准位置的椭圆:
称为椭圆离心角(eccentricangle)的θ沿其包围圆的圆周进行计量。如果rx> ry,包围圆的半径是r = rx(参见图3.23 ),否则,包围圆的半径是r = ry
和圆的算法一样,考虑椭圆的对称性可以进一步减少计算量。标准位置的椭圆在四分象限中是对称的但与圆不同,它在八分象限中不是对称的。因此,我们必须计算一个象限中椭圆曲线的像素位置,再由对称性得到其他三个象限中的像素位置(参见图3.24 )。