画圆形(Bresenham算法)

您所在的位置:网站首页 生成圆弧的中点算法和原理和算法 画圆形(Bresenham算法)

画圆形(Bresenham算法)

2024-07-01 10:23| 来源: 网络整理| 查看: 265

下面先简要介绍常用的画圆算法(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