アルゴリズムの紹介は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 件のコメント:
コメントを投稿