我有一些区域 X x Y 像素,我需要一个像素一个像素地填充它。问题是在任何给定时刻绘制的形状都应尽可能圆。
我认为这个算法是 Ordered Dithering 的子集,在将灰度图像转换为一位时,但我找不到任何引用资料,也无法自己弄清楚。
我知道 Bresenham 圆,但它用于绘制特定半径而不是面积的圆。
我为 10 x 10 像素网格创建了所有填充百分比的动画。由于整个区域是 10x10=100px,因此每一帧正好是 1% inc。
最佳答案
一个填充的圆盘有等式
(X - Xc)² + (Y - Yc)² ≤ C.
当您增加 C
时,满足方程的点数会增加,但由于对称性,它会突然增加。
要得到想要的填充效果,可以对每个像素点计算(X - Xc)² + (Y - Yc)²
,根据这个值排序,让像素点一个一个的出现(如果您知道所需的像素数,也可以一次完成)。
你可以用不同的方式打破平局:
使用稳定排序保持计算像素时的原始顺序;
打乱等值的运行;
稍微改变中心坐标,这样就没有关系了。
使用去中心技巧进行填充。
值(value)观:
顺序:
关于algorithm - 绘制给定区域的像素圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56343457/