2017年1月31日火曜日

ブレゼンハムアルゴリズム

アルゴリズムの紹介はWikipedia参照。

主な使い道は線を描画するときが基本的な使い方ですが、

高速にX-Yで応答曲線を得たい時などにも使えます。




        static void line(int x0, int y0, int x1, int y1)
        {
            int dx = x1 - x0;
            int dy = y1 - y0;
            int e2;
            int err;
            int sx = +1;
            int sy = -1;
            if (0 > dx)
            {   //反転(dxは正の値にする)
                dx = -dx;
                sx = -1;
            }
            if (0 < dy)
            {   //反転(dyは負の値にする)
                dy = -dy;
                sy = +1;
            }
            err = dx + dy;
            while (x0 != x1 || y0 != y1)
            {
                output(x0, y0);
                e2 = err << 1;
                if (e2 > dy)
                {   //X軸を動かす
                    err += dy;
                    x0 += sx;
                }
                else if (e2 < dx)
                {   //Y軸を動かす
                    err += dx;
                    y0 += sy;
                }
            }
        }


0 件のコメント:

Androider