绘制给定区域的像素圆

Drawing pixel circle of given area

我有一些区域 X x Y 像素,我需要一个像素一个像素地填充它。问题是在任何给定的时刻绘制的形状应该尽可能圆。

我认为这个算法是 Ordered Dithering 的子集,在将灰度图像转换为一位时,但我找不到任何参考资料,也无法自己弄清楚。

我知道 Bresenham 圆,但它用于绘制特定半径而不是面积的圆。

我为 10 x 10 像素网格创建了所有填充百分比的动画。由于整个区域是 10x10=100px,所以每一帧正好是 1% inc.

填满的圆盘有等式

(X - Xc)² + (Y - Yc)² ≤ C.

当你增加C时,满足方程的点数会增加,但由于对称性,它会爆发性地增加。

为了得到想要的填充效果,可以为每个像素计算(X - Xc)² + (Y - Yc)²,根据这个值排序,让像素一个一个的出现(或者一次出现,如果你知道想要的数量)像素)。

您可以通过不同的方式打破平局:

  • 使用稳定排序保持计算像素时的原始顺序;

  • 打乱等值的游程;

  • 稍微改变中心坐标,这样就没有关系了。


用 de-centering 技巧填充。

值:

订单: