源于Bresenham直线算法,用交替的0和1表示表示[0-1]的小数.
public struct Dithering { ushort _zero, _one; int _balance; public void Set(ushort zero, ushort one) { _zero = zero; _one = one; _balance = _one <= _zero ? -1 : 0; } public int Next() { int ret; if (_balance < 0) { _balance += _one; ret = 0; } else { _balance -= _zero; ret = 1; } return ret; } }