2007-08-07

ラスタ化ルール

幾何学図形をピクセル列へ変換するには、いくつかのルールを定める必要がある。

  • 整数座標がピクセルのどの位置に対応するか。中心なのか、座標値下端なのか。
  • ピクセルが図形の中に入っているかどうかの判断基準となる点はどこか。中心なのか、座標値下端なのか。
  • その基準となる点が図形の境界線上にある場合、どういう基準で内外を決めるのか。図形の占める範囲の下端を閉、上端を開とする半開区間として扱うのか。その逆か。

Direct3Dがなぜ整数座標をピクセルの中心と対応づけているのか理解に苦しむ。自分でラスタライザを書くと、どうしてもピクセルの座標値下端(左上)を(0,0)にしたくなる。ピクセルの中心を内外判定の基準点とするのは同じなので、左上を整数座標にすると0.5ずらす処理が必要になる。しかし、整数座標がピクセルの中心だと、画面全体を覆うには(-0.5, -0.5, 640-0.5, 480-0.5)としなければならない。整数を引数にとる描画関数では(0, 0, 640, 480)と指定するのだから、これは一貫性が無いように見える。何か深遠な理由が存在するのだろうか。