(57)【特許請求の範囲】
【請求項１】
多角形を描画するための装置であって、
描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割部と、
描画処理を行って、前記多角形分割部により作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画部とを備え、
各前記部分多角形は、前記描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、
各前記部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有し、
前記多角形データには、前記描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでおり、
前記多角形分割部は、
前記多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、前記順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択し、ここで、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、しかも、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸であり、
その後、前記基準頂点Ｐb および前記頂点Ｐ(c+1) に加えて、前記順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択し、ここで、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、しかも、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸であり、
少なくとも、前記基準頂点Ｐb ならびに頂点Ｐc 、Ｐ(c+1) およびＰ(c+2) からなる部分多角形を特定する部分多角形データを作成する、描画装置。
【請求項２】
前記多角形データは、前記描画対象の多角形を特定するための座標を含んでおり、
前記多角形データに不要点除去処理を行って、不要な座標が除去された多角形データを作成する不要点除去部をさらに備え、
前記多角形分割部は、不要点除去部により処理された多角形データに基づいて、前記部分多角形データを作成する、請求項１に記載の描画装置。
【請求項３】
前記多角形データが凹多角形を特定しているか否かを判定する凹多角形判定部をさらに備え、
前記多角形分割部は、前記凹多角形判定部により凹多角形を特定すると判定された多角形データに基づいて、前記部分多角形データを作成する、請求項１に記載の描画装置。
【請求項４】
前記部分多角形描画部は、前記多角形分割部により作成された部分多角形データに基づいて、透視投影変換処理を行って、予め定められた視点から前記描画対象の多角形を見たときの画像を表す画像データを作成する、請求項１に記載の描画装置。
【請求項５】
前記多角形分割部は、
自身が選択した頂点Ｐ(c+2) が、前記△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に前記他の頂点Ｐj がなく、かつ前記∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合には、さらに、前記頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定し、
前記基準頂点Ｐb および、新たに設定された頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作を、前記条件を満たさなくなるまで続け、
前記基準頂点Ｐb 、前記頂点Ｐc およびＰ(c+1) ならびに、少なくとも１つの頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データを作成する、請求項１に記載の描画装置。
【請求項６】
多角形を描画するための描画装置が実行する方法であって、
描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割ステップと、
描画処理を行って、前記多角形分割ステップで作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画ステップとを備え、
各前記部分多角形は、前記描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、
各前記部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有し、
前記多角形データには、前記描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでおり、
前記多角形分割ステップは、前記多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、前記順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択する第１の選択ステップを含み、
ここで、前記頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、さらに、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸であり、
前記多角形分割ステップは、前記第１の選択ステップの後、前記基準頂点Ｐb および前記頂点Ｐ(c+1) に加えて、前記順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択する第２の選択ステップをさらに含み、
ここで、前記頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、しかも、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸であり、
前記多角形分割ステップにおいては、前記第１の選択ステップで選択された前記頂点Ｐb 、Ｐc およびＰ(c+1) と、前記第２の選択ステップで選択された前記頂点Ｐ(c+2) とで少なくとも構成される部分多角形を特定する部分多角形データが作成される、描画方法。
【請求項７】
前記多角形分割ステップはさらに、前記第２の選択ステップで選択された頂点Ｐ(c+2) が、前記△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に前記他の頂点Ｐj がなく、かつ前記∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合に、前記頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定する設定ステップをさらに含み、
前記第２の選択ステップにおいては、前記第１の選択ステップで選択された前記基準頂点Ｐb および、前記設定ステップにおいて設定された前記頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作が、前記条件を満たさなくなるまで続けられ、
前記多角形分割ステップにおいては、前記第１のステップで選択された前記基準頂点Ｐb 、前記頂点Ｐc およびＰ(c+1) と、前記第２の選択ステップで選択された頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データが作成される、請求項６に記載の描画方法。
【請求項８】
多角形を描画するための描画装置が実行するプログラムを記録した記録媒体であって、
描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割ステップと、
描画処理を行って、前記多角形分割ステップで作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画ステップとを含み、
各前記部分多角形は、前記描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、
各前記部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有し、
前記多角形データには、前記描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでおり、
前記多角形分割ステップは、前記多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、前記順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択する第１の選択ステップを含み、
ここで、前記頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、しかも、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸であり、
前記多角形分割ステップは、前記第１の選択ステップの後、前記基準頂点Ｐb および前記頂点Ｐ(c+1) に加えて、前記順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択する第２の選択ステップをさらに含み、
ここで、前記頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、前記描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、しかも、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸であり、
前記多角形分割ステップにおいては、前記第１の選択ステップで選択された前記頂点Ｐb 、Ｐc およびＰ(c+1) と、前記第２の選択ステップで選択された前記頂点Ｐ(c+2) とで少なくとも構成される部分多角形を特定する部分多角形データが作成される、プログラムを記録した記録媒体。
【請求項９】
前記多角形分割ステップはさらに、前記第２の選択ステップで選択された頂点Ｐ(c+2) が、前記△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に前記他の頂点Ｐj がなく、かつ前記∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合に、前記頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定する設定ステップをさらに含み、
前記第２のステップにおいては、前記第１の選択ステップで選択された前記基準頂点Ｐb および、前記設定ステップにおいて設定された前記頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作が、前記条件を満たさなくなるまで続けられ、
前記多角形分割ステップにおいては、前記第１のステップで選択された前記基準頂点Ｐb 、前記頂点Ｐc およびＰ(c+1) と、前記第２の選択ステップで選択された頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データが作成される、請求項８に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、描画装置に関し、より特定的には、描画処理、つまり、表示装置が表示すべき多角形を表す画像データを作成する描画装置に関する。
【０００２】
【従来の技術】
上記のような描画装置は、従来より多数の文献で開示されている。図１１は、従来の描画装置ＣＵrendの基本的な構成を示すブロック図である。図１１の描画装置ＣＵrendは、多角形データ記憶部７０１と、凹多角形判定部７０２と、第１の三角形分割部７０３と、第２の三角形分割部７０４と、三角形描画部７０５と、表示部７０６とを備える。
【０００３】
以下、描画装置ＣＵrendの動作について説明する。多角形データ記憶部７０１には、いくつかの多角形データＤpolyが格納されている。１つの多角形データＤpolyは、描画対象となる１つの多角形Ｐが有するｎ個（ｎは３以上の自然数）の頂点座標Ｐ1 〜Ｐn を少なくとも含む。ここで、頂点座標Ｐ1 〜Ｐn は、２次元座標または３次元座標の値で示される。ただし、３次元座標の場合には、すべての頂点座標Ｐ1 〜Ｐn は、同一平面に含まれる必要がある。また、多角形データＤpolyは、頂点座標Ｐ1 〜Ｐn 以外にも、様々な付随情報を含む場合もある。付随情報については、以下の説明において適時説明する。
【０００４】
凹多角形判定部７０２は、多角形データ記憶部７０１から多角形データＤpolyを受け取って、それに含まれる頂点座標Ｐ1 〜Ｐn が三次元座標で表されている場合には、予め定められた二次元平面（以下の説明ではｘｙ平面）Ｆt 上への相似変換処理を行う。
【０００５】
今、多角形データＤpolyは、多角形Ｐの頂点座標Ｐ1 （ｘ1 ，ｙ1 ，ｚ1 ），Ｐ2 （ｘ2 ，ｙ2 ，ｚ2 ），…，Ｐn （ｘn ，ｙn ，ｚn ）を含むとする。凹多角形判定部７０２は、相似変換処理において、まず、多角形Ｐに対する法線ベクトルＮを求める。凹多角形判定部７０２は、法線ベクトルＮがｚ軸に平行であれば、すべての頂点座標Ｐ1 〜Ｐn のｚ成分のみを０に置換して、多角形Ｐをｘｙ平面Ｆt に正投影した時の各座標Ｑ1 （ｘ1 ，ｙ1 ，０）〜Ｑn （ｘn ，ｙn ，０）を導出する。
【０００６】
一方、法線ベクトルＮがｚ軸に平行でない場合の相似変換処理については、図１２を参照して説明する。かかる場合、凹多角形判定部７０２は、図１２に示す交線Ｌおよび角度αを求める。ここで、交線Ｌは、ｘｙ平面Ｆt と、多角形Ｐを含む平面Ｆp とが交わる線である。また、角度αは、ｘｙ平面Ｆt および平面Ｆp とがなす角の値である。交線Ｌおよび角度αを求めた後、凹多角形判定部７０２は、平面Ｆp 上の各頂点座標Ｐ1 （ｘ1 ，ｙ1 ，ｚ1 ）〜Ｐn （ｘn ，ｙn ，ｚn ）を、直線Ｌを回転中心として、角度αだけ回転させることにより、座標Ｑ'1（ｘ'1 ，ｙ'1 ，０）〜Ｑ'n（ｘ'n ，ｙ'n ，０）を導出する。
【０００７】
以上から分かるように、多角形Ｑは、頂点座標Ｑ1 （ｘ1 ，ｙ1 ，０）〜Ｑn （ｘn ，ｙn ，０）を頂点座標とする多角形、または頂点座標Ｑ'1（ｘ'1 ，ｙ'1 ，０）〜Ｑ'n（ｘ'n ，ｙ'n ，０）を頂点座標とする。ただし、以下には、頂点座標Ｑ'1〜Ｑ'nから構成される多角形Ｑに対する処理のみを説明し、頂点座標Ｑ1 〜Ｑn からなるものについては、頂点座標Ｑ'1〜Ｑ'nと同様であるため、その説明を省略する。
【０００８】
凹多角形判定部７０２は、凹凸判定処理を行って、多角形Ｑが凹多角形か否かを判定する。図１３は、上記凹凸判定処理の一例を説明するための図である。なお、上記相似変換処理ではｎ＝６の場合を説明したが、凹凸判定処理では、便宜上、ｎ＝４の場合について説明する。
【０００９】
凹凸判定処理において、凹多角形判定部７０２は、まず、多角形Ｑについてのすべての辺を表す三次元辺ベクトルＶ1 （ａ1 ，ｂ1 ，ｃ1 ）〜Ｖn （ａn ，ｂn ，ｃn ）を求める。各三次元辺ベクトルＶ1 〜Ｖn において、ｚ方向成分ｃ1 〜ｃn は０である。また、三次元辺ベクトルＶ1 は頂点座標Ｑ'1およびＱ'2とから求められ、（ａ1 ，ｂ1 ，ｃ1 ）は（ｘ'2−ｘ'1 ，ｙ'2−ｙ'1 ，０）に等しい。以降同様に、２≦ｉ≦ｎ−１の場合、三次元辺ベクトルＶi は頂点座標Ｑ'iおよびＱ'(i+1)とから求められ、（ａi ，ｂi ，ｃi ）は（ｘ'(i+1)−ｘ'i ，ｙ'(i+1)−ｙ'i ，０）に等しい。また、ｉ＝ｎの場合、三次元辺ベクトルＶn は、頂点座標Ｑ'nとＱ'1とから求められ、（ａn ，ｂn ，ｃn ）は（ｘ'1−ｘ'n
，ｙ'1−ｙ'n ，０）に等しい。
【００１０】
全三次元辺ベクトルＶ1 〜Ｖn を求めた後、凹多角形判定部７０２は、多角形Ｑにおいて互いに交わる２辺の外積ベクトルＶ1 ×Ｖ2 ，Ｖ2 ×Ｖ3 ，…，Ｖ(n-1) ×Ｖn ，Ｖn ×Ｖ1 を順番に算出する。その後、凹多角形判定部７０２は、算出された外積ベクトルＶ1 ×Ｖ2 ，Ｖ2 ×Ｖ3 ，…，Ｖ(n-1) ×Ｖn ，Ｖn ×Ｖ1 のｚ方向成分が同符号または０であれば、多角形Ｑが凸多角形であり、同符号または０でなければ凹多角形と判定する。
【００１１】
多角形Ｐは多角形Ｑの基礎であるから、凹多角形判定部７０２は、多角形Ｑが凸多角形であれば、多角形Ｐも凸多角形であると判定し、多角形データ記憶部７０１から受け取った多角形データＤpolyを、第１の三角形分割部７０３に渡す。一方、凹多角形判定部７０２は、多角形Ｐが凹多角形であると判定した場合には、多角形データＤpolyを第２の三角形分割部７０４に渡す。
【００１２】
なお、多角形データＤpolyが、付随情報として、多角形Ｐの凹凸属性を示す情報を含んでいる場合には、凹多角形判定部７０２は、以上の外積を用いた凹凸判定処理ではなく、当該凹凸属性に従って多角形Ｑ（つまり多角形Ｐ）が凹多角形であるか否かを判定する。
【００１３】
第１の三角形分割部７０３は、受け取った多角形データＤpolyに、第１の三角形分割処理を行って、凸多角形Ｐを複数の独立した三角形で表現する。第１の三角形分割処理において、まず、第１の三角形分割部７０３は、受け取った多角形データＤpolyから、頂点座標Ｐ1 、Ｐ2 およびＰ3 を選択し、これら３つの頂点座標Ｐ1 、Ｐ2 およびＰ3 からなる三角形データＤtri1を作成する。これによって、概念的には、凸多角形Ｐは、頂点座標Ｐ1 、Ｐ2 およびＰ3 からなる三角形△Ｐ1 Ｐ2 Ｐ3 に分割される。
【００１４】
次に、第１の三角形分割部７０３は、３つの頂点座標Ｐ1 、Ｐ3 およびＰ4 を選択して、これら頂点座標Ｐ1 、Ｐ3 およびＰ4 からなる三角形データＤtri2を作成する。以降同様に、３≦ｉ≦ｎ−２の場合、第１の三角形分割部７０３は、頂点座標Ｐ1 、Ｐ(i+1) およびＰ(i+2) を選択して、これら頂点座標Ｐ1 、Ｐ(i+1) およびＰ(i+2) からなる三角形データＤtri3〜Ｄtri(n-2)を作成する。これによって、概念的には、凸多角形Ｐは、（ｎ−２）個の三角形に分割される。第１の三角形分割部７０３は、作成した（ｎ−２）個の三角形データＤtri1〜Ｄtri(n-2)を三角形描画部７０５に渡す。また、第１の三角形分割部７０３は、受け取った多角形データＤpolyに付随情報が含まれる場合には、それも三角形描画部７０５に渡す。
【００１５】
また、第２の三角形分割部７０４は、受け取った多角形データＤpolyを保持し、当該多角形データＤpolyに対して、図１４に手順を示す第２の三角形分割処理を行って、凹多角形Ｐを複数の独立した三角形で表現する。図１４において、第２の三角形分割部７０４は、凹多角形Ｐの各頂点が凹頂点か凸頂点かを調べた後に、凹頂点の数Ｎc を計数する（ステップＳ１００１）。ここで、凹頂点とは、凹多角形Ｐにおいて、１８０°を超える内角を持つ頂点を意味する。また、凸頂点とは、凹多角形Ｐにおいて、１８０°未満の内角を持つ頂点を意味する。
【００１６】
ステップＳ１００１をより具体的に説明すると、凹多角形判定部７０２の凹凸判定処理と同様の処理がまず行われる。つまり、第２の三角形分割部７０４は、凹多角形Ｐの各頂点Ｐi （ｉ＝１，２，…，ｎ）につながる両辺を表すベクトル同士の外積を算出し、算出した外積のｚ成分の符号を基礎として、対象となる頂点Ｐi の凹凸を判定する。なお、外積のｚ成分が０である頂点Ｐi に関しては、凹頂点と判定してもよいし、凸頂点と判定してもよい。
【００１７】
ステップＳ１００１において、さらに、第２の三角形分割部７０４は、凹凸の判定結果を基に、凹多角形Ｐに含まれる凹頂点の個数Ｎc を計数し、その後、ステップＳ１００２に進む。なお、以下では、本ステップで凹頂点と判定された頂点Ｐi を凹頂点ＣＰi と記し、そうでないものを凸頂点ＶＰi と記す。
【００１８】
第２の三角形分割部７０４は、個数Ｎc が０でなければ（ステップＳ１００２）、凸頂点ＶＰi の内の１つを、基準頂点Ｐb を１つ選択する（ステップＳ１００３）。次に、第２の三角形分割部７０４は、頂点座標Ｐ1 〜Ｐn の中から、基準頂点Ｐb の両隣に位置する頂点座標Ｐk および Ｐj （ｋ＝１，２，…，ｎ、ｊ＝１，２，…，ｎ、ｋ≠ｊ）を選択する。これによって、第２の三角形分割部７０４は、基準頂点Ｐb 、頂点Ｐk および頂点Ｐj からなる部分三角形△Ｐb Ｐk Ｐj を形成する（ステップＳ１００４）。
【００１９】
次に、第２の三角形分割部７０４は、部分三角形△Ｐb Ｐk Ｐj の内部に、頂点Ｐb 、Ｐk およびＰj を除く他の頂点Ｐ1 〜Ｐn が含まれるか否かを判定する（ステップＳ１００５）。
第２の三角形分割部７０４は、他の頂点Ｐ1 〜Ｐn が含まれると判定した場合、三角形描画部７０５が正しい多角形Ｐを表示可能な画像データＤimage を作成できないとみなす。つまり、ステップＳ１００４で形成した部分三角形△Ｐb Ｐk Ｐj は、正しい多角形Ｐの描画に不適格であると判断して、第２の三角形分割部７０４はステップＳ１００３に戻る。そして、第２の三角形分割部７０４は、未選択の凸頂点ＶＰi を基準頂点Ｐb として選択し（ステップＳ１００３）、その後、ステップＳ１００４およびＳ１００５を実行する。
【００２０】
一方、第２の三角形分割部７０４は、ステップＳ１００５において、他の頂点頂点Ｐ1 〜Ｐn が含まれていないと判定した場合、ステップＳ１００４で形成した部分三角形△Ｐb Ｐk Ｐj は、正しい多角形Ｐを描画できるとして、ステップＳ１００６に進む。そして、第２の三角形分割部７０４は、部分三角形△Ｐb Ｐk Ｐj の頂点座標Ｐb 、Ｐk 、およびＰj からなる三角形データＤtri を作成し、保持する（ステップＳ１００６）。
【００２１】
次に、第２の三角形分割部７０４は、現在保持する多角形データＤpolyから、多角形データＤpoly’を作成できるか否かを判断する（ステップＳ１００７）。より具体的には、第２の三角形分割部７０４は、多角形データＤpolyの中から、ステップＳ１００３で選択した基準頂点座標Ｐb を除去する。基準頂点座標Ｐb を除去した結果、残りの頂点の数が０個の場合には、多角形データＤpoly’の作成が不可能と判断して、ステップＳ１０１０に進む。そして、第２の三角形分割部７０４は、ステップＳ１００６で作成した少なくとも１つの三角形データＤtri を三角形描画部７０５に渡す。また、第２の三角形分割部７０４は、最初に受け取った多角形データＤpolyに付随情報が含まれる場合には、それも三角形描画部７０５に渡す。
【００２２】
一方、基準頂点座標Ｐb を除去した結果、残りの頂点の数が０個でない場合には、多角形データＤpoly’の作成が可能と判断して、ステップＳ１００８に進む。そして、第２の三角形分割部７０４は、多角形データＤpoly’を作成する。したがって、多角形データＤpoly’が表す多角形Ｐ’は、多角形Ｐの内、基準頂点Ｐb を除いた各頂点Ｐ1 〜Ｐn から形成される。
【００２３】
次に、第２の三角形分割部７０４は、作成した多角形データＤpoly’を多角形データＤpolyとして設定し（ステップＳ１００８）、その後、ステップＳ１００１に戻る。したがって、今回、第２の三角形分割部７０４は、上述の多角形Ｐ’が有する凹頂点ＣＰi の個数Ｎc を計数する（ステップＳ１００１）。その後、第２の三角形分割部７０４は、個数Ｎc が０か否かを判定し、０でなければ、新しく設定された多角形データＤpolyに対して上述したステップＳ１００３〜Ｓ１００８を行う。
【００２４】
一方、個数Ｎc が０であれば、多角形Ｐ’は凸多角形となり、第２の三角形分割部７０４は、当該多角形Ｐ’に対して第１の三角形分割処理を行う（ステップＳ１００９）。その結果、第２の三角形分割部７０４は、多角形Ｐ’の頂点数をＮv とした場合には、（Ｎv −２）個の三角形データＤtri1〜Ｄtri(Nv-2)を作成する。
【００２５】
次に、第２の三角形分割部７０４は、ステップＳ１００６で作成した少なくとも１つの三角形データＤtri と、ステップＳ１００９で作成した（Ｎv −２）個の三角形データＤtri1〜Ｄtri(Nv-2)とを、三角形描画部７０５に渡す（ステップＳ１０１０）。また、第２の三角形分割部７０４は、最初に受け取った多角形データＤpolyに付随情報が含まれる場合には、それも三角形描画部７０５に渡す。
【００２６】
三角形描画部７０５には、第１の三角形分割部７０３または第２の三角形分割部７０４から、いくつかの三角形データＤtri を受け取る。また、三角形描画部７０５は、多角形データＤpolyの付随情報を受け取る場合もある。三角形描画部７０５は、受け取った１つ三角形データＤtri を構成する３つの頂点座標Ｐr （ｒ＝１，２，…ｎ）、Ｐs （ｓ＝１，２，…ｎ）およびＰt （ｔ＝１，２，…ｎ、ただし、ｒ≠ｓ≠ｔ）で囲まれる領域を、付随情報の一部としての色情報に従って塗りつぶす。その後、三角形描画部７０５は、残りの三角形データＤtri から１つの選択しては、選択した三角形データＤtri を構成する３つの頂点座標Ｐr 、Ｐs およびＰt で囲まれる領域を塗りつぶすという描画処理を、すべての三角形データＤtri を選択するまで繰り返す。その結果、三角形描画部７０５の内部メモリには、多角形Ｐを表す画像データＤimage が作成され、表示部７０６は、作成された画像データＤimage に従って表示処理を行って、自身の画面上に多角形Ｐを表示する。
【００２７】
【発明が解決しようとする課題】
以上のように、従来の描画装置ＣＵrendでは、三角形描画部７０５が三角形単位で描画処理を行うために、多角形データＤpolyから、いくつかの三角形データＤtri が作成される。しかしながら、描画対象の多角形Ｐの頂点数が多くなればなるほど、作成される三角形データＤtri の数が多くなりため、三角形描画部７０５における描画処理に時間がかかるという問題点があった。
【００２８】
特に、描画対象が凹多角形Ｐの場合、第２の三角形分割処理（図１４参照）が必要となり、第１の三角形分割処理のように簡単には三角形に分割することができないので、従来の描画装置ＣＵrendは、凹多角形Ｐの描画までにかなりの時間を要していた。
【００２９】
それ故に、本発明の目的は、多角形を高速に描画することができる描画装置を提供することである。
【００３０】
【課題を解決するための手段および発明の効果】
第１の発明は、多角形を描画するための装置であって、描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割部と、描画処理を行って、多角形分割部により作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画部とを備える。
【００３１】
さらに、第１の発明において、各部分多角形は、描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、各部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有する。
【００３２】
上記第１の発明では、上記のような部分多角形単位で、部分多角形描画部は描画処理を行う。そのため、従来の三角形単位で行われる描画処理と比較して、部分多角形描画部が処理するデータ量が少なくなる。これによって、描画対象の多角形を従来よりも高速に描画することが可能となる。
【００３３】
第２の発明は、第１の発明に従属しており、多角形データは、描画対象の多角形を特定するための座標を含んでおり、描画装置は、多角形データに不要点除去処理を行って、不要な座標が除去された多角形データを作成する不要点除去部をさらに備え、多角形分割部は、不要点除去部により処理された多角形データに基づいて、部分多角形データを作成する。
【００３４】
上記第２の発明では、不要点除去部は、不要な座標を除去した多角形データを作成する。したがって、多角形分割部は、必要最小限の座標のみを含む多角形データから部分多角形データを作成する。その結果、多角形分割部および部分多角形描画部が処理するデータ量が少なくなり、描画対象の多角形をさらに高速に描画することが可能となる。
【００３５】
第３の発明は、第１の発明に従属しており、描画装置は、多角形データが凹多角形を特定しているか否かを判定する凹多角形判定部をさらに備え、多角形分割部は、凹多角形判定部により凹多角形を特定すると判定された多角形データに基づいて、部分多角形データを作成する。
【００３６】
凹多角形を三角形に分割するのは、従来技術の欄でも述べたように、複雑な処理が必要となり、さらに、凹多角形の頂点数が多くなればなるほど、多くの三角形データができてしまう。そこで、上記第３の発明では、このような凹多角形を特定する多角形データから、相対的にデータ量の少ない部分多角形データが作成される。このように、第３の発明によれば、凹多角形の描画に適した描画装置を提供することができる。
【００３７】
さらに、第３の発明によれば、付加的な効果として、凹多角形判定部により凹多角形ではないと判定された多角形データに対しては、単純な第１の三角形分割（従来の技術の欄を参照）を適用することも可能になる。その結果、多角形の凹凸に応じて、最適な処理を行うことができる描画装置を実現することが可能となる。
【００３８】
第４の発明は、第１の発明に従属しており、部分多角形描画部は、多角形分割部により作成された部分多角形データに基づいて、透視投影変換処理を行って、予め定められた視点から描画対象の多角形を見たときの画像を表す画像データを作成する。
上記第４の発明によれば、透視投影処理により、描画対象の多角形を様々な方向から見た時の画像データを作成することができるので、より使い勝手のいい描画装置を提供することができる。
【００３９】
第５の発明は、第１の発明に従属しており、多角形データには、描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでおり、多角形分割部は、まず、多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択する。ここで、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、さらに、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸である。
【００４０】
さらに、第５の発明において、多角形分割部は、基準頂点Ｐb および頂点Ｐ(c+1) に加えて、順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択する。ここで、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、さらに、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸である。
【００４１】
さらに、第５の発明において、多角形分割部は、自身が選択した基準頂点Ｐb ならびに頂点Ｐc 、Ｐ(c+1) およびＰ(c+2) で少なくとも構成される部分多角形を特定する部分多角形データを作成する。
【００４２】
上記第５の発明では、部分多角形は、少なくとも、基準頂点Ｐb と、当該基準頂点Ｐb から順方向に沿って並ぶ３つの頂点Ｐc 、Ｐ(c+1) およびＰ(c+2) とから構成される。ここで、△Ｐb Ｐc Ｐ(c+1) および△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、描画対象の多角形の他の頂点Ｐi は存在しない。さらに、∠Ｐb Ｐc Ｐ(c+1) および∠Ｐb Ｐ(c+1) Ｐ(c+2) は凸である。これによって、描画対象が凹多角形であっても正確に描画することが可能になる。
【００４３】
第６の発明は、第５の発明に従属しており、多角形分割部は、自身が選択した頂点Ｐ(c+2) が、△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に他の頂点Ｐj がなく、かつ∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合には、さらに、頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定する。
【００４４】
その後、多角形分割部は、基準頂点Ｐb および、新たに設定された頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作を、上記条件を満たさなくなるまで続け、基準頂点Ｐb 、頂点Ｐc およびＰ(c+1) ならびに、少なくとも１つの頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データを作成する。
【００４５】
上記第６の発明では、多角形分割部は、上記条件を満たさなくなるまで、頂点Ｐ(c+2) を選択し続ける。そのため、部分多角形は、正確に描画ができる最大の数の頂点からなる。これによって、多角形分割部は、描画対象の多角形を最小数の部分多角形に分割することができる。これによって、描画対象の多角形を、高速かつ最も効率的に描画することが可能となる。
【００４６】
第７の発明は、多角形を描画するための方法であって、描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割ステップと、描画処理を行って、多角形分割ステップで作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画ステップとを備える。
【００４７】
さらに、第７の発明において、各部分多角形は、描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、各部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有する。
【００４８】
第８の発明は、第７の発明に従属しており、多角形データには、描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでいる。多角形分割ステップは、多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択する第１の選択ステップを含む。ここで、頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、さらに、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸である。
【００４９】
第８の発明において、多角形分割ステップは、第１の選択ステップの後、基準頂点Ｐb および頂点Ｐ(c+1) に加えて、順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択する第２の選択ステップをさらに含む。ここで、頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、さらに、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸である。
【００５０】
第８の発明において、多角形分割ステップでは、第１の選択ステップで選択された頂点Ｐb 、Ｐc およびＰ(c+1) と、第２の選択ステップで選択された頂点Ｐ(c+2) とで少なくとも構成される部分多角形を特定する部分多角形データが作成される。
【００５１】
第９の発明は、第８の発明において、多角形分割ステップはさらに、第２の選択ステップで選択された頂点Ｐ(c+2) が、△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に他の頂点Ｐj がなく、かつ∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合に、頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定する設定ステップをさらに含む。
【００５２】
第２の選択ステップにおいては、第１の選択ステップで選択された基準頂点Ｐb および、設定ステップにおいて設定された頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作が、条件を満たさなくなるまで続けられる。
さらに、第９の発明において、多角形分割ステップでは、第１のステップで選択された基準頂点Ｐb 、頂点Ｐc およびＰ(c+1) と、第２の選択ステップで選択された頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データが作成される。
【００５３】
第１０の発明は、多角形を描画するためのプログラムを記録した記録媒体であって、描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割ステップと、描画処理を行って、多角形分割ステップで作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画ステップとを含む。
【００５４】
さらに、第１０の発明において、各部分多角形は、描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、各部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有する。
【００５５】
第１１の発明は、第１０の発明に従属しており、多角形データには、描画対象の多角形が有するｎ個の各頂点座標Ｐ1 〜Ｐn が、当該多角形を一筆書き可能な方向である順方向に沿って並んでいる。多角形分割ステップは、多角形データの頂点座標Ｐ1 〜Ｐn の１つを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択し、さらに、順方向に沿って当該基準頂点Ｐb の隣に位置する頂点Ｐc およびＰ(c+1) を選択する第１の選択ステップを含む。ここで、頂点Ｐb 、Ｐc およびＰ(c+1) からなる△Ｐb Ｐc Ｐ(c+1) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐi （ｉ＝１，２，…ｎかつｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１）はなく、さらに、当該頂点Ｐb 、Ｐc およびＰ(c+1) からなる∠Ｐb Ｐc Ｐ(c+1) は凸である。
【００５６】
また、第１１の発明において、多角形分割ステップは、第１の選択ステップの後、基準頂点Ｐb および頂点Ｐ(c+1) に加えて、順方向に沿って当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を選択する第２の選択ステップをさらに含む。ここで、頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる△Ｐb Ｐ(c+1) Ｐ(c+2) の内部には、描画対象の多角形に属しかつ未選択である他の頂点Ｐj （ｊ＝１，２，…ｎかつｊ≠ｂ，ｊ≠ｃ，ｊ≠ｃ＋１，ｊ≠ｃ＋２）はなく、さらに、当該頂点Ｐb 、Ｐ(c+1) およびＰ(c+2) からなる∠Ｐb Ｐ(c+1) (c+2) は凸である。
【００５７】
さらに、第１１の発明において、多角形分割ステップでは、第１の選択ステップで選択された頂点Ｐb 、Ｐc およびＰ(c+1) と、第２の選択ステップで選択された頂点Ｐ(c+2) とで少なくとも構成される部分多角形を特定する部分多角形データが作成される。
【００５８】
第１２の発明は、第１１の発明に従属しており、多角形分割ステップはさらに、第２の選択ステップで選択された頂点Ｐ(c+2) が、△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に他の頂点Ｐj がなく、かつ∠Ｐb Ｐ(c+1) (c+2) が凸であるという条件を満たす場合に、頂点Ｐ(c+2) を頂点Ｐ(c+1)に設定する設定ステップをさらに含む。
【００５９】
また、第１２の発明において、第２のステップでは、第１の選択ステップで選択された基準頂点Ｐb および、設定ステップにおいて設定された頂点Ｐ(c+1) に加えて、当該頂点Ｐ(c+1) の隣に位置する頂点Ｐ(c+2) を新たに選択するという動作が、上記条件を満たさなくなるまで続けられる。
【００６０】
さらに、第１２の発明において、多角形分割ステップでは、第１のステップで選択された基準頂点Ｐb 、頂点Ｐc およびＰ(c+1) と、第２の選択ステップで選択された頂点Ｐ(c+2) からなる部分多角形を特定する部分多角形データが作成される。
【００６１】
第１３の発明は、多角形を描画するためのプログラムであって、描画対象の多角形を特定する多角形データに基づいて、それぞれが当該多角形を分割した１つの部分多角形を特定する部分多角形データを複数個作成する多角形分割ステップと、描画処理を行って、多角形分割ステップで作成された各部分多角形データに基づいて、描画対象の多角形の画像を表す画像データを作成する部分多角形描画ステップとを含む。
【００６２】
さらに、第１３の発明において、各部分多角形は、描画対象の多角形の１つの頂点を含む複数の三角形の集合であって、各部分多角形に属する各三角形は、同じ部分多角形に属する残りの三角形のいずれかと少なくとも１つの辺を共有する。
【００６３】
【発明の実施の形態】
図１は、本発明の一実施形態に係る描画装置Ｕrendを組み込んだ端末装置Ｄtermの構成を示すブロック図である。図１の端末装置Ｄtermにおいて、描画装置Ｕrendは、記憶装置Ｕstorおよび表示装置Ｕdispと通信可能に接続される。
描画装置Ｕrendは、プロセッサ１、プログラムメモリ２およびワーキングエリア３を備えている。プロセッサ１は、典型的には、ＣＰＵ(Central Processing Unit) またはＭＰＵ(Micro Processing Unit) から構成される。プログラムメモリ２は、典型的には、ＲＯＭ(Read Only Memory)から構成されており、レンダリング用のプログラム２１を格納している。ワーキングエリア３は、典型的には、ＲＡＭ(Random Access Memory)から構成される。なお、以上のプロセッサ１、プログラムメモリ２およびワーキングエリア３の組み合わせは、描画装置Ｕrendだけでなく、請求項における不要点除去部および凹多角形判定部を構成する。
【００６４】
以上の構成の描画装置Ｕrendにおいて、プロセッサ１は、プログラム２１に従って処理を行って、記憶装置Ｕstorに格納された多角形データＤpolyを基礎として、画像データＤimage をワーキングエリア３上で作成する。
また、記憶装置Ｕstorは、それぞれが描画対象となる多角形Ｐを特定するいくつかの多角形データＤpolyを格納している。１つの多角形データＤpolyは、好ましくは、図２に示すように、描画対象となる１つの多角形Ｐが有するｎ個の頂点座標Ｐ1 〜Ｐn を含んでおり、これによって、当該多角形Ｐを特定する。ここで、頂点座標Ｐ1 〜Ｐn は、２次元座標または３次元座標の値で示される。ただし、３次元座標の場合には、すべての頂点座標Ｐ1 〜Ｐn は、同一平面に含まれる必要がある。
【００６５】
また、多角形データＤpolyはさらに、多角形Ｐの形状を特定するために、頂点Ｐ1 〜Ｐn がどのようにつながるかを特定する接続情報も含む。本実施形態においては、好ましい例として、頂点座標Ｐ1 〜Ｐn が並ぶ順番が接続情報であるとする。より具体的には、多角形データＤpolyには、多角形Ｐを一筆書き可能な方向である順方向に沿うように、頂点座標Ｐ1 〜Ｐn が順番に並べられる。また、頂点座標Ｐ1 はペンダウンおよびペンアップの位置を示す。なお、以上の多角形データＤpolyは、上記以外にも様々な付随情報を含んでいるが、付随情報については、本発明に必須ではないため、以下において適時説明する。
【００６６】
表示装置Ｕdispは、ワーキングエリア３から転送されてくる画像データＤimage に従って表示処理を行って、自身の画面上に、当該画像データＤimage により表される多角形Ｐを表示する。
次に、以上の構成の端末装置Ｄtermの動作について、描画装置Ｕrendの動作を中心に説明する。ここで、図３は、プログラム２１に記述されたプロセッサ１の処理手順を示すメインフローチャートである。プロセッサ１は、プログラム２１の実行開始直後に、描画対象となる多角形Ｐを特定する多角形データＤpolyを、必要な数だけ、記憶装置Ｕstorから読み出して、ワーキングエリア３上に転送し、これによって、当該多角形データＤpolyを取得する（ステップＳ３１）。本実施形態では、説明を簡素化するため、プロセッサ１は１つの多角形データＤpolyを取得するものとする。
【００６７】
次に、プロセッサ１は、ワーキングエリア３上の多角形データＤpolyに対して不要点除去処理を行って（ステップＳ３２）、それに含まれる全頂点座標Ｐ1 〜Ｐn から、多角形Ｐの描画に不要な頂点座標Ｐi （ｉは１，２，…，ｎ）を除去する。なお、本ステップＳ３２が、請求項における不要点除去部に相当する。
【００６８】
以下、本ステップ３２をより詳細に説明する。原則として、各頂点座標Ｐ1 〜Ｐn は、多角形Ｐの各辺の端を規定する。しかしながら、なんらかの事情で、ある頂点座標Ｐi が多角形Ｐの辺上に乗ってしまう場合がある。このように辺の途中に位置する頂点Ｐi は多角形Ｐの描画に不要であるばかりか、後の各処理を非効率的にしてしまう。以上のような理由から、プロセッサ１は、ステップＳ３２の不要点除去処理を行う。具体的には、今、多角形データＤpolyが、三次元座標である頂点座標Ｐ1 （ｘ1 ，ｙ1 ，ｚ1 ），Ｐ2 （ｘ2 ，ｙ2 ，ｚ2 ），…，Ｐn （ｘn ，ｙn ，ｚn ）を含むと仮定する。この仮定下で、プロセッサ１は、まず、多角形Ｐのすべての辺に対する三次元辺ベクトルＶi （ｉ＝１，２，…，ｎ）を求める。ここで、ｉ≠ｎの場合、三次元辺ベクトルＶi は、頂点Ｐi から頂点Ｐ(i+1) に向かうベクトルである。また、ｉ＝ｎの場合、三次元辺ベクトルＶn は、頂点Ｐn から頂点Ｐ1 に向かうベクトルである。
【００６９】
次に、プロセッサ１は、多角形Ｐにおいて互いに接する２辺の外積ベクトルの大きさ、つまり、ｎ個の外積ベクトルＶ1 ×Ｖ2 ，Ｖ2 ×Ｖ3 ，…，Ｖi ×Ｖ(i+1) ，…Ｖn ×Ｖ1 の大きさを順次計算する。ここで、例えば、Ｖi ×Ｖ(i+1) の大きさが０であれば、頂点Ｐ(i-1) 、Ｐi およびＰ(i+1) は一直線上にあることになるで、頂点Ｐi が不要となるので、プロセッサ１は、ワーキングエリア３上の多角形データＤpolyから当該不要な頂点Ｐi を除去し、当該多角形データＤpolyが付随情報として頂点数を含む場合には、当該頂点数を１だけデクリメントする。一方、不要な頂点座標Ｐi がなければ、多角形データＤpolyをワーキングエリア３上にそのままにしておく。
【００７０】
なお、多角形データＤpolyが、各頂点Ｐ1 〜Ｐn に割り当てられる付随情報を含む場合、または、多角形データＤpolyに同じ頂点座標Ｐがいくつも連続する時に、何らかの特殊な処理が行われる場合には、上記のような不要点除去処理は行われなくともよい。
また、以下には、ステップＳ３２において不要な頂点Ｐi がなかった場合について説明する。なお、ステップＳ３２において不要な頂点Ｐi が除去された場合も、本質的には以下の説明をそのまま適用できるので、その場合の説明を省略する。
次に、プロセッサ１は、ワーキングエリア３上の多角形データＤpolyに対して、例えば、図１１の凹多角形判定部７０２と同様の処理を行って、多角形データＤpolyが特定する多角形Ｐが凹多角形か否かを判定する（ステップＳ３３）。なお、本ステップＳ３３が、請求項における凹多角形判定部に相当する。
【００７１】
描画対象の多角形Ｐが凸多角形であると判定された場合、プロセッサ１は、例えば、第１の三角形分割部７０３と同様の処理を行って（ステップＳ３４）、いくつかの三角形データＤtri をワーキングエリア３上で作成する。その後、プロセッサ１は、三角形描画部７０５と同様の処理を行って（ステップＳ３５）、ワーキングエリア３上に、付随情報の一部としての色情報により特定される色で塗りつぶされた多角形Ｐを表す画像データＤimage を作成する。以上、ステップＳ３４およびＳ３５により、プロセッサ１は、凸多角形Ｐを特定する多角形データＤpolyに対しては、より単純な処理である第１の三角形分割を適用することで、描画装置Ｕrendは、さほどの処理負担なく凸多角形Ｐを描画することができる。
【００７２】
以上のステップＳ３５が終わった後、プロセッサ１は、ワーキングエリア３上で作成した画像データＤimage を表示装置Ｕdispに転送する（ステップＳ３８）。表示装置Ｕdispは、転送されてきた画像データＤimage に従って、表示制御を行って、自身の画面上に、多角形Ｐを表示する。
【００７３】
一方、プロセッサ１は、描画対象の多角形Ｐが凹多角形であると判定された場合、多角形Ｐを複数の部分多角形ＰＰに分割するための部分多角形分割処理を行う（ステップＳ３６）。本ステップＳ３６が請求項における多角形分割部に相当する。ここで、図４および図５は、部分多角形分割処理の詳細な処理手順の前半部分および後半部分を示すフローチャートである。まず、図４において、プロセッサ１は、ワーキングエリア３上の多角形データＤpolyに含まれる頂点Ｐ1 〜Ｐn のいずれかを、基準頂点Ｐb （ｂ＝１，２，…，ｎ）として選択する（ステップＳ４０１）。
【００７４】
次に、プロセッサ１は、ワーキングエリア３上の頂点Ｐ1 〜Ｐn の中から、頂点Ｐc およびＰ(c+1) を選択する（ステップＳ４０２）。本ステップＳ４０２において、頂点Ｐc は、多角形データＤpolyにおいて、基準頂点Ｐb の次に配置されており、前述の順方向に従って多角形Ｐを一筆書きする場合に、基準頂点Ｐb の次に描かれる。また、頂点Ｐ(c+1) は、多角形データＤpolyにおいて頂点Ｐc の次に配置されており、順方向に従って多角形Ｐを一筆書きする場合に、頂点Ｐc の次に描かれる。
なお、上記ステップＳ４０１およびＳ４０２の組み合わせが、請求項における第１の選択ステップに相当する。
【００７５】
次に、プロセッサ１は、下記の第１および第２の条件を満たすか否かを判定する（ステップＳ４０３）。第１の条件は、現在の基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) からなる三角形△Ｐb Ｐc Ｐ(c+1) の内部に、他の頂点Ｐi が位置しないという条件である。第１の条件において、他の頂点Ｐi とは、頂点Ｐ1 〜Ｐn の中の少なくとも１つであり、かつステップＳ４０１およびＳ４０２で選択されていないものを意味する。つまり、ステップＳ４０３においては、ｉ≠ｂ，ｉ≠ｃ，ｉ≠ｃ＋１である。
【００７６】
第２の条件は、現在の基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) とがなす角∠Ｐb Ｐc Ｐ(c+1) が凸であるという条件である。∠Ｐb Ｐc Ｐ(c+1) の凹凸判定に関しては、従来の技術の欄における凹多角形判定部７０２と同様の処理を行えばよいので、ここでは詳しい説明を省略する。
以上の第１および第２の両条件を満たさない場合、プロセッサ１は、今回の基準頂点Ｐb が、後述する部分多角形ＰＰのものとして不適切であるとみなして、ステップＳ４０１に戻り、別の基準頂点Ｐb を選択する。
【００７７】
一方、ステップＳ４０３において、第１および第２の両条件を満たす場合、プロセッサ１は、現在の基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) を、後述する部分多角形ＰＰの頂点として、ワーキングエリア３に登録する。さらに、カウンタ（図示せず）の値Ｖtri を１だけインクリメントして、その初期値０から１に変更する（ステップＳ４０４）。ここで、値Ｖtri は、後述する部分多角形ＰＰに含まれる三角形（つまり、△Ｐb Ｐc Ｐ(c+1) または△Ｐb Ｐ(c+1) Ｐ(c+2) ）の現在の個数を示す。
【００７８】
次に、プロセッサ１は、現在のカウンタ値Ｖtri が（ｎ−２）と等しいか否かを判定する（ステップ４０５）。多角形Ｐが含むｎ個の頂点Ｐ1 〜Ｐn から、３つの頂点Ｐを選んで三角形を作った時、当該三角形の総数は（ｎ−２）個となる。したがって、カウンタ値Ｖtri ＝（ｎ−２）であれば、今回の多角形Ｐからは、次のステップＳ４０６で選択しうる頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) の組み合わせをすべて選択し尽くしたことになる。一方、カウンタ値Ｖtri ≠（ｎ−２）であれば、今回の多角形Ｐから、次のステップＳ４０６で選択しうる頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) の組み合わせがまだ残っていることになる。
【００７９】
以上のことから、Ｖtri ＝（ｎ−２）の場合には、プロセッサ１は、描画対象の多角形Ｐを複数の部分多角形ＰＰに完全に分割し終えたとみなして、ステップＳ４１４に進む。ただし、ステップＳ４１４については後で説明した方が分かり易いので、ここではその説明をしない。
【００８０】
一方、Ｖtri ≠（ｎ−２）であれば、プロセッサ１は、描画対象の多角形Ｐを完全に分割し終えていないとして、ステップＳ４０６に進む。そして、プロセッサ１は、ワーキングエリア３上の頂点Ｐ1 〜Ｐn の中から、現在の基準頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) を選択する（ステップＳ４０６）。ただし、頂点Ｐ(c+1) として頂点Ｐn が選択されている場合には、頂点Ｐ(c+2) としては頂点Ｐ1 が選択される。なお、本ステップＳ４０６が、請求項における第２の選択ステップに相当する。
【００８１】
また、頂点Ｐ(c+1) は、ワーキングエリア３上の多角形データＤpolyにおいて、現在の頂点Ｐc の直後に設定されており、前述の順方向に従って多角形Ｐを一筆書きした場合に、当該頂点Ｐc の次に描かれる。また、頂点Ｐ(c+2) は、多角形データＤpolyにおいて頂点Ｐ(c+1) の次に設定されており、順方向に従って多角形Ｐを一筆書きする場合に、当該頂点Ｐ(c+1) の次に描かれる。
【００８２】
ステップＳ４０６の次に、プロセッサ１は、下記の第３および第４の条件を満たすか否かを判定する（ステップＳ４０７）。第３の条件は、現在の基準頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) からなる三角形△Ｐb Ｐ(c+1) Ｐ(c+2) の内部に、他の頂点Ｐj が位置しないという条件である。第３の条件において、他の頂点Ｐj とは、多角形データＤpolyに含まれる頂点Ｐ1 〜Ｐn の中の少なくとも１つであり、かつステップＳ４０６で未選択のものを意味する。つまり、ステップＳ４０７においては、ｊ≠ｂ，ｊ≠ｃ＋１，ｊ≠ｃ＋２である。
【００８３】
第４の条件は、現在の基準頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) がなす角∠Ｐb Ｐ(c+1) Ｐ(c+2) が凸であるという条件である。角∠Ｐb Ｐ(c+1) Ｐ(c+2) の凹凸判定は、上述の通り周知技術を適用できるため、その詳しい説明を省略する。
第３および第４の条件の両方を満たす場合、プロセッサ１は、現在の頂点Ｐ(c+2) を、後述する部分多角形ＰＰの頂点として、ワーキングエリア３の所定領域に追加登録する。さらに、カウンタ（図示せず）の値Ｖtri を１だけインクリメントする（ステップＳ４０８）。なお、第３および第４の条件の両方を満たさない場合については、後で説明する。
【００８４】
さて、ステップＳ４０８の次に、プロセッサ１は、現在の頂点Ｐ(c+2) を新しい頂点Ｐ(c+1) として設定する（ステップＳ４０９）。本ステップＳ４０９が請求項における設定ステップに相当する。その後、プロセッサ１は、ステップＳ４０５に戻り、ステップＳ４０５でＶtri ＝（ｎ−２）と判定するまで、またはステップＳ４０７において第３および第４の両条件を満たさないと判定するまで、ステップＳ４０５〜Ｓ４０９からなるループを繰り返し実行する。
【００８５】
ここで、かかるループに含まれるステップＳ４０５において、Ｖtri ＝（ｎ−２）を満たす場合には、上述したように、プロセッサ１は、描画対象の多角形Ｐを複数の部分多角形ＰＰに完全に分割し終えたとみなして、ステップＳ４１４に進む。ステップＳ４１４に部分多角形分割処理が進んだ時、ワーキングエリア３上には、最後の部分多角形ＰＰを構成する頂点が登録されている。最後の部分多角形ＰＰの頂点は、ステップＳ４０４で登録された現在の基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) だけ、または、当該基準頂点Ｐb 、当該頂点Ｐc および当該頂点Ｐ(c+1) ならびにステップＳ４０８で追加登録された少なくとも１つの頂点Ｐ(c+2) である。プロセッサ１は、以上の基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) だけ、または、これら３つの頂点Ｐおよび少なくとも１つの頂点Ｐ(c+2) からなる部分多角形データＤpartを作成し（ステップＳ４１４）、その後、図４および図５に示す部分多角形分割処理から抜ける。つまり、プロセッサ１は、図３のステップＳ３６から抜けて、ステップＳ３７に進む。
【００８６】
ステップＳ４１４で作成された部分多角形データＤpartは部分多角形ＰＰを特定する。ここで、部分多角形ＰＰは、描画対象の多角形Ｐの一部であり、より具体的には、描画対象の多角形Ｐの現在の基準頂点Ｐb を含む△Ｐb Ｐc Ｐ(c+1) だけ、または、当該△Ｐb Ｐc Ｐ(c+1) および少なくとも１つの△Ｐb Ｐ(c+1) Ｐ(c+2) からなる。ここで、部分多角形ＰＰが複数の三角形の集合からなる場合には、部分多角形ＰＰに属する△Ｐb Ｐc Ｐ(c+1) および△Ｐb Ｐ(c+1) Ｐ(c+2) は、同じ部分多角形ＰＰに属する他の△Ｐb Ｐc Ｐ(c+1)、および△Ｐb Ｐ(c+1) Ｐ(c+2) のいずれかと少なくとも１つの辺を共有する。
【００８７】
ステップＳ４０７において第３および第４の両条件を満たさないと判定された場合、プロセッサ１は、現在の頂点Ｐ(c+2) が今回の部分多角形ＰＰの頂点として不適切であり、さらに、描画対象の多角形Ｐから１つの部分多角形ＰＰを分割し終えたとみなして、図５のステップＳ４１０に進む。ここで、第３および第４の両条件を満たさない場合、頂点Ｐ(c+2) が多角形ＰＰの頂点として不適切な理由は後で説明する。
【００８８】
ステップＳ４１０に部分多角形分割処理が進んだ時、ワーキングエリア３上には１つの部分多角形ＰＰを構成する頂点が登録されている。部分多角形ＰＰの頂点は、ステップＳ４０４で登録された基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) だけ、または、当該基準頂点Ｐb 、当該頂点Ｐc 、当該頂点Ｐ(c+1) およびステップＳ４０８で追加登録された少なくとも１つの頂点Ｐ(c+2) である。プロセッサ１は、基準頂点Ｐb 、頂点Ｐc および頂点Ｐ(c+1) のみからなる、または、これら３頂点Ｐおよび少なくとも１つの頂点Ｐ(c+2) からなる部分多角形データＤpartを作成し、さらに、当該部分多角形データＤpartをワーキングエリア３上で保持する。本ステップＳ４１０で作成された部分多角形データＤpartは、ステップＳ４１４で作成されたものと同様の部分多角形ＰＰを特定する。さらに、１つの部分多角形ＰＰを作成し終わったことになるので、次の部分多角形ＰＰに含まれる三角形の個数を計数するための準備として、カウンタの値Ｖtri を０にリセットする（ステップＳ４１０）。
【００８９】
次に、プロセッサ１は、ワーキングエリア３上の多角形データＤpolyから、多角形データＤpoly’を作成する（ステップＳ４１１）。より具体的には、プロセッサ１は、多角形データＤpolyが含む頂点座標Ｐ1 〜Ｐn から、ステップＳ４０２およびＳ４０６で選択された頂点Ｐc 、Ｐ(c+1) およびＰ(c+2) を除去する。ただし、最後に選択された頂点Ｐ(c+2) （つまり、現在の頂点Ｐ(c+2) ）は、後のステップＳ４１３で新しい基準頂点Ｐb として選択されるので除去されない。さらに、基準頂点Ｐb も多角形データＤpoly’を構成するために必要であるから除去されない。そして、プロセッサ１は、後の処理での便宜のため、現在残っている頂点座標Ｐを並び替えて、現在の頂点座標Ｐ(c+2) 〜頂点座標Ｐn および頂点座標Ｐb がその内部に順番に並んでいる多角形データＤpoly’を作成する。つまり、多角形データＤpoly’は、現在の頂点座標Ｐ(c+2) 〜頂点座標Ｐn および基準頂点座標Ｐb からなる多角形を一筆書きできるようなデータ構造を有する。なお、多角形データＤpolyが含む付随情報については、多角形データＤpoly’にそのまま設定されてもよいし、ワーキングエリア３の他の領域に退避されてもよい。
【００９０】
次に、プロセッサ１は、多角形データＤpoly’を、新しい多角形データＤpolyに設定し（ステップＳ４１２）、さらに、現在の頂点Ｐ(c+2) を新しい基準頂点Ｐb に設定する（ステップＳ４１３）。その後、プロセッサ１は、図４のステップＳ４０２に戻って、以降の処理を進める。
【００９１】
以上、部分多角形分割処理を、図４および図５を参照して説明した。以下には、その理解をより深めるために、図６（ａ）に示すような凹多角形Ｐを特定する多角形データＤpolyに対する部分多角形分割処理ついて説明する。また、図６（ａ）の凹多角形Ｐを特定するために、処理対象となる多角形データＤpolyには、図６（ｂ）に示すように、頂点座標Ｐ1 〜Ｐ14が順番に並んでいる。
【００９２】
まず、ステップＳ４０１では、図７（ａ）の星印で示すように、頂点Ｐ1 が基準頂点Ｐb として選択される。次のステップＳ４０２では、頂点Ｐ2 が頂点Ｐc として選択され、頂点Ｐ3 が頂点Ｐ(c+1) として選択される。ここで、ステップＳ４０３において、△Ｐ1 Ｐ2 Ｐ3 が第１の条件を満たし、かつ∠Ｐ1 Ｐ2 Ｐ3 が第２の条件を満たすと仮定すると、ステップＳ４０４において、頂点Ｐ1 〜Ｐ3 が部分多角形ＰＰの頂点として登録され、さらに、カウンタ値Ｖtri が初期値０から１に変更される。
【００９３】
頂点Ｐ1 〜Ｐ3 だけが部分多角形ＰＰの頂点として登録されている条件下では、Ｖtri ＝１であり、さらに、現在、（ｎ−２）＝１２であるから、ステップＳ４０５ではＶtri ≠（ｎ−２）と判断されるので、ステップＳ４０６において、基準頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) の組み合わせとして、頂点Ｐ1 、頂点Ｐ3 および頂点Ｐ4 の組み合わせが選択される。今、ステップＳ４０７において、△Ｐ1 Ｐ3 Ｐ4 が第３の条件を満たし、かつ∠Ｐ1 Ｐ3 Ｐ4 が第４の条件を満たすと仮定すると、ステップＳ４０８において、部分多角形ＰＰの頂点として、頂点Ｐ4 が追加登録され、さらにカウンタの値Ｖtri が１から２に更新される。その後のステップＳ４０９において、現在の頂点Ｐ(c+2) である頂点Ｐ4 が新しい頂点Ｐ(c+1) として設定される。
【００９４】
そして、ステップＳ４０５でＶtri ≠（ｎ−２）と判断された後、ステップＳ４０６が行われる。現在の基準頂点Ｐb および頂点Ｐ(c+1) は頂点Ｐ1 および頂点Ｐ4 であるから、ステップＳ４０６では、頂点Ｐ(c+2) として頂点Ｐ5 が選択される。今、ステップＳ４０７において、△Ｐ1 Ｐ4 Ｐ5 が第３の条件を満たし、かつ∠Ｐ1 Ｐ4 Ｐ5 が第４の条件を満たすと仮定すると、ステップＳ４０８において、部分多角形ＰＰの頂点として、頂点Ｐ5 が追加登録され、さらにカウンタの値Ｖtri が２から３に更新される。その後のステップＳ４０９において、現在の頂点Ｐ(c+2) である頂点Ｐ5 が新しい頂点Ｐ(c+1) として設定される。
【００９５】
そして、ステップＳ４０５でＶtri ≠（ｎ−２）であると判断された後、ステップＳ４０６において、頂点Ｐ6 が頂点Ｐ(c+2) として選択される。今、ステップＳ４０７において、△Ｐ1 Ｐ5 Ｐ6 が第３の条件を満たし、かつ∠Ｐ1 Ｐ5 Ｐ6 が第４の条件を満たすと仮定すると、頂点Ｐ6 は、ステップＳ４０８において追加登録され、さらにカウンタの値Ｖtri が４に更新される。さらに、頂点Ｐ6 は、ステップＳ４０９において、新しい頂点Ｐ(c+1) として設定される。
【００９６】
その後、ステップＳ４０５でＶtri ≠（ｎ−２）であると判断され、ステップＳ４０６で、頂点Ｐ7 が頂点Ｐ(c+2) として選択される。ここで、∠Ｐ1 Ｐ6 Ｐ7 は凹であるとすると、第４の条件は満足しない。したがって、プロセッサ１は、現在の頂点Ｐ(c+2) つまり頂点Ｐ7 が部分多角形ＰＰの頂点として不適切であるとみなす。頂点Ｐ7 が多角形ＰＰの頂点として不適切であるのは、∠Ｐb Ｐ(c+1) Ｐ(c+2) としての∠Ｐ1 Ｐ6 Ｐ7 が凹であると、頂点Ｐ5 から頂点Ｐ6 へと向かう線分に対して、頂点Ｐ6 から頂点Ｐ7 へと向かう線分が逆戻りするようになってしまい、正確な部分多角形ＰＰが、後で行われるステップＳ３７で描画されないからである。なお、第３の条件を満たさない場合も、同様の理由で、頂点Ｐ(c+2) が多角形ＰＰの頂点として不適切であると判断される。
【００９７】
以上のように、第３および第４の両条件を満たさないと判定されると、プロセッサ１が多角形Ｐから１つの部分多角形ＰＰを分割し終えたとみなし、ステップＳ４１０が行われる。今回のステップＳ４１０では、頂点座標Ｐ1 〜頂点座標Ｐ6 を含む部分多角形データＤpartが作成され保持される。さらに、ステップＳ４１０では、カウンタ値Ｖtri （＝４）が０にリセットされる。ここで、便宜上、今回作成された部分多角形データＤpartを部分多角形データＤpart1 と称する。部分多角形データＤpart1 は、図７（ａ）の斜線を付けた部分に示すように、頂点Ｐ1 〜Ｐ6 からなる部分多角形ＰＰ1 を特定する。
【００９８】
ここで、部分多角形ＰＰ1 は、それぞれが基準頂点Ｐb （＝Ｐ1 ）を含む三角形△Ｐ1 Ｐ2 Ｐ3 、△Ｐ1 Ｐ3 Ｐ4 、△Ｐ1 Ｐ4 Ｐ5 および△Ｐ1 Ｐ5 Ｐ6 との集合である。さらに、△Ｐ1 Ｐ2 Ｐ3 は、△Ｐ1 Ｐ3 Ｐ4 と、辺Ｐ1 Ｐ3 を共有する。他の△Ｐ1 Ｐ3 Ｐ4 、△Ｐ1 Ｐ4 Ｐ5 および△Ｐ1 Ｐ5 Ｐ6 もまた、部分多角形ＰＰ1 に属しておりかつ自身を除いた他の三角形のいずれかと少なくとも１つの辺を共有する。
【００９９】
次に、ステップＳ４１１では、前述したように、頂点座標Ｐ1 〜Ｐn から、頂点Ｐc 、頂点Ｐ(c+1) および、現在の頂点Ｐ(c+2) を除く他の頂点Ｐ(c+2) が除去される。したがって、ワーキングエリア３上の多角形データＤpolyから頂点座標Ｐ2 〜Ｐ5 が除去された後、頂点座標Ｐの並び替えが行われ、これによって、図７（ｂ）に示すように、その内部に１０個の頂点座標Ｐ6 〜Ｐ14およびＰ1 が順番に並んでいる多角形データＤpoly’が作成され、ステップＳ４１２において、当該多角形データＤpoly’が、新しい多角形データＤpolyとして設定される。その後、ステップＳ４１３において頂点Ｐ6 が基準頂点Ｐb として設定される。
【０１００】
基準頂点Ｐb が頂点Ｐ6 の時には、頂点Ｐ(c+1) が頂点Ｐ11でありかつ頂点Ｐ(c+2) が頂点Ｐ12である場合にはじめて、第３および第４の両条件を満たさなくなるので（ステップＳ４０７）、図８（ａ）に示すような部分多角形ＰＰ2 （右下がりの斜線を付けた部分参照）を特定する部分多角形データＤpart2 が作成され保持される（ステップＳ４１０）。そして、ステップＳ４１１において、ワーキングエリア３上の多角形データＤpolyから頂点座標Ｐ7 〜Ｐ10が除去された後、頂点座標Ｐの並び替えが行われ、これによって、図８（ｂ）に示すように、６個の頂点座標Ｐ11〜Ｐ14ならびに頂点座標Ｐ1 およびＰ6 が、順番に並んでいる多角形データＤpoly’が作成され、ステップＳ４１２において、当該多角形データＤpoly’が新しい多角形データＤpolyとして設定される。
【０１０１】
さらに、ステップＳ４１３において、図８（ａ）に示すように、頂点Ｐ11が基準頂点Ｐb として設定された後、部分多角形分割処理はステップＳ４０２に戻る。ステップＳ４０２では、頂点Ｐ12が頂点Ｐc として選択され、頂点Ｐ13が頂点Ｐ(c+1) として選択される。ここで、ステップＳ４０３において、△Ｐ11Ｐ12Ｐ13が第１の条件を満たし、かつ∠Ｐ11Ｐ12Ｐ13が第２の条件を満たすと仮定すると、ステップＳ４０４において、頂点Ｐ11〜Ｐ13が登録され、さらに、カウンタ値Ｖtri が１に更新される。
【０１０２】
頂点Ｐ11〜Ｐ13だけが部分多角形ＰＰの頂点として登録されている条件下では、Ｖtri ＝１であり、さらに、現在、（ｎ−２）＝４であるから、ステップＳ４０５ではＶtri ≠（ｎ−２）と判断されるので、ステップＳ４０６において、基準頂点Ｐb 、頂点Ｐ(c+1) および頂点Ｐ(c+2) の組み合わせとして、頂点Ｐ11、頂点Ｐ13および頂点Ｐ14の組み合わせが選択される。今、ステップＳ４０７において、△Ｐ11Ｐ13Ｐ14が第３の条件を満たし、かつ∠Ｐ11Ｐ13Ｐ14が第４の条件を満たすと仮定すると、ステップＳ４０８において頂点Ｐ14が追加登録され、さらにカウンタの値Ｖtri が２に更新される。その後のステップＳ４０９において、現在の頂点Ｐ(c+2) である頂点Ｐ14が新しい頂点Ｐ(c+1) として設定される。
【０１０３】
そして、ステップＳ４０５でＶtri ≠（ｎ−２）と判断された後、ステップＳ４０６が行われる。現在の基準頂点Ｐb および頂点Ｐ(c+1) は頂点Ｐ11および頂点Ｐ14であり、さらに、現在の多角形データＤpolyにおいて頂点Ｐ14の直後には頂点Ｐ1 が設定されているので、ステップＳ４０６では、頂点Ｐ(c+2) として頂点Ｐ1 が選択される。今、ステップＳ４０７において、△Ｐ11Ｐ14Ｐ1 が第３の条件を満たし、かつ∠Ｐ11Ｐ14Ｐ1 が第４の条件を満たすと仮定すると、ステップＳ４０８において頂点Ｐ1 が追加登録され、さらにカウンタの値Ｖtri が３に更新される。その後のステップＳ４０９において、現在の頂点Ｐ(c+2) である頂点Ｐ1 が新しい頂点Ｐ(c+1) として設定される。
【０１０４】
そして、ステップＳ４０５でＶtri ≠（ｎ−２）であると判断された後、ステップＳ４０６において、現在の多角形データＤpolyにおいて、頂点Ｐ1 の直後に設定されている頂点Ｐ6 が頂点Ｐ(c+2) として選択される。今、ステップＳ４０７において、△Ｐ11Ｐ1 Ｐ6 が第３の条件を満たし、かつ∠Ｐ11Ｐ1 Ｐ6 が第４の条件を満たすと仮定すると、頂点Ｐ6 は、ステップＳ４０８において追加登録され、さらにカウンタの値Ｖtri が４に更新される。さらに、頂点Ｐ6 は、ステップＳ４０９において、新しい頂点Ｐ(c+1) として設定される。
【０１０５】
その後、ステップＳ４０５でＶtri ＝（ｎ−２）であると判断されので、プロセッサ１が描画対象の多角形Ｐから部分多角形ＰＰを完全に分割し終えたとみなし、多角形分割処理は、ステップＳ４１４に進む。ステップＳ４１４では、現在ワーキングエリア３に登録されている頂点座標Ｐ11〜Ｐ14、ならびに頂点座標Ｐ1 およびＰ6 を含む部分多角形データＤpartが作成され保持される。便宜上、今回作成された部分多角形データＤpartを部分多角形データＤpart3 と称する。部分多角形データＤpart3 は、図８（ｂ）の格子状のハッチングを付けた部分に示すような部分多角形ＰＰ3 を特定する。
【０１０６】
以上、図６〜図８を参照して、部分多角形分割処理の具体例について説明した。かかる具体例では、ワーキングエリア３上には、３つの部分多角形データＤpart1 〜Ｄpart3 が作成される。その後、プロセッサ１は、図４および図５に示す部分多角形分割処理から抜けて、図３のステップＳ３７に進む。
【０１０７】
ステップＳ３７において、プロセッサ１は、ステップＳ３６で作成された１つの部分多角形データＤpartを選択した後、多角形データＤpolyの付随情報としての色情報に従って、ワーキングエリア３上で、部分多角形ＰＰを表す部分画像データを作成する。より具体的には、部分画像データは、部分多角形ＰＰの形状を表しており、かつ色情報により特定される色で当該部分多角形ＰＰが塗りつぶされたデータを意味する。プロセッサ１は、以上のような部分多角形描画処理を他の部分多角形データＤpartに対しても行い、これによって、描画対象となる多角形Ｐを形状を表しかつ当該多角形Ｐの内部が色情報に従って塗りつぶされた画像データＤimage をワーキングエリア３上に作成する（ステップＳ３７）。以上のステップＳ３７は、請求項における部分多角形描画部に相当する。
【０１０８】
ここで、ステップＳ３７において、プロセッサ１はさらに、図９に示すように、ステップＳ３６で作成された各部分多角形データＤpartに透視投影変換処理を行ってもよい。透視投影変換処理においては、各部分多角形データＤpartが座標変換されることにより、各部分多角形ＰＰは、三次元空間上において予め定められた視点ＶＰを含む視線ベクトルに対して垂直なスクリーンＳＲ上に投影され、その結果、スクリーンＳＲ上には多角形Ｐ’が表示される。
以上のステップＳ３７が終わった後、プロセッサ１は、ワーキングエリア３上で作成した画像データＤimage を表示装置Ｕdispに転送する（ステップＳ３８）。表示装置Ｕdispは、転送されてきた画像データＤimage に従って、表示制御を行って、自身の画面上に、多角形Ｐを表示する。
【０１０９】
以上説明したように、本実施形態に係る描画装置Ｕrendによれば、部分多角形分割処理（ステップＳ３６）により、描画対象の凹多角形Ｐは部分多角形ＰＰに分割される。そのため、ステップＳ３７では、部分多角形ＰＰを単位として、部分多角形描画処理が行われ、凹多角形Ｐを表す画像データＤimage が作成される。そのため、従来の三角形単位で行われる凹多角形Ｐの描画処理と比較して、部分多角形描画処理において処理されるデータ量、特に頂点座標Ｐの数が格段に少なくなる。これによって、描画対象の凹多角形Ｐを従来よりも高速に描画することが可能となる。
【０１１０】
なお、以上の説明では、ステップＳ３６およびＳ３７は、凹多角形Ｐを特定する多角形データＤpolyに対して行われたが、凸多角形Ｐの多角形データＤpolyに対して行われてもよい。
また、以上の実施形態では、プロセッサ１は、ステップＳ３１において、多角形データＤpolyを、端末装置Ｄtermが内部に備える記憶装置Ｕstorからワーキングエリア３に読み出して、後の処理を行うと説明した。しかし、これに限らず、プロセッサ１は、ネットワークやバスに代表される通信路を通じて送信されてきた多角形データＤpolyをワーキングエリア３に転送し、当該多角形データＤpolyに対して、ステップＳ３２〜Ｓ３８を行ってもよい。つまり、記憶装置Ｕstorは必ずしも、描画装置Ｕrendの必須の構成とはならない。
【０１１１】
また、以上の実施形態では、プロセッサ１は、ステップＳ３８において、画像データＤimage を、ワーキングエリア３から端末装置Ｄtermが内部に備える表示装置Ｕdispに転送すると説明した。しかし、これに限らず、プロセッサ１は、上記通信路を通じて、端末装置Ｄtermの外部に設置された表示装置に画像データＤimageを転送するようにしてもよい。つまり、表示装置Ｕdispは必ずしも、描画装置Ｕrendの必須の構成とはならない。
【０１１２】
また、以上の実施形態では、多角形データＤpolyは、描画対象となる多角形Ｐを一筆書きできる順番に、頂点座標Ｐ1 〜Ｐn を含むと説明した。しかしながら、多角形データＤpolyに、多角形Ｐを一筆書きできる順番に頂点座標Ｐが並んでいない場合には、プロセッサ１は、付随情報としての接続情報に従って、多角形Ｐを一筆書きできる順番に頂点座標Ｐ1 〜Ｐn を並び替えた後に、ステップＳ３６を行えばよい。
【０１１３】
さらに、以上の実施形態では、記憶装置Ｕstor内の部分多角形データＤpartは、部分多角形ＰＰが複数の三角形の集合からなる場合には、基準頂点Ｐb を含む三角形△Ｐb Ｐc Ｐ(c+1) および少なくとも１つの三角形△Ｐb Ｐ(c+1) Ｐ(c+2) からなる部分多角形ＰＰを特定する頂点座標Ｐからなっていた。しかし、プロセッサ１は、自身の処理能力によっては、部分多角形ＰＰを描くことができず、単なる四角形しか描けない場合がある。このような場合、プロセッサ１は、部分多角形データＤpartとして、基準頂点Ｐb を含む四角形□Ｐb Ｐc Ｐ(c+1) Ｐb および少なくとも１つの四角形□Ｐb Ｐ(c+1) Ｐ(c+2) Ｐb からなる部分多角形ＰＰを特定する頂点座標Ｐからなるものを作成すればよい。プロセッサ１がかかる部分多角形データＤpartに従って部分多角形描画処理（ステップＳ３７）を行うと、形式的には、図１０（ａ）に示すように、四角形□Ｐb Ｐc Ｐ(c+1) Ｐb および四角形□Ｐb Ｐ(c+1) Ｐ(c+2) Ｐb を描くこととなるが、両四角形において、基準頂点Ｐb が重複するので、結果として、図１０（ｂ）に示すような部分多角形ＰＰを描画することとなる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る描画装置Ｕrend の構成を示すブロック図である。
【図２】多角形データＤpolyのデータ構造の一例を示す図である。
【図３】プロセッサ１の処理手順を示すメインフローチャートである。
【図４】ステップＳ２６の詳細な処理手順を示すフローチャートの前半部分である。
【図５】ステップＳ２６の詳細な処理手順を示すフローチャートの後半部分である。
【図６】描画対象となる多角形Ｐおよび多角形データＤpolyの例を示す図である。
【図７】部分多角形ＰＰ1 、および最初の多角形データＤpoly’を示す図である。
【図８】部分多角形ＰＰ1 〜ＰＰ3 および最後の多角形データＤpoly’を示す図である。
【図９】透視投影変換を説明するための図である。
【図１０】特別な場合における部分多角形ＰＰの描画方法および結果を示す図である。
【図１１】従来の描画装置ＣＵrendの構成を示すブロック図である。
【図１２】描画装置ＣＵrendにおける相似変換を説明するための図である。
【図１３】描画装置ＣＵrendにおける凹凸判定を説明するための図である。
【図１４】描画装置ＣＵrendにおける第２の三角形分割の手順を示すフローチャートである。
【符号の説明】
Ｕrend…描画装置
１…プロセッサ
２…プログラムメモリ
２１…レンダリング用のプログラム
３…ワーキングエリア
Ｕstor…記憶装置
Ｕdisp…表示装置
【図１】
0004541533.tif 000002
【図２】
0004541533.tif 000003
【図３】
0004541533.tif 000004
【図４】
0004541533.tif 000005
【図５】
0004541533.tif 000006
【図６】
0004541533.tif 000007
【図７】
0004541533.tif 000008
【図８】
0004541533.tif 000009
【図９】
0004541533.tif 000010
【図１０】
0004541533.tif 000011
【図１１】
0004541533.tif 000012
【図１２】
0004541533.tif 000013
【図１３】
0004541533.tif 000014
【図１４】
0004541533.tif 000015