抖动算法

源于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;
        }
    }
posted @ 2010-09-16 18:06  Robird  阅读(593)  评论(0编辑  收藏  举报