绘制给定区域的像素圆

时间:2019-05-28 13:33:09

标签: algorithm draw bit dithering

我有一些X乘Y像素的区域,我需要逐像素填充它。问题在于,在任何给定的时刻,绘制的形状都应尽可能为圆形。

当将灰度图像转换为一位时,我认为该算法是有序抖动的子集,但是我找不到任何参考,也无法自己弄清楚。

我知道布雷森汉姆的圆,但是它用于绘制一定半径而不是面积的圆。

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

pixel animation

1 个答案:

答案 0 :(得分:2)

填充的磁盘具有等式

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

当您增加C时,满足方程式的点数会增加,但是由于对称性,它会突然增加。

要获得所需的填充效果,您可以为每个像素计算(X - Xc)² + (Y - Yc)²,对该值进行排序,然后让像素一个接一个地显示(如果知道所需的像素数,则一次显示)

您可以用不同的方式打破关系:

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

  • 随机播放相等值的行;

  • 略微更改中心坐标,以确保没有联系。


填充偏心技巧。

值:

enter image description here

订单:

enter image description here