(57)【要約】【課題】  描画プリミティブである線分の一方の頂点が視点より後方にあるか否かに関わらず、統一的にラスタライズすることができる描画装置を提供すること。【解決手段】  描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを取得し、ピクセルが線分の投影領域（平行四辺形）の内側に存在するか否かを判定するためのエッジ係数を計算し、二つの頂点のうち少なくとも一方の頂点データとエッジ係数とから、投影領域のバウンディングボックスを計算し、エッジ係数の組み合わせに基づいて投影領域を分類して、当該分類に応じてバウンディングボックスの走査開始点及び走査進行方向を決定し、走査開始点に対応するピクセルのエッジ関数値を初期値としてＤＤＡ処理を実行することで、ラスタライズ処理のためのセットアップデータを生成する。【選択図】      図１７
2005352657.tif 000002
【特許請求の範囲】
【請求項１】
基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画する描画装置であって、
前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力するための頂点入力手段と、
ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算するためのバウンディングボックス計算手段と、
前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定手段と、
前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成するトラバース手段と、
を具備することを特徴とする描画装置。
【請求項２】
前記走査開始点に対応するピクセルにおける前記エッジ関数の値を初期値として、前記走査進行方向に向かって前記初期値に前記エッジ係数を加算することでピクセルデータを生成することを特徴とする請求項１記載の描画装置。
【請求項３】
前記エッジ係数計算手段は、前記二つの頂点の同次座標に基づいて前記エッジ係数を計算し、
前記バウンディングボックス計算手段は、
前記二つの頂点の同次座標に基づいて、前記線分の少なくとも一部が前記基準視点の前方に存在するか否かを判定し、
前記線分の少なくとも一部が前記基準視点の前方に存在すると判定した場合には、前記二つの頂点の少なくとも一方のウィンドウ座標を用いて、前記線分の投影像のバウンディングボックスを計算すること、
を特徴とする請求項１又は２記載の描画装置。
【請求項４】
前記バウンディングボックス計算手段は、
前記線分の一方の頂点が前記基準視点の後方に存在するか否かを判定し、
前記線分の一方の頂点が前記基準視点の後方に存在すると判定した場合には、前記基準視点の前方に存在する前記線分の他方の頂点を通過するウィンドウ座標系の縦軸に平行な直線、及び前記他方の頂点を通過するウィンドウ座標系の横軸に平行な直線によって、初期設定されたバウンディングボックスを、前記線分を含む第１の領域と前記線分を含まない第２の領域とに分割し、
前記第２の領域が削除されるように、初期設定されたバウンディングボックスをより小さなサイズに修正すること、
を特徴とする請求項３記載の描画装置。
【請求項５】
前記決定手段は、
前記分類に基づいて前記バウンディングボックスのコーナー点であって前記投影領域の頂点である点のいずれかを走査開始点とし、
当該走査開始点から前記投影領域内部に向かう方向を走査方向として決定すること、
を特徴とする請求項１乃至４のうちいずれか一項記載の描画装置。
【請求項６】
前記投影領域は、前記線分の投影面への投影像を、前記線分を投影面の縦軸及び横軸に投影した長さが短い方の軸であるマイナー軸方向に平行移動させて生成される平行四辺形であることを特徴とする請求項１乃至５のうちいずれか一項記載の描画装置。
【請求項７】
基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画するための描画方法であって、
前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力し、
ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算し、
前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定し、
前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成すること、
を具備することを特徴とする描画方法。
【請求項８】
コンピュータに、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることピクセルデータを生成し三次元グラフィックス画像を描画する描画処理を実行させるための描画プログラムであって、
前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力する入力機能と、
ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算する計算機能と、
前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定機能と、
前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成する生成機能と、
を実現させるための描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元コンピュータグラフィックス（三次元ＣＧ）画像の描画処理を行う描画処理装置、描画処理方法、及び描画処理プログラムに関するものであり、特に描画プリミティブが視点後方の頂点を持つ線分を含む場合におけるラスタライズ処理に関する。
【背景技術】
【０００２】
三次元ＣＧとは、モデリングによってコンピュータ内の仮想三次元空間に各種オブジェクトを記述・配置し、当該空間に設定された視点からこれらがどのように見えるのかを、二次元画面に描画する技術である。
【０００３】
特に、二次元画面に描画する技術はレンダリング（描画）処理と呼ばれ、視点と光源の設定、所定の座標変換、隠面消去、シャドウイング等、ビューポート変換、アンチエイリアシング等を行うものである。この様なレンダリング処理を高速に実行し、リアルタイムにて画像を描画可能な装置は、リアルタイムＣＧ装置と呼ばれる。
【０００４】
このレンダリング処理においては、描画するピクセルが描画プリミティブの内側にあるかどうかを判定する必要がある。そのため、描画プリミティブの形状を線形関数の組で表現し、例えば次の様な計算が実行される。
【０００５】
すなわち、例えば描画プリミティブが三角形の場合、式（１）のような３つの線形関数の組で三角形の形状を表す。
【０００６】
A0(X,Y) = a0×(X - X0) + b0×(Y - Y0)
A1(X,Y) = a1×(X - X1) + b1×(Y - Y1)                    (1)
A2(X,Y) = a2×(X - X2) + b2×(Y - Y2)
ここで(X,Y)はピクセルのウィンドウ座標（描画領域に設定された二次元座標系における座標）、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の頂点のウィンドウ座標、a0,b0,a1,b1,a2,b2は定数である。これらの線形関数はエッジ関数と呼ばれ、ビューポート（描画領域）上のピクセルを三角形の内側、辺上、外側の３つの領域に分類する。エッジ関数の値が０より大きいピクセルは三角形の内側、ちょうど０のピクセルは辺上、０より小さいピクセルは外側にあることを意味する。
【０００７】
従って、ラスタライズ処理において、３辺のエッジ関数の値がすべて０より大きいかどうかを調べることにより、ピクセルが三角形の内側にあるかどうかを判定することができる。なお、エッジ関数の係数a0,b0,a1,b1,a2,b2は、次の式(2)により計算できる。
【０００８】
a0 = Y0 - Y1
b0 = X1 - X0
a1 = Y1 - Y2        (2)
b1 = X2 - X1
a2 = Y2 - Y0
b2 = X0 - Y2
ただし、三角形の頂点(X0,Y0),(X1,Y1),(X2,Y2)はビューポート上で反時計周りに並んでいるものとする。
【０００９】
上記の計算手順をハードウェアに実装する際には、ＤＤＡ（Digital Differential Analysis）と呼ばれる方法がよく使われる。ＤＤＡでは、開始ピクセルにおけるエッジ関数の初期値のみを式(1)により計算し、その初期値にエッジ関数の係数a0,b0,a1,b1,a2,b2を次々と足し合わせていくことにより、隣接するピクセルのエッジ関数の値を求めていく。また、ＤＤＡは、頂点パラメータを補間してピクセルのパラメータを計算する処理においてもよく使用される。このＤＤＡの内容を説明すると、次のようである。
【００１０】
最初に、開始ピクセル(X,Y)におけるパラメータの初期値を式(3)のパラメータ関数により計算する。
【００１１】
P(X,Y) = a×X + b×Y + c        (3)
ここで(X,Y)はピクセルのウィンドウ座標、a,b,cはパラメータ関数の係数である。描画プリミティブが三角形の場合、係数a,b,cは式(4)の連立線形方程式を解くことにより計算できる。
【００１２】
a×X0 + b×Y0 + c = p0
a×X1 + b×Y1 + c = p1            (4)
a×X2 + b×Y2 + c = p2
ここで、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の頂点のウィンドウ座標、p0,p1,p2は対応する頂点の任意の属性を表すパラメータ値である。係数a,b,cはパラメータの種類ごとに計算する必要がある。
【００１３】
ＤＤＡでは、式(4)で計算した係数a,bを式(3)で計算した初期値に次々と足し合わせていくことにより、隣接するピクセルのパラメータを求めていく。こうすることで、ピクセルが描画プリミティブの内側にあるかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを求める補間処理とを行うこができる。
【００１４】
ところで、ＤＤＡにおける上記判定処理と補間処理とを効率良く進めるためには、処理対象のピクセルをできるだけ無駄なく選び出すことが重要である。そのため、処理対象のピクセルを効率良く走査するための方法がいくつか考案されている。
【００１５】
最も一般的なのは、スタンプなどと呼ばれる矩形領域単位で走査する方法である。スタンプは、ラスタライズ処理において１サイクルに並列処理するピクセルをまとめた矩形領域である。例えば、特許文献２の図１３のようにスタンプの大きさが８×８ピクセルの場合は、ラスタライズ処理において１サイクルの間に６４個のピクセルの並列処理を行し、これをサイクル毎に移動させてビューポート上を走査し、ピクセルデータを生成していく。
【００１６】
図特許文献２の図２６−１には、矩形状のスタンプを利用した、三角形の描画プリミティブの走査順序が示されている。この図から分かるように、まず、スタンプをビューポートのX軸方向に沿ったライン上で移動させ、１ラインの走査を行う。当該ラインの走査が終了した後、スタンプをY軸方向に移動して次のラインに沿って移動させ、これを順次繰り返すことにより、ピクセルデータを生成する。
【００１７】
また、描画プリミティブが線分の場合は、線分をマイナー軸方向にdピクセル膨らませた平行四辺形を走査する。マイナー軸とは、X軸とY軸のうち、線分の投影後の長さが短い方の軸のことである。これに対して長い方の軸をメジャー軸と呼ぶ。dの値は通常1.0とされるが、この値を大きくすることによって太い線分を描画することができる。この平行四辺形について、三角形の場合と同様にスタンプ単位で走査を実行する。これにより、ピクセルが平行四辺形の内側に入るかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを求める補間処理を実行することができる。
【００１８】
以上述べた従来の判定処理及び補間処理は、モデリングされた三次座標系での描画プリミティブの頂点をウィンドウ上に投影して得られる座標（ウィンドウ座標）を用いて実行される。
【００１９】
ところが、描画プリミティブが視点後方の頂点を含む場合、その頂点はウィンドウ上に投影されないためウィンドウ座標をもたない。一般に、このような描画プリミティブをラスタライズする際には、あらかじめ図２１、図２２のように描画プリミティブを近クリップ面で切断し、ビューポート上に投影される部分と投影されない部分に分割しておく。そして、ビューポート上に投影される部分のみを用いて、上記判定処理及び補間処理を実行する。
【００２０】
このような描画プリミティブをクリップ面で分割する処理はクリッピングと呼ばれる。このクリッピングは複雑かつ処理量が多い。そのため、専用ハードウェアを必要とする場合が多く、高コストとなる可能性がある。これを解決する技術として、クリッピングを必要としないラスタライズ方法がいくつか考案されている（例えば、特許文献１、非特許文献１参照）。
【００２１】
上記クリッピングを必要としないラスタライズ方法を実行するためには、走査の開始点を効率よく探索する方法が新たに必要となる。そこで、本発明者らは、視点後方の頂点を含む三角形の投影像を頂点の同次座標を用いて分類し、その分類結果に応じて走査の開始点を決定する技術を考案している（例えば、特許文献２参照）。
【００２２】
しなしながら、この技術は、描画プリミティブが三角形であることを前提としており、線分などの他の描画プリミティブについては考慮されていない。
【特許文献１】US 6,504,542 B1
【特許文献２】特願２００３−４２３７９７号
【非特許文献１】Marc Olano and Trey Greer, "Triangle Scan Coversion Using 2D Homogeneous Coordinates", 1997, SIGGRAPH/Eurographics Workshop.
【発明の開示】
【発明が解決しようとする課題】
【００２３】
本発明は、上記事情を鑑みてなされたもので、描画プリミティブが線分であっても、当該線分の一方の頂点が視点より後方にあるか否かに関わらず、描画プリミティブが三角形等である場合と同様の手法にて統一的にラスタライズすることができる描画装置、描画方法、描画プログラムを提供することを目的としている。
【課題を解決するための手段】
【００２４】
本発明は、上記目的を達成するため、次のような手段を講じている。
【００２５】
本発明の第１の視点は、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画する描画装置であって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力するための頂点入力手段と、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算するためのバウンディングボックス計算手段と、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定手段と、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成するトラバース手段と、を具備することを特徴とする描画装置である。
【００２６】
本発明の第２の視点は、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画するための描画方法であって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力し、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算し、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定し、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成すること、を具備することを特徴とする描画方法である。
【００２７】
本発明の第３の視点は、コンピュータに、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることピクセルデータを生成し三次元グラフィックス画像を描画する描画処理を実行させるための描画プログラムであって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力する入力機能と、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算する計算機能と、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定機能と、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成する生成機能と、を実現させるための描画プログラムである。
【発明の効果】
【００２８】
以上本発明によれば、描画プリミティブが線分であっても、当該線分の一方の頂点が視点より後方にあるか否かに関わらず、描画プリミティブが三角形等である場合と同様の手法にて統一的にラスタライズすることができる描画装置、描画方法、描画プログラムを実現できる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施形態を図面に従って説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００３０】
図１は、本実施形態に係るリアルタイムＣＧ描画装置１０のブロック構成図を示している。同図に示すように、本描画装置１０は、頂点入力部１１、頂点処理部１２、ラスタライズ部１３、ピクセル処理部１７、描画メモリ部１８を具備している。
【００３１】
頂点入力部１１は、所定の記憶装置から、描画プリミティブの頂点データを入力する。
【００３２】
頂点処理部１２は、頂点入力部１１から入力された頂点データに対し、所定の座標変換等の演算を行う。
【００３３】
ラスタライズ部１３は、頂点処理部２にて演算処理を受けた頂点データから、描画プリミティブ内部のピクセルデータを生成するラスタライズ処理を実行する。このラスタライズ部１３に入力される頂点データ（すなわち、頂点処理部１２から受け取るデータ）は、頂点の位置を表す頂点座標と、頂点の属性（例えば、カラー、テクスチャ座標等）を表す頂点パラメータから成る。ラスタライズ部３は、頂点座標を用いてピクセルが描画プリミティブの内側にあるかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを計算する補間処理を行う。
【００３４】
より具体的には、ラスタライズ部１３は、図１に示すように、頂点データバッファ部１４、セットアップ部１５、トラバース部１６を有している。頂点データバッファ部１４は、頂点処理部１２から入力される頂点データをバッファリングする。セットアップ部１５は、頂点データバッファ部１４から描画プリミティブの頂点データを取得し、これに基づいて上記判定処理等を実行して、ラスタライズに必要なセットアップデータを生成する。トラバース部１６は、セットアップ部１５から渡されるセットアップデータを用いて上記補間処理等を実行し、ピクセルデータを生成する。なお、セットアップ部１５の構成及び機能については、後で詳しく説明する。
【００３５】
ピクセル処理部１７は、ラスタライズ部１３にて生成されたピクセルデータに対し、所定の演算を行う。
【００３６】
描画メモリ部１８は、各ピクセル処理部１７にて加工されたピクセルデータを記憶する。
【００３７】
（セットアップ部）
次に、セットアップ部１５の構成及び機能について説明する。図２は、セットアップ部１５の構成を示したブロック図である。同図に示すように、セットアップ部１５は、エッジ関数の係数（エッジ係数）を計算するエッジ係数計算部１５０、描画プリミティブの投影像のバウンディングボックスを計算するバウンディングボックス計算部１５１、ピクセル走査の開始点と進行方向を決める開始点決定部１５２、開始ピクセルにおけるエッジ関数の値をＤＤＡの初期値として計算するエッジ関数初期値計算部１５３を有している。
【００３８】
以下、各構成要素が実行する処理について説明する。なお、以下の説明は、描画プリミティブが線分である場合を対象としている。
【００３９】
（エッジ係数計算部によるエッジ計算）
まず、エッジ係数計算部１５０は、頂点データバッファ部３１から描画プリミティブの頂点データを取得する。頂点データのデータ形式は例えば図３のようになる。同図に示すように、頂点データは、頂点の位置を表す頂点座標と、頂点の属性を表す頂点パラメータから構成されている。
【００４０】
ここで重要な点は、頂点座標は従来のようなウィンドウ座標ではなく、同次座標x,y,z,wで入力されることである。同次座標は、視点を原点とする座標（視点座標）に対して図４に示すような任意の射影行列とビューポート変換行列を乗算した後の座標である。描画プリミティブの頂点の位置はx,y,w成分で決まり、z成分はビューポート上に投影したときの奥行き値を求めるために使われる。
【００４１】
なお、すべての頂点のw成分が０より小さい描画プリミティブは、完全に視点より後ろ側にあることになる。従って、その後の処理をスキップして次の描画プリミティブの頂点データを取得してもよい。また頂点パラメータとしては、カラーR,G,B,A、テクスチャ座標s,t,r,q、フォグf、法線ベクトルNx,Ny,Nzなどが入力される。
【００４２】
次に、エッジ係数計算部１５０は、取得した描画プリミティブの頂点データに基づいて、エッジ関数の係数を計算する。その計算手順は、以下のようである。
【００４３】
一般に、ウィンドウ座標系におけるエッジ関数（直線の方程式）は式(5)で表される。
【００４４】
a×X + b×Y + c = 0        (5)
ここで、(X,Y)はビューポート上の任意の点のウィンドウ座標、a,b,cは定数である。(a,b)はウィンドウ座標系におけるエッジの法線ベクトルを意味する。ラスタライズ部３に入力される同次座標(x,y,w)とウィンドウ座標(X,Y)の関係は式(6)により表される。
【００４５】
X = Sm×(x/w) + W/2
Y = Sm×(y/w) + H/2  (6)
ここで、Smは最大スクリーンサイズの半分の値、W,Hはビューポートの幅と高さである。式(6)を式(5)に代入すると式(7)が得られる。
【００４６】
a×(Sm×(x/w) + W/2) + b×(Sm×(y/w) + H/2) + c = 0        (7)
式(7)の両辺にwを乗算して展開すると次式が得られる。
【００４７】
a×Sm×x + a×(W/2)×w + b×Sm×y + b×(H/2)×w + c×w = 0
この式を整理すると次式が得られる。
【００４８】
(a×Sm)×x + (b×Sm)×y + (a×(W/2) + b×(H/2) + c)×w = 0
ここで、a',b',c'を式(8)のようにおく。
【００４９】
a' = a×Sm
b' = b×Sm        (8)
c' = a×(W/2) + b×(H/2) + c
すると、式(9)のように書ける。
【００５０】
a'×x + b'×y + c'×w = 0        (9)
式(9)は同次座標系x,y,wにおけるエッジ関数を表している。なお、式(9)の幾何学的意味については、後で詳しく説明する。式(8)より、同次座標系で計算したエッジ関数の係数a',b',c'からウィンドウ座標系のエッジ関数の係数a,b,cを次のように求められることが分かる。
【００５１】
a = a' / Sm
b = b' / Sm        (10)
c = c' - (a×(W/2) + b×(H/2))
ただし係数cの変換については、式(5)のウィンドウ座標系のエッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらしても同じことを実現できる。確認のため、式(5)にX-W/2,Y-H/2を代入してみると次式が得られる。
【００５２】
a×(X - W/2) + b×(Y - H/2) + c = 0
この式を整理すると式(11)が得られる。
【００５３】
a×X + b×Y + (c - (a×(W/2) + b×(H/2))) = 0        (11)
このように、エッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらすことによって、式(10)の係数cの変換と同じことを実現できる。したがって、式(10)の同次座標系からウィンドウ座標系への変換は式(12)のように簡単化することができる。
【００５４】
a = a' / Sm
b = b' / Sm        (12)
c = c'
なお、エッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらすことは、ラスタライズ後の各ピクセルのウィンドウ座標X,YをX+W/2,Y+H/2とずらしても同じことである。
【００５５】
次に、式(9)の同次座標系のエッジ関数がもつ幾何学的な意味と、係数a',b',c'の計算方法について説明する。まず、係数a',b',c'の計算方法について述べる。式(9)をベクトル形式で書き直すと式(13)が得られる。
【００５６】
(a' b' c')・(x y w) = 0                (13)
ここで、・はベクトルの内積を表す。式(13)は(x,y,w)空間における視点(0,0,0)とエッジ上の２点を結んだ平面の方程式を表しており、(a' b' c')はその平面の法線ベクトルを表している。エッジの両端点の同次座標を(x0,y0,w0),(x1,y1,w1)とすると、平面の法線ベクトル(a' b' c')は式(14)により計算できる。
【００５７】
(a' b' c') = (x0 y0 w0)×(x1 y1 w1)                (14)
ここで、×はベクトルの外積を表す。
【００５８】
式(14)に従ってエッジの両端点の同次座標から計算された法線ベクトル(a' b' c')を、式(12)を用いて変換することにより、ウィンドウ座標系のエッジ関数の係数a,b,cを求めることができる。
【００５９】
次に、式(9)の同次座標系のエッジ関数がもつ幾何学的な意味について述べる。式(14)を式(13)に代入すると式(15)が得られる。
【００６０】
((x0 y0 w0)×(x1 y1 w1))・(x y w) = 0        (15)
式(15)の左辺は、ベクトル(x0 y0 w0),(x1 y1 w1),(x y w)のスカラ三重積である。従って、その値はこれら３点と視点(0,0,0)を結ぶ三角錐の符号付き体積の６倍に等しい。
【００６１】
図５（ａ）、図５（ｂ）は、(0,0,0),(x0 y0 w0),(x1 y1 w1)を底面とし、(x y w)を頂点とする三角錐を示した図である。式(15)の左辺に従って計算される三角錐の体積の符号は、任意の点(x,y,w)がエッジを境にして法線ベクトル(a' b' c')と同じ方向にある場合に正（図５（ａ）の場合）、逆方向にある場合に負（図５（ｂ）の場合）になる。また、(x,y,w)がエッジ上にある場合に０になる。なお、同次座標系x,y,wは左手系であるため、法線ベクトル(a' b' c')の向きが通常とは逆になることに注意する。
【００６２】
すなわち、同次座標系のエッジ関数は三角錐の符号付き体積を表しており、その符号を判定することにより、頂点(x y w)に対応するビューポート上のピクセルをエッジの両側とエッジ上の３つの領域に分類することができる。
【００６３】
以上述べたエッジ係数の計算手順をまとめると、エッジ係数計算部１５０は、頂点処理部１２から受け取った描画プリミティブの頂点に関する同次座標(x,y,w)から同次座標系のエッジ関数の係数a',b',c'を式(14)を用いて計算する。また、エッジ係数計算部１５０は、その値を式(12)を用いて変換することによってウィンドウ座標系のエッジ関数の係数a,b,cを求めている。
【００６４】
なお、このエッジ関数の係数a,b,cは、後述するようにトラバース部１６において、ウィンドウ座標X,Yの点が描画プリミティブの内側にあるかどうかを判定する判定処理に用いられる。
【００６５】
また、エッジ係数計算部１５０は、バウンディングボックスのエッジ関数を計算する。ここで、バウンディングボックスとは、描画対象である描画プリミティブを包含する外接矩形領域のうち、最小のものを意味する。
【００６６】
一般に、線分のラスタライズでは、線分をマイナー軸方向にdピクセル膨らませた平行四辺形を走査する必要がある。本実施形態では、ピクセルが平行四辺形の２つの斜辺の内側にあるかどうかを判定する際にはエッジ関数を用い、一方、マイナー軸に平行となる上辺および下辺（あるいは左辺および右辺）の内側にあるかどうかを判定する際には平行四辺形のバウンディングボックスを用いる。後者のマイナー軸に平行となる上辺および下辺（あるいは左辺および右辺）については、斜辺をマイナー軸に沿って所定量平行移動させるものであり、その幾何学的情報は容易に把握することができる。そのため、エッジ係数計算部３２１では、平行四辺形の２つの斜辺のエッジ関数だけを計算し、上辺および下辺、あるいは左辺および右辺のエッジ関数は計算しない。
【００６７】
エッジ係数計算部１５０は、平行四辺形の２つの斜辺のエッジ関数を、式(14)で求めた線分そのもののエッジ関数の符号を調節してマイナー軸方向にd/2ピクセル平行移動することによって計算できる。同次座標系における平行四辺形の２つの斜辺のエッジ関数をa0',b0',c0'およびa1',b1',c1'とすると、符号の調節は式(16)のように表すことができる。
【００６８】
a0' = -a'
b0' = -b'
c0' = -c'                (16)
a1' = a'
b1' = b'
c1' = c'
上記式(16)では、各斜辺に対応する２つのエッジ関数の係数符号が反対となるように設定している。これは、２つの斜辺に挟まれた領域のエッジ関数の値が正になるようにするためである。
【００６９】
次に、エッジ係数計算部１５０は、同次座標系のエッジ関数a0',b0',c0',a1',b1',c1'をウィンドウ座標系のエッジ関数a0,b0,c0,a1,b1,c1に変換する。同次座標系からウィンドウ座標系への変換は式(12)を用いて次のように行う。
【００７０】
a0 = a0' / Sm
b0 = b0' / Sm
c0 = c0'
a1 = a1' / Sm                (17)
b1 = b1' / Sm
c1 = c1'
次に、エッジ係数計算部１５０は、２つの斜辺をマイナー軸方向にd/2ピクセル平行移動するために、エッジ関数の係数の定数項c0,c1に式(18)のような加算を行う。
【００７１】
c0 += fabs(dX×a0) + fabs(dY×b0)
c1 += fabs(dX×a0) + fabs(dY×b0)        (18)
ここで、dX,dYの値は、メジャー軸がX軸の場合はdX=0,dY=d/2、メジャー軸がY軸の場合はdX=d/2,dY=0となる。また、fabs()は絶対値を返す関数を表す。この加算は２つの斜辺を法線と反対方向に平行移動させるため、斜辺に挟まれた領域のエッジ関数の値が正になる。
【００７２】
以上の計算手順をまとめたフローチャートを図６に示す。最初のステップＳ２０１では、式(14)により線分そのものの同次座標系のエッジ関数の係数を計算する。次のステップＳ２０２では、式(16)により符号を反対にした２つのエッジ関数の係数を計算する。ステップＳ２０３では、式(17)によりエッジ関数の係数を同次座標系からウィンドウ座標系に変換する。このように同次座標系を経由することにより、視点後方の頂点を含む線分でもクリッピングすることなくウィンドウ座標系のエッジ関数の係数を求められていることに注意する。最後のステップＳ２０４では、式(18)により２つのエッジ関数をマイナー軸方向にd/2ピクセル平行移動する。これにより、線分をマイナー軸方向にdピクセル膨らませた平行四辺形の２つの斜辺のエッジ関数を求めることができる。
【００７３】
（バウンディングボックス計算部によるバウンディングボックス計算処理）
次に、バウンディングボックス計算部１５１によって実行される、描画プリミティブのバウンディングボックス計算処理について説明する。なお、描画プリミティブが線分の場合には、バウンディングボックスは線分の投影像をマイナー軸方向に膨らませた平行四辺形の外接矩形になる。
【００７４】
一般に、バウンディングボックスは線分の両端の頂点のウィンドウ座標のXY成分の最小値と最大値を見つけることによって簡単に求めることができる。ところが、線分の一方の頂点が視点より後ろ側にある場合は、その頂点がウィンドウ上に投影されず、無限遠点となるため、バウンディングボックスを求めるための工夫が必要になる。そこで、本描画装置１０では、バウンディングボックスを次の様にして求めている。
【００７５】
図７（ａ）、（ｂ）は平行四辺形のバウンディングボックスを求める処理の手順を示したフローチャートである。図７（ａ）の最初のステップＳ３０１ではバウンディングボックスを初期化する。バウンディングボックスは左上隅の点のウィンドウ座標(Xmin,Ymin)と右下隅の点のウィンドウ座標(Xmax,Ymax)で表すことができる。ここでは(Xmin,Ymin)=(-W/2,-H/2),(Xmax,Ymax)=(W/2-1,H/2-1)と初期化する。なお、W,Hはビューポートの幅と高さである。
【００７６】
次に、ステップＳ３０２では、線分の一方の頂点(x0,y0,w0)のw成分が0より大きいかどうかを判定する。0より大きい場合はステップＳ３０３へ進み、0以下の場合は、当該一方の頂点は視点より後ろ側にあることになる。そのため、ステップＳ３０３〜Ｓ３０４をスキップしてステップＳ３０５へ進む。
【００７７】
次に、ステップＳ３０３では、式(6)によりウィンドウ座標(X0,Y0)を計算する。ステップＳ３０４では、計算したウィンドウ座標(X0,Y0)を(X,Y)、エッジ関数の係数a0,b0をa,bとおいてコーナー点を求める処理を実行する。この処理は、エッジ関数の傾き（係数）の組み合わせによって描画プリミティブとしての直線を分類し、この分類に応じて初期設定された値を修正することで、バウンディングボックスのコーナー点を決定するものである。
【００７８】
図７（ｂ）は、コーナー点を求める処理の流れを示したフローチャートである。同図の最初のステップＳ４０１では、エッジ関数の係数aが0以上かつbが0以下であるかどうかを判定する。条件が成り立つ場合はステップＳ４０２へ進み、成り立たない場合はステップＳ４０２をスキップしてステップＳ４０３へ進む。
【００７９】
次に、ステップＳ４０２では、バウンディングボックスの左上隅のウィンドウ座標Xmin,Yminを更新する。dX,dYは式(18)のときと同じ値であり、メジャー軸がX軸の場合はdX=0,dY=d/2、メジャー軸がY軸の場合はdX=d/2,dY=0である。
【００８０】
次に、ステップＳ４０３では、エッジ関数の係数aが0以下かつbが0以上であるかどうかを判定する。条件が成り立つ場合はステップＳ４０４へ進み、成り立たない場合はステップＳ４０４をスキップしてステップＳ４０５へ進む。ステップＳ４０４では、バウンディングボックスの右下隅のウィンドウ座標Xmax,Ymaxを更新する。
【００８１】
次に、ステップＳ４０５では、エッジ関数の係数a,bが0より大きいかどうかを判定する。条件が成り立つ場合はステップＳ４０６へ進み、成り立たない場合はステップＳ４０６をスキップしてステップＳ４０７へ進む。ステップＳ４０６では、バウンディングボックスの右上隅のウィンドウ座標Xmax,Yminを更新する。
【００８２】
次に、ステップＳ４０７では、エッジ関数の係数a,bが0より小さいかどうかを判定する。条件が成り立つ場合はステップＳ４０８へ進み、成り立たない場合はステップＳ４０８をスキップして処理を終了する。ステップＳ４０８では、バウンディングボックスの左下隅のウィンドウ座標Xmin,Ymaxを更新する。
【００８３】
以上述べた図７（ｂ）の処理は、式(16),(17)によって求めたエッジの法線(a,b)が、注目する頂点からもう一方の頂点に向かって左側へ向くという考察に基づいている。この処理の幾何学的な意味について、図８を用いて説明する。
【００８４】
すなわち、図７（ｂ）のステップＳ４０１、Ｓ４０２は、図８（ｃ）、（ｅ）、（ｈ）のように頂点がバウンディングボックスの左上隅のコーナー点になる場合の処理に相当する。また、図７（ｂ）のステップＳ４０３、４０４は、図８（ａ），（ｆ），（ｇ）のように頂点がバウンディングボックスの右下隅のコーナー点になる場合の処理に相当する。同様に、図７（ｂ）のステップＳ４０５、Ｓ４０６は、図８（ｄ）のように頂点がバウンディングボックスの右上隅のコーナー点になる場合の処理に相当し、図７（ｂ）のステップＳ４０７、Ｓ４０８は、図８（ｂ）のように頂点がバウンディングボックスの左下隅のコーナー点になる場合の処理に相当する。
【００８５】
なお、a=b=0の場合は両端の頂点が一致するので、図７のステップＳ１０２のエッジ関数の係数計算後に処理を中止して次の線分の処理に移ってもよい。処理を中止しなかった場合でもバウンディングボックスの面積が０となり描画は行われないため、処理が破綻することはない。
【００８６】
図７（ａ）のフローチャートの説明に戻る。ステップＳ３０４の処理が終わると、次のステップＳ３０５では、線分のもう一方の頂点(x1,y1,w1)のw成分が0より大きいかどうかを判定する。0より大きい場合はステップＳ３０６へ進む。w成分が0以下の場合は、線分のもう一方の頂点(x1,y1,w1)は、視点後方に存在することになる。従って、ステップＳ３０６〜Ｓ３０７をスキップして処理を終了する。
【００８７】
次に、ステップＳ３０６では、式(6)によりウィンドウ座標(X1,Y1)を計算する。ステップＳ３０７では、計算したウィンドウ座標(X1,Y1)を(X,Y)、エッジ関数の係数a1,b1をa,bとおいて図７（ｂ）のコーナー点を求める処理を実行する。
【００８８】
以上の処理ステップＳ３０１〜Ｓ３０７の各処理を終了したときの(Xmin,Ymin)が、バウンディングボックス左上隅の点のウィンドウ座標、(Xmax,Ymax)が右下隅の点のウィンドウ座標を表すことになる。
【００８９】
以上述べた図７（ａ）に従う、平行四辺形のバウンディングボックスを求める処理の幾何学的意味について、図７（ａ）、図９（ａ）、（ｂ）を参照しながら説明する。図９（ａ）は、線分が視点前方にある場合（すなわち、線分の両頂点のw成分が正の場合）における、幾何学的意味を説明するための図である。
【００９０】
まず、ステップＳ３０１では、バウンディングボックスが初期化され、初期設定としてのバウンディングボックスが設定される。
【００９１】
次に、ステップＳ３０２〜Ｓ３０４では頂点のウィンドウ座標X0,Y0と対応するエッジ関数の係数a0,b0について図７（ｂ）のコーナー点を求める処理を実行し、バウンディングボックスの右下隅のウィンドウ座標Xmax,Ymaxを更新する。
【００９２】
次に、ステップＳ３０５〜Ｓ３０７では、もう一方の頂点のウィンドウ座標X1,Y1と対応するエッジ関数の係数a1,b1について図７（ｂ）のコーナー点を求める処理を実行し、バウンディングボックスの左上隅のウィンドウ座標Xmin,Yminを更新する。この結果、バウンディングボックスの左上隅の点(X1,Y1-d/2)と右下隅の点(X0,Y0+d/2)が計算される。
【００９３】
図９（ｂ）は、線分の一方の頂点が視点前方にある場合（すなわち、線分の一方の頂点w成分が0以下の場合）における、幾何学的意味を説明するための図である。
【００９４】
まず、ステップＳ３０１では、バウンディングボックスが初期化され、初期設定としてのバウンディングボックスが設定される。
【００９５】
次に、ステップＳ３０２〜Ｓ３０４では、頂点のウィンドウ座標X0,Y0と対応するエッジ関数の係数a0,b0について図７（ｂ）のコーナー点を求める処理を実行し、バウンディングボックスの右上隅のウィンドウ座標Xmax,Yminを更新する。
【００９６】
次に、ステップＳ３０５でw1≦0と判定されるので、ステップＳ３０６〜Ｓ３０７の処理はスキップされる。この結果、バウンディングボックスの左上隅の点(-W/2,Y0)と右下隅の点(X0+d/2,H/2-1)が計算される。
【００９７】
この様に、ステップＳ３０１において初期設定されたバウンディングボックスは、線分（の投影像をマイナー軸方向に膨らませた平行四辺形）のサイズに応じて、より小さなサイズに修正されることになる。従って、トラバース部１６におけるピクセルデータ生成を、より効率的に実行することが可能となる。
【００９８】
特に、この手法によれば、線分の一方の頂点が視点後方にある場合には、視点前方にある他方の頂点を通過するマイナー軸に平行な直線、及び視点前方にある他方の頂点を通過するメジャー軸に平行な直線によって、初期設定されたバウンディングボックスを二つの領域に分割する。分割された領域のうち、線分を含まない方の領域が削除されるように、初期設定されたバウンディングボックスをより小さなサイズに修正する。従って、線分の一方の頂点が視点後方にある場合であっても、常に適切なバウンディングボックスを設定することができる。
【００９９】
（開始点決定部１５２による開始点及び進行方向決定処理）
次に、開始点決定部１５２によって実行される、走査の開始点の決定処理、及び走査の進行方向の決定処理について説明する。
【０１００】
一般に、３次元の線分の投影像は６種類の平行四辺形に分類することができる。従って、本描画装置１０では、この分類に応じて走査の開始点と進行方向を決定する。
【０１０１】
図１０は３次元の線分の投影像である６種類の平行四辺形と、各平行四辺形における走査の開始点位置の候補をまとめたものである。図１０（ａ）あるいは（ｂ）のように平行四辺形が垂直あるいは水平な場合は、平行四辺形の四隅のどの点から走査を開始してもよい。また、図１５（ｃ）、（ｄ）のように平行四辺形が左上（右下）へ傾いている場合は、平行四辺形の左上隅あるいは右下隅から走査を開始する。図１５（ｅ）、（ｆ）のように平行四辺形が右上（左下）へ傾いている場合は、平行四辺形の右上隅あるいは左下隅から走査を開始する。
【０１０２】
ところで、ラスタライズ部３に入力される３次元の線分が６種類の中のどの平行四辺形に投影されるかを知るためには、両端の頂点のウィンドウ座標のXY成分を大小比較すればよい。しかしながら、線分の一方の頂点が視点後方にある場合は、その頂点がウィンドウ上に投影されないため、ウィンドウ座標を大小比較することができない。そこで、本描画装置１０では、バウンディングボックスを計算するときに求めたコーナー点を走査の開始点として選択する。
【０１０３】
すなわち、例えば図９（ａ）の場合は、平行四辺形の右下隅のコーナー点と左上隅のコーナー点を求めているので、これらのどちらか一方の点を走査の開始点として選択する。また、図９（ｂ）の場合は平行四辺形の右上隅のコーナー点を求めているので、この点を走査の開始点として選択する。このような方法によれば、線分の一方の頂点が視点後方にあるかどうかに関わらず、走査の開始点を求めることができる。
【０１０４】
また、走査方向は、走査開始点に応じて決定される。すなわち、開始点が平行四辺形の左上隅ならば右下方向、開始点が左下隅ならば右上方向、開始点が右下隅ならば左上方向、開始点が右上隅ならば左下方向といった具合に、走査方向は、走査開始点から出発してバウンディングボックスの対角線方向に決定される。
【０１０５】
図１１〜図１５は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。いずれのパターンにおいても、候補とする（推奨する）走査開始点は、バウンディングボックスのコーナー点であって３次元の線分の投影像を膨らませた平行四辺形の頂点である位置となっている。また、走査方向は、開始点から出発してバウンディングボックスの対角線方向とする。
【０１０６】
（エッジ関数初期値決定部１５３によるエッジ関数初期値決定処理）
走査の開始点と進行方向が決まると、エッジ関数初期値決定部１５３により、開始ピクセル(X,Y)におけるエッジ関数の値を式(5)を用いてＤＤＡの初期値として計算し、既に計算されたエッジ係数やバウンディングボックスの値と共に、セットアップデータを生成する。
【０１０７】
図１６は、エッジ関数初期値決定部１５３において生成されたセットアップデータの一例を示している。セットアップ部１５の後段に接続されたトラバース部１６は、セットアップ部１５からセットアップデータを入力し、初期値にエッジ関数の係数を次々と足し合わせていくＤＤＡ処理が実行し、各ピクセルのエッジ関数の値を求める。
【０１０８】
（セットアップ部１３による一連の処理）
図１７は、セットアップ部１３の動作の流れを示したフローチャートである。同図を参照しながら、セットアップ部１３によって実行される一連の処理について説明する。なお、各ステップにおける各処理の詳細は、既に述べた通りである。
【０１０９】
図１７に示すように、まず、セットアップ部１３は、頂点データバッファ部１４から、図３に示したような形式からなる頂点データを取得する（ステップＳ１０１）。
【０１１０】
次に、エッジ係数計算部１５０は、図６に示した手順により、描画プリミティブとしての線分そのものについての同次座標系のエッジ係数を計算し、これに基づいて当該エッジ係数のウィンドウ座標、及び線分をマイナー軸方向にｄピクセル膨らませた平行四辺形の二つの斜辺に関するエッジ関数を計算する（ステップＳ１０２）。
【０１１１】
次に、バウンディングボックス計算部１５１は、図７（ａ）、（ｂ）に示した手順により、得られた線分のエッジ係数、平行四辺形の二つの斜辺に関するエッジ関数に基づいて、線分をマイナー軸方向にｄピクセル膨らませた平行四辺形のバウンディングボックスを計算する（ステップＳ１０３）。
【０１１２】
次に、開始点決定部１５２は、平行四辺形を６種類に分類し、この種類に応じて図１０〜図１５に示した様に走査の開始点と進行方向を決定する（ステップＳ１０４）。
【０１１３】
次に、エッジ関数初期値決定部１５３は、決定された走査開始点と進行方向とに従って、開始ピクセル(X,Y)におけるエッジ関数の値を式(5)を用いてＤＤＡの初期値として計算し、既に計算されたエッジ係数やバウンディングボックスの値と共に、セットアップデータを生成する。生成されたセットアップデータは、トラバース部１６に送り出される（ステップＳ１０５）。
【０１１４】
以上述べた構成によれば、以下の効果を得ることができる。
【０１１５】
本実施形態の描画装置は、まず同次座標系のエッジ係数を求め、これを変換することで、ウィンドウ座標系のエッジ係数を計算している。従って、描画プリミティブが線分の場合に、その一方の頂点が視点より後ろ側にあるかどうかに関わらず、描画プリミティブが三角形である場合等と同様に、クリッピングを行うことなく統一的な方法でラスタライズ処理を実行することができる。
【０１１６】
また、本実施形態の描画装置は、線分の少なくとも一部が前方にある場合には、当該線分の投影像に外接するバウンディングボックスを、線分の頂点のうち少なくとも一方のウィンドウ座標を用いて計算する。従って、線分一方の頂点が視点より後ろ側にある場合であっても、統一的な手法にてバウンディングボックスを設定できる。さらに、得られたバウンディングボックスは、線分の投影像のサイズ及び線分の一端が視点の後方にあるか否かによって縮小される。従って、設定するバウンディングボックスをできるだけ小さくすることができ、効率的なラスタライズ処理を実行することができる。
【０１１７】
また、本実施形態の描画装置は、エッジ係数の組み合わせに基づいて線分の投影像を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する。従って、描画プリミティブが線分の場合に、その一方の頂点が視点より後ろ側にあるかどうかに関わらず、描画プリミティブが三角形である場合等と同様に、走査開始点及び走査方向を効率的に決定することができる。
【０１１８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１９】
【図１】図１は、本実施形態に係るリアルタイムＣＧ描画装置１０のブロック構成図を示している。
【図２】図２は、セットアップ部１５の構成を示したブロック図である。
【図３】図３は、エッジ係数計算部１５０は頂点データバッファ部３１から受け取る頂点データのデータ形式の一例を示した図である。
【図４】図４は、透視射影変換、正射影変換、ビューポート変換をそれぞれ表す行列を示した図である。
【図５】図５は、同次座標系のエッジ関数の幾何学的意味を説明するための図であり、三次元空間の三角錐を示した図である。
【図６】図６は、エッジ係数計算部１５０によるエッジ計算の処理の流れを示したフローチャートである。
【図７】図７（ａ）、（ｂ）は、バウンディングボックス計算部１５１によるバウンディングボックス計算の処理の流れを示したフローチャートである。
【図８】図８は、図７（ｂ）に従う処理の幾何学的な意味について説明するための図である。
【図９】図９は、図７（ａ）に従う処理の幾何学的な意味について説明するための図である。
【図１０】図１０は３次元の線分の投影像である６種類の平行四辺形と、各平行四辺形における走査の開始点位置の候補をまとめた図である。
【図１１】図１１は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。
【図１２】図１２は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。
【図１３】図１３は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。
【図１４】図１４は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。
【図１５】図１５は、３次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。
【図１６】図１６は、エッジ関数初期値決定部１５３において生成されたセットアップデータの一例を示した図である。
【図１７】図１７は、セットアップ部１３の動作の流れを示したフローチャートである。
【符号の説明】
【０１２０】
１０…本描画装置、１１…頂点入力部、１２…頂点処理部、１３…ラスタライズ部、１７…ピクセル処理部、１８…描画メモリ部、１５０…エッジ係数計算部、１５１…バウンディングボックス計算部、１５２…開始点決定部、１５３…エッジ関数初期値計算部
【図１】
2005352657.tif 000003
【図２】
2005352657.tif 000004
【図３】
2005352657.tif 000005
【図４】
2005352657.tif 000006
【図５】
2005352657.tif 000007
【図６】
2005352657.tif 000008
【図７】
2005352657.tif 000009
【図８】
2005352657.tif 000010
【図９】
2005352657.tif 000011
【図１０】
2005352657.tif 000012
【図１１】
2005352657.tif 000013
【図１２】
2005352657.tif 000014
【図１３】
2005352657.tif 000015
【図１４】
2005352657.tif 000016
【図１５】
2005352657.tif 000017
【図１６】
2005352657.tif 000018
【図１７】
2005352657.tif 000019