画圆形(Bresenham算法) |
您所在的位置:网站首页 › 生成圆弧的中点算法和原理和算法 › 画圆形(Bresenham算法) |
下面先简要介绍常用的画圆算法(Bresenham算法),然后再具体阐述笔者对该算法的改进。 一个圆,如果画出了圆上的某一点,那么可以利用对称性计算余下的七段圆弧:Plot(x,y),Plot(y,x),Plot(y,-x),Plot(x,-y),Plot(-x,-y),Plot(-y,-x),Plot(-y,x),Plot(-x,y)。 1、Bresenham 画圆算法。Bresenham算法的主要思想是:以坐标原点(0,0)为圆心的圆可以通过0度到45°的弧计算得到,即x从0增加到半径,然后利用对称性计算余下的七段圆弧。当x从0增加到时,y从R递减到。 设圆的半径为R,则圆的方程为: f(x,y)=(x+1)2+y2-R2=0 (1) 假设当前列(x=xi列)中最接近圆弧的像素已经取为P(xi,yi),根据第二卦限1/8圆的走向,下一列(x=xi+1列)中最接近圆弧的像素只能在P的正右方点H(xi+1,yi)或右下方点L(xi+1,yi-1)中选择,如图1所示。Bresenham画圆算法采用点T(x,y)到圆心的距离平方与半径平方之差D(T)作为选择标准,即 D(T)=(x+1)2+y2-R2 (2) 通过比较H、L两点各自对实圆弧上点的距离大小,即根据误差大小来选取,具有最小误差的点为绘制点。根据公式(2)得: 对H(xi+1,yi)点有:D(H)=(xi+1)2+yi2-R2; 对L(xi+1,yi-1)点有:D(L)=(xi+1)2+(yi-1)2-R2; 根据Bresenham画圆算法,则选择的标准是: 如果|D(H)||D(L)|,那么下一点选取L(xi+1,yi-1); 如果|D(H)|=|D(L)|,那么下一点可以取L(xi+1,yi-1),也可以选取H(xi+1,yi),我们约定选取H(xi+1,yi)。 图1 Bresenham画圆算法点的选取 综合上述情况,得: 当|D(H)|>|D(L)|时,选取L点(xi+1,yi-1)为绘制点坐标; 当|D(H)| |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |