(57)【特許請求の範囲】
【請求項１】
任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において，
前記任意形状の多角形の頂点データを順次入力し，前記クリップ枠内で切り取られたクリップ後の多角形の１つの頂点を起点データとして生成するクリップ起点生成部と，
前記起点と前記任意形状の多角形の２つの頂点データからなる第１の三角形について，順次，前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて，前記起点を１つの頂点とする少なくとも１つの第２の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有するジオメトリクリッピング装置であって、
前記クリップ多角形生成部は，前記任意形状の多角形の頂点であって，連続して入力される第１，２，３の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は，前記起点と第１，２の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく，前記起点と第１，３の頂点で画定される第１の三角形について当該頂点を求めることを特徴とするジオメトリクリッピング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，３次元や２次元空間に定義された図形データを表示装置に表示するグラフィックス装置において利用され，任意形状の多角形をクリップ枠内に切り取るジオメトリクリッピング装置に関するものである。
【０００２】
【従来の技術】
多角形や線などの図形データをCRTや液晶画面などの２次元画面上に表示するグラフィックス装置では，表示画面からはみ出すデータを切り取るクリッピング処理が必要になる。一般に，クリッピングは，多角形（ポリゴン）を構成する頂点情報とクリップ枠（またはクリップボリューム）とから切り取られた多角形の新たな頂点情報を作り出すジオメトリクリッピングと，多角形や線を表示画面に相当するフレームメモリに書きこむ時に，描画するピクセル単位にクリップ枠（またはクリップボリューム）との内外判定を行うピクセルクリッピングとが組み合わせられる。
【０００３】
ここで，フレームメモリとは，表示画面の各画素（ピクセル）の色情報を２次元配列状に格納する記憶手段であり，通常，表示手段への表示は，この配列内の色情報を読み出して行われる。
【０００４】
近年のグラフィクス装置は，カーナビゲーションシステムなどに応用されるようになってきたが，地図情報などを描画するにあたっては，凸形状だけでなく凹形状の多角形描画も正確に行う必要がある。
【０００５】
上記のジオメトリクリッピングのうち，多角形（ポリゴン）の頂点情報のみからクリッピングを行う方法として，サザーランド・ホッジマンのアルゴリズムが提案されている。図１０は，サザーランド・ホッジマンのアルゴリズムを説明する図である。図１０には，６角形のポリゴンＰ０の一部の領域にクリップ枠CLが重なる場合を示す。図１０（ａ）の状態で，クリップ枠CLの上辺より上の領域が切り取られ，（ｂ）に示される中間ポリゴンＰ１が形成される。同様にして，クリップ枠CLの右辺より右側の領域が切り取られ，（ｃ）に示される中間ポリゴンＰ２が形成される。更に，クリップ枠CLの下辺より下側の領域及びクリップ枠の左辺より左側の領域が切り取られ，（ｃ）のハッチング領域で示される最終的なポリゴンＰ３が形成される。
【０００６】
そして，この最終ポリゴンＰ３の頂点情報が，クリップ後の多角形情報として描画装置に送られる。描画装置では，この切り取られたクリップ後の多角形の塗りつぶし処理が行われる。
【０００７】
図１１は，一般的な任意の形状の多角形内の塗りつぶしの例を示す図である。凹形状の多角形にも対応できるアルゴリズムでは，多角形の頂点のうち一つの頂点を起点にして，その起点と他の２つの頂点からなる三角形を順番に選択して排他的論理和処理し，最終的に論理値「１」が残った領域を塗りつぶし領域と判定することが提案されている。
【０００８】
図１１は，図１０で切り取られたクリップ後の多角形Ｐ３をピクセルクリッピングする場合について示す。右側のコラム（Ａ）がクリップ後の多角形から選択された三角形を示し，左側のコラム（Ｂ）が塗りつぶし領域を示すマスクバッファを示す。マスクバッファの斜線領域が論理値「１」を，斜線以外が論理値「０」をそれぞれ示す。
【０００９】
最初に，マスクバッファ内が全て論理値「０」にクリアされている。そこで，コラム（Ａ）の（１）において，起点１と点２，３からなる三角形を選択して，その三角形(1,2,3)の領域内のピクセルを論理値「１」として，マスクバッファと排他的論理和処理を行う。その結果，コラム（Ｂ）の（１）に示される通り，斜線領域が論理値「１」に変換される。
【００１０】
次に，コラム（Ａ）の（２）において，起点１と点３，４からなる三角形を選択して，その三角形(1,3,4)の領域内のピクセルを論理値「１」として，マスクバッファと排他的論理和処理を行う。その結果，コラム（Ｂ）の（２）に示される斜線領域が論理値「１」に変換される。
【００１１】
次に，コラム（Ａ）の（３）において，起点１と点４，５からなる三角形を選択して，その三角形(1,4,5)の領域内のピクセルを論理値「１」として，マスクバッファと排他的論理和処理を行う。その結果，三角形(1,4,5)の領域は論理値「０」に変換されて凹部が処理され，コラム（Ｂ）の（３）に示される斜線領域が論理値「１」のままとなる。
【００１２】
そして，最後に，コラム（Ａ）の（４）において，起点１と点５，６からなる三角形を選択して，その三角形(1,5,6)の領域内のピクセルを論理値「１」として，マスクバッファと排他的論理和処理を行う。その結果，コラム（Ｂ）の（４）に示される斜線領域が論理値「１」に変換され，クリップ後の多角形内の塗りつぶしすべきピクセルの位置が，マスクバッファ内に格納される。
【００１３】
その後，このマスクバッファ内の論理値「１」の領域に対応するフレームバッファ内の領域に所定の色データを記録することで，塗りつぶし処理が行われる。
【００１４】
図１１に示された方法によれば，凹形状を有する任意の多角形に対しても柔軟に塗りつぶし処理を行うことができる。かかる方法は，Open GL Programming Guide Second Edition ( P.516 Drawing Filled, Concave Polygons Using the Stencil Buffer )に詳細に記述されている。
【００１５】
【発明が解決しようとする課題】
しかしながら，上記のサザーランド・ホッジマンのアルゴリズムの場合，クリッピング処理中に生成される中間ポリゴンの頂点データを格納しておくためのメモリ領域が必要になる。カーナビゲーションシステムなどで用いられる地図情報は，海岸線データなど膨大な頂点を持つ多角形を含み，上記アルゴリズムによるジオメトリ処理装置は，頂点データ格納のために多くのハードウエア資源を必要とし，コスト面で不利である。
【００１６】
特開平７−２９６１７２号公報は，かかる問題点を解決する発明を開示する。この公報に記載された発明では，多角形の頂点データを順次処理してジオメトリクリッピングを行うことができるが，クリッピング処理により生成される頂点データを全て格納しておき，エッジ（辺）データを生成，格納した後に，塗りつぶし処理を行わなければならない。従って，依然として，中間的なデータを格納しておく多くのハードウエア資源が必要になる。
【００１７】
そこで，本発明の目的は，任意形状の多角形の頂点データを順次処理して，レンダリング装置に必要なクリッピング後の多角形の頂点データを順次供給することができるジオメトリクリッピング装置を提供することにある。
【００１８】
【課題を解決するための手段】
上記の目的を達成するために，本発明の一つの側面は，任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において，前記任意形状の多角形の頂点データを順次入力し，前記クリップ枠内で切り取られたクリップ後の多角形の１つの頂点を起点データとして生成するクリップ起点生成部と，前記起点と前記任意形状の多角形の２つの頂点データからなる第１の三角形について，順次，前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて，前記起点を１つの頂点とする少なくとも１つの第２の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有することを特徴とする。
【００１９】
上記発明によれば，クリップ起点生成部もクリップ多角形生成部も共に，最初の任意形状の多角形の頂点データを順次入力して処理することができ，更に，クリップ多角形生成部がクリップ後の多角形の頂点データを順次生成することができるので，従来例のように中間的な頂点データを格納するための膨大なハードウエア資源を必要としない。従って，地図の海岸線などのクリップ枠との交点が膨大になる画像データの処理に適している。
【００２０】
上記発明において，好ましい実施例では，３つの頂点で画定される三角形をクリップ枠内で切り取られるクリップ後の多角形の頂点データを求める内部クリップ手段が，前記クリップ起点生成部とクリップ多角形生成部とに共通に設けられる。
【００２１】
更に，好ましい実施例では，前記クリップ起点生成部は，最初に求められた前記クリップ後の多角形の頂点を，前記起点データとして生成することを特徴とする。
【００２２】
更に，別の好ましい実施例では，前記クリップ起点生成部は，前記任意形状の多角形の１つの頂点であって，前記クリップ枠内に位置する頂点を，前記起点データとして生成することを特徴とする。入力される任意形状の多角形の頂点がクリップ枠内に位置する場合は，その頂点を起点として出力することができる。従って，入力される頂点がクリップ枠内に位置する場合は，入力される頂点からなる三角形についてクリップ枠内の切り取り処理を行う必要がなくなる。
【００２３】
別の好ましい実施例では，前記クリップ多角形生成部は，前記任意形状の多角形の頂点であって，連続して入力される第１，２，３の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は，前記起点と第１，２の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく，前記起点と第１，３の頂点で画定される第１の三角形について当該頂点を求めることを特徴とする。これにより，クリップ後の多角形の頂点を求める処理の回数を減らすことができる。
【００２４】
更に，別の好ましい実施例では，前記クリップ起点生成部またはクリップ多角形生成部は，前記クリップ多角形の頂点データを，重複することなく，当該クリップ多角形の塗りつぶしを行う描画部に供給することを特徴とする。これにより，クリップ多角形の頂点データを供給される描画部は，順次供給される頂点で構成され多角形について，塗りつぶし領域を特定することができ，中間データを格納する必要がなく処理が簡便になる。
【００２５】
【発明の実施の形態】
以下，図面を参照して本発明の実施の形態例を説明する。しかしながら，かかる実施の形態例が，本発明の技術的範囲を限定するものではない。
【００２６】
図１は，本実施の形態例のジオメトリクリップ装置２０が設けられる画像処理装置（グラフィック装置）１４の構成図である。画像処理装置１４は，ホストコンピュータ１０から図形データファイル１２内の画像データのうち，任意形状の多角形（ポリゴン）の頂点データＳ１を供給されて，ジオメトリ処理，レンダリング処理を行い，フレームメモリ２４内にピクセル毎の色データを格納する。このフレームメモリ２４内の色データがデジタル・アナログ変換されて，表示装置２８に供給され，所定の画像が表示される。
【００２７】
画像データファイル１２内の画像データが３次元データの場合は，ポリゴンの頂点データＳ１は，座標変換部１８で表示画面の２次元データに透視変換され，変換後の頂点データＳ２がジオメトリクリップ部２０に出力される。画像データが２次元データの場合は，ポリゴンの頂点データＳ１は，座標変換部１８で表示画面の２次元データに変換され，ジオメトリクリップ部２０に出力される。
【００２８】
ジオメトリクリップ部２０は，変換後の頂点データＳ２を順次入力し，任意形状の多角形（ポリゴン）をクリップ枠内で切り出したクリップ後の多角形の頂点データＳ３を生成し，描画部であるレンダラ部２２にそのクリップ頂点データＳ３を順次供給する。このジオメトリクリップ部２０が，本実施の形態例の対象装置である。
【００２９】
描画部２２は，順次供給されるクリップ後の多角形の頂点データＳ３で形成される三角形について，マスクバッファ２６内のマスクデータと排他的論理和処理を行い，図１１で説明した任意多角形塗りつぶし処理を行う。そして，マスクバッファ２６で画定された領域に対応するフレームメモリ２４内の領域に，ポリゴンの色データを格納することで，塗りつぶし処理を行う。１フレーム期間内のポリゴンの描画処理が終了すると，フレームメモリ２４に格納された色データが出力され，表示装置２８に表示される。
【００３０】
図２は，ジオメトリクリップ部２０の構成図である。ジオメトリクリップ部２０は，任意形状の多角形（ポリゴン）の頂点データＳ２を順次入力し，クリップ枠内で切り取られたクリップ後の多角形の１頂点を起点データとして生成するクリップ起点生成部１０１と，その起点と任意形状の多角形の２つの頂点データＳ２からなる第１の三角形について，順次，クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて，起点を１つの頂点とする少なくとも１つの第２の三角形を含むクリップ後の多角形（クリップ多角形）の頂点データを生成するクリップ多角形生成部１０２とを有する。
【００３１】
更に，ジオメトリクリップ部２０は，クリップ多角形生成部１０２が，最後の第１の三角形についてクリップ後の多角形の頂点を生成した後の後処理を行うクリップ後処理部１０３を有する。そして，３つの頂点で画定される三角形をクリップ枠内で切り取られて得られるクリップ多角形の頂点データを求める内部クリップ手段１１０が，他の生成部101,102や処理部103に共通に設けられる。そして，内部クリップ手段110は，クリップ多角形生成部102やクリップ起点生成部101からの指令に応答して，３頂点からなる三角形の内部クリップ処理を行う。
【００３２】
クリップ起点生成部101，クリップ多角形生成部102，及びクリップ後処理部103は，生成した起点データやクリップ多角形の頂点データＳ３を描画部２２に順次出力する。
【００３３】
図３は，第１の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。この例は，図１０で示した６角形のポリゴンＰ０とクリップ枠CLと同じ関係にある。今仮にポリゴンＰ０が６個の頂点１〜６で構成されているものとする。
【００３４】
本実施の形態例におけるジオメトリクリップ部の処理は，最初に，ポリゴンＰ０の任意の頂点1を起点にして，頂点1,2,3の三角形，頂点1,3,4の三角形，頂点1,4,5，頂点1,5,6の三角形が，クリップ枠CL内に位置するか否かの判断を順次行い，最初に検出されたクリップ後の多角形の頂点Ｓを起点データとして生成する。これがクリップ起点生成部101により行われる。次に，今度は頂点Ｓを起点として，頂点S,1,3の三角形，頂点S,3,4の三角形，頂点S,4,5の三角形，頂点S,5,6の三角形，そして頂点S,6,1の三角形をクリップ枠内で切り取られるクリップ多角形の頂点Ｃ０，Ｃ１，Ｃ２，４，５，Ｃ３，Ｃ４，Ｃ５のデータを生成する。これらの処理は，一部クリップ起点生成部101により行われるが，大半はクリップ多角形生成部102により行われる。
【００３５】
三角形をクリップ枠内で切り取られるクリップ多角形の頂点は，既知の内部クリップ処理により求められるが，以下の例では，被クリップ処理の三角形の第１頂点がクリップ枠内にある場合，その第１頂点が内部クリップ処理結果の頂点列の第１頂点になる必要がある。それ以外は，いずれのアルゴリズムであってもよい。
【００３６】
上記の処理は，座標変換部１８から多角形の頂点データＳ２を多角形の周囲に沿って順次入力して行うことができ，一定の処理により生成されたクリップ後の多角形の頂点データＳ３を，その都度出力することができるので，中間の頂点データなどを格納しておく膨大なメモリ領域を設ける必要がない。
【００３７】
図４は，第１の実施の形態例におけるクリップ起点生成部101の処理フローチャート図である。まず，第1頂点（図３の頂点１）のデータＳ２を入力する（Ｓ１０）。そして，クリップ後処理のために一次的に第１頂点をメモリに退避する。更に，第１頂点がクリップ枠内か否かの判定を行う（Ｓ１１）。
【００３８】
第1頂点がクリップ枠内の場合，第1頂点を起点としてメモリに格納する（Ｓ１２）とともに，該起点データを出力する（Ｓ１３）。次に，第２頂点を入力して，それをカレント三角形の第２頂点として格納し（Ｓ１４），クリップ起点生成部の処理を終了する。即ち，第１頂点がクリップ枠内に存在する場合は，その第１頂点がクリップ処理の起点となり，図４のクリップ起点生成処理は終了する。
【００３９】
図３の例では，頂点１はクリップ枠CL内に位置していないので，工程Ｓ１６に進む。
【００４０】
一方，第1頂点がクリップ枠外の場合，工程Ｓ１６以下の処理が行われる。即ち，第２，第３頂点を入力し，（第１頂点，第２頂点，第３頂点）で形成される三角形を内部クリップ手段110により内部クリップ処理を行う（S16,S17）。
【００４１】
前述した通り，内部クリップ手段110は，被クリップ処理三角形をクリップ枠内で切り取ったクリップ後の多角形の頂点（以下クリップ頂点）を生成するという，当業者に既知の処理を行う。但し，被クリップ三角形の第1頂点がクリップ枠内にある場合，その第1頂点が内部クリップ処理結果の頂点列の第1頂点になるアルゴズムが含まれていることは必要である。内部クリップ手段110の入力図形は単純な三角形であるので，この処理は高速に処理でき，中間的な格納データを少なくすることができる。
【００４２】
内部クリップ処理の結果，クリップ頂点が存在しない場合（Ｓ１９でNOの場合），第4頂点を入力し，（第1頂点，第3頂点，第4頂点）で形成される三角形の内部クリップ処理を行う。この起点検出処理S17,S18,S19を起点が検出されるまで実行する。起点が検出されないまま，すべての頂点入力を完了した場合（Ｓ２５でNOの場合），凹形状多角形が完全にクリップ枠の外側と判断して，本ジオメトリクリップ処理を完了する。
【００４３】
被クリップ三角形(1,3,4)のように，内部クリップ処理の結果，クリップ枠内に存在するクリップ頂点を検出した場合（Ｓ１９），その頂点のいずれかを起点として格納する（Ｓ２０）。この処理フローでは，内部クリップ処理の結果見つかったクリップ頂点のうち，第１クリップ頂点を起点としている。従って，図３の例では，三角形(1,3,4)の内部クリッピング処理によりクリップ頂点S,C0,C2,4が見つかるが，その第１クリップ頂点Ｓが起点としてメモリに格納される。
【００４４】
第n頂点入力の後にクリップ起点検出処理において起点を検出した場合，その起点をメモリに格納するとともに，該起点を出力する（Ｓ２１）。次に，（起点，第１頂点，第n-1頂点），（起点，第n-1頂点，第n頂点）で形成される三角形の内部クリップ処理を行い，それぞれのクリップ処理結果の第１頂点を除くクリップ頂点列を出力する（S22,S23）。第１頂点は，起点Ｓとしてすでに出力されているので，重複して出力しないことが好ましい。
【００４５】
従って，図３の例では，第ｎ（＝４）頂点を入力した後に，クリップ頂点S,C0,C2,4が見つかるので，工程Ｓ２２では，（起点Ｓ，第１頂点，第n-1（=3））の三角形の内部クリップ処理が行われ，見つかったクリップ頂点S,C0,C1のうち，第１クリップ頂点Ｓを除くクリップ頂点C0,C1が出力される。更に，工程Ｓ２３では，（起点Ｓ，第n-1（=3）頂点，第ｎ（=4）頂点）の三角形の内部クリップ処理が行われ，見つかったクリップ頂点S,C1,C2,4のうち，第１クリップ頂点Ｓを除くクリップ頂点C1,C2,4が出力される。第ｎ頂点を入力した時点でクリップ頂点が見つかった場合，第n-2頂点以前の頂点からなる三角形は，クリップ枠内に位置しないので，それらの第２頂点から第n-2頂点までの頂点を含む三角形は，内部クリップ処理が不要になる。従って，工程S22,S23ではそれらの三角形の内部クリップ処理は省略される。
【００４６】
最後に，第n頂点をカレント三角形の第2頂点としてメモリに格納し（Ｓ２４），クリップ起点生成部の処理を終了する。
【００４７】
図５は，第１の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。図４のクリップ起点生成処理が終了した時点では，起点Ｓがカレント三角形の第１頂点，第ｎ頂点がカレント三角形の第２頂点に格納されている。そこで，クリップ多角形生成部102は，次の入力頂点が存在する場合（Ｓ３０），入力頂点をカレント三角形の第３頂点として格納する（Ｓ３１）。そして，すでに格納されているカレント三角形の第２頂点と，入力したカレント三角形の第３頂点がともにクリップ枠内にある場合（Ｓ３２でYESの場合）は，それぞれの頂点を描画部２２に出力する（Ｓ３３）。
【００４８】
カレント三角形の第２頂点と第３頂点がともにクリップ枠内にあるという条件以外の場合（Ｓ３３でNOの場合）は，（起点，カレント三角形の第２頂点，カレント三角形の第３頂点）で形成される三角形について，内部クリップ処理を行い，第１クリップ頂点を除く内部クリップ頂点列を順次出力する（Ｓ３５）。続いて，カレント三角形の第３頂点をカレント三角形の第２頂点として格納する（Ｓ３４）。上記の処理Ｓ３０〜Ｓ３５を，入力頂点データがなくなるまで繰り返す。次の入力頂点がなくなると（Ｓ３０でNOの場合），クリップ多角形生成部の処理が終了し，クリップ後処理部での処理になる。
【００４９】
クリップ後処理部103は，（起点，カレント三角形の第２頂点，退避している第1入力頂点）で形成される三角形の内部クリップ処理を行い，第1クリップ頂点を除く内部クリップ頂点列を順次出力する。
【００５０】
図３の例で説明すると，前述の通り，クリップ起点生成部101において，起点Ｓが生成され，工程S22,S23における三角形(S,1,3)，三角形(S,3,4)の内部クリップ処理により，クリップ頂点列(S,C0,C1)と，(S,C1,C2,4)が検出され，最初のクリップ頂点Ｓを除く頂点列がそれぞれ出力される。従って，クリップ起点生成部101におけるクリップ頂点の出力列は，
起点S，頂点列(C0,C1)，頂点列(C1,C2,4)
となる。
【００５１】
次に，クリップ多角形生成部102において，頂点５，６が処理される。頂点５が入力された時は，三角形(S,4,5)の頂点４，５は共にクリップ枠内にあるので，工程Ｓ３３にて，
頂点列(4,5)
が出力される。更に，頂点６が入力された時は，頂点５，６は共にクリップ枠内にないので，工程Ｓ３５での三角形(S,5,6)の内部クリップ処理により，
頂点列(5,C3,C4)
が出力される。この場合のクリップ多角形は，起点Ｓと頂点5,C3,C4からなる四角形であり，起点Ｓを有する２つの三角形を有する。
【００５２】
そして，最後に，クリップ後処理部103では，三角形(S,6,1)が内部クリップ処理され，
頂点列(C4,C5)
が出力される。
【００５３】
上記の通り，ジオメトリクリップ部２０が出力する頂点列からなるクリップ後の多角形は，描画部２２にて，クリップ後の多角形を構成する三角形の領域の論理値「１」と，図１１で示したマスクバッファ２６の記憶データとで排他的論理和処理が行われ，マスクバッファ内に再格納される。多角形（ポリゴン）の頂点すべてについて処理が終了すると，マスクバッファ２６内の論理値「１」の領域が，クリップ後のポリゴンの塗りつぶし領域になっているので，それに対応するフレームメモリの領域に，色データを格納することで，ポリゴンの塗りつぶし処理が行われる。
【００５４】
図６は，第２の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。多角形Ｐ０とクリップ枠CLの関係は，図３の例と同じである。第２の実施の形態例では，最初のクリップ起点生成部101の処理が，第１の実施の形態例と異なり，起点をできるだけ最初の多角形Ｐ０の頂点と一致させる。即ち，最初のクリップ起点生成部では，多角形の第１,n-1,n頂点からなる三角形の内部クリップ処理で，いずれかの頂点がクリップ枠内にある場合は，内部クリップ処理を行うことなく，その枠内の頂点をクリップ起点にする。そして，頂点がクリップ枠内にない場合は，第１の実施の形態例と同様に，内部クリップ処理で生成されたクリップ頂点をクリップ起点とする。頂点がクリップ枠内にあることが判明すれば，内部クリップ処理が不要になるので，その分処理を高速化できる。
【００５５】
従って，図６の例では，三角形(1,2,3)ではいずれもクリップ枠内に位置しないが，次の三角形(1,3,4)では，頂点４がクリップ枠内にあるので，この頂点４がクリップ起点として格納され，出力される。その後の処理は，第１の実施の形態例と同じである。
【００５６】
図７は，第２の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。クリップ起点生成部101において，工程Ｓ１０〜Ｓ１４は第１の実施の形態例と同じであり，第１入力頂点がクリップ枠内であれば，それを起点として格納，出力し，第２頂点を入力してカレント三角形の第２頂点に格納する。第１頂点がクリップ枠外の場合（Ｓ１１），第２入力頂点がクリップ枠内かどうかを判定する（Ｓ４６）。第２入力頂点がクリップ枠内の場合，第２入力頂点を起点として格納する（Ｓ４７）とともに，該起点を出力する（Ｓ４８）。そして，第３頂点を入力してカレント三角形の第２頂点として格納し（Ｓ４９），クリップ起点生成部101の処理を終了する。
【００５７】
第２頂点がクリップ枠外の場合は，第３頂点以降を順次入力して以下の手順で起点検出を行う。ここで，カレントの入力頂点を第ｎ頂点とする。第n頂点がクリップ枠内の場合（Ｓ５２でYESの場合），第n頂点を起点としてメモリに格納する（Ｓ５３）とともに，該起点を出力する（Ｓ５４）。
【００５８】
次に，起点，すなわち第n頂点と，第1頂点，第n-1頂点で形成される三角形の内部クリップ処理を行い，クリップ結果の第1頂点を除くクリップ頂点列を出力する（Ｓ５５）。そして，次に（起点，第n-1頂点，第n頂点）で形成される三角形の内部クリップ処理を行う必要があるが，起点は第n頂点に一致するので，この内部クリップ処理を省略して，第n頂点のみを出力する（Ｓ５６）。図６の例では，三角形(S,3,4)の内部クリップ処理は省略されて，第ｎ頂点である第４頂点が出力される。
【００５９】
そして，次の入力頂点が存在する場合（Ｓ５７），その頂点を入力してカレント三角形の第２頂点として格納し，クリップ起点生成部101の処理を終了し，クリップ多角形生成部に遷移する。入力頂点が存在しない場合は，第n頂点をカレント三角形の第２頂点とし，クリップ起点生成部の処理を終了し，クリップ後処理部に遷移する（Ｓ５９）。
【００６０】
第n頂点もクリップ枠外の場合は，第１の実施の形態例と同様の処理Ｓ１８〜Ｓ２４が行われる。即ち，まず第1，第n-1，第n頂点で形成される三角形の内部クリップ処理を行う（Ｓ１８）。この内部クリップ処理により，クリップ枠内に存在するクリップ頂点が検出された場合（Ｓ１９でYESの場合），その頂点のいずれかを起点としてメモリに格納し，出力する（S20,S21）。次に(起点，第1頂点，第n-1頂点)，(起点，第n-1頂点，第n頂点)で形成される三角形の内部クリップ処理を行い，それぞれのクリップ結果の第1頂点を除くクリップ頂点列を出力する（S22,S23）。次に，第n頂点をカレント三角形の第２頂点として格納し（Ｓ２４），クリップ起点生成部の処理を終了してクリップ多角形生成部102に遷移する。
【００６１】
（第1，第n-1，第n頂点）で形成される三角形に対する内部クリップ処理の結果，クリップ頂点が存在しない場合（Ｓ１９）は，次の頂点を入力して起点検出処理を繰り返す。 起点が検出されないまま，すべての頂点入力を完了した場合（Ｓ５０）は，クリップ起点生成部は，凹形状の多角形が完全にクリップ枠外と判断して，本ジオメトリクリップ処理を完了する。
【００６２】
この起点検出方式では，クリップ枠内に存在する頂点が存在すれば，その頂点を起点とするため，そのようなケースにおいて第１の実施の形態例のように起点検出のための内部クリップ処理を行う必要がなく，多角形の形状によってはクリップ起点生成の処理時間を短縮することができる。
【００６３】
図６の例に適用して説明すると，第４頂点はクリップ枠内にあるので，頂点４を起点Sとして得る。次に，三角形(S,1,3)の内部クリップ処理により，クリップ頂点列(S,C0,C1,C2)を得る。その場合，第１クリップ頂点を除く頂点列が出力されるので，クリップ起点生成部101における出力列は，
起点S（Ｓ５４），
頂点列(C0,C1,C2)（Ｓ５５），
第４頂点（＝起点S）（Ｓ５５），
となる。そして，クリップ起点生成部101は，第５頂点の入力を行いカレント三角形の第２頂点として格納し（Ｓ５８），処理を終了する。
【００６４】
次に，クリップ多角形生成部102では，第６頂点が処理され，三角形(S,5,6)の内部クリップ処理により，
頂点列(5,C4,C3)
が出力される。 そして，クリップ後処理部103では，三角形(S,6,1)が内部クリップ処理され，
頂点列(C3,C5,C0)
が出力される。クリップ多角形生成部102の処理とクリップ後処理部103の処理は，第１の実施の形態例と同じである。
【００６５】
図８は，第３の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。第３の実施の形態例は，クリップ多角形生成部102の高速化に関し，内部クリップ手段による三角形のクリップ頂点検出回数をできるだけ少なくし，且つクリップ頂点数もできるだけ少なくすることを目的としている。
【００６６】
その概略的なアルゴリズムは，図８において，内部クリップ手段110により三角形(S,4,5)に対するクリップ頂点C0が検出されるが，頂点５，６と次の頂点７とが同じクリップ面Ｙminの外側に位置しているので，三角形(S,5,6)の内部クリップ処理を行わずに，三角形(S,5,7)の内部クリップ処理を行っても同じ結果が得られる。同様に，頂点５，７と次の頂点８も同じクリップ面Ｙminの外側に位置しているので，三角形（S,5,7)の内部クリップ処理を行わずに，三角形(S,5,8)の内部クリップ処理を行っても同じである。そして，最後に頂点９１が入力された時点で，三角形(S,5,8)の内部クリップ処理が行われる。
【００６７】
従って，上記の通り，被クリップ処理三角形の第２頂点と第３頂点が同じクリップ枠外に位置する場合は，その内部クリップ処理を保留し，更に次の入力頂点と第２，第３頂点とが同じクリップ枠外に位置する場合も引き続き内部クリップ処理を保留し，できるだけ無駄な内部クリップ処理を行わないようにすることが高速化に寄与する。
【００６８】
図９は，第３の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。クリップ多角形生成部102は，開始時において，被クリップ処理三角形が保留状態か否かを示す状態変数が，「保留状態解除」の状態に初期化されているものとする。
【００６９】
クリップ多角形生成部102において，最初は，工程Ｓ６０では次の入力頂点が存在し，工程Ｓ６１では保留状態解除であり，入力頂点がカレント三角形の第３頂点に格納される（Ｓ６２）。そこで，カレント三角形の第２頂点とカレント三角形の第３頂点が同じクリップ面に対してクリップ枠外の場合（Ｓ６３，Ｓ７１），（起点Ｓ，カレント三角形第2頂点，カレント三角形第3頂点）で形成される三角形の内部クリップ処理を保留し（Ｓ７４），次の頂点を入力する（Ｓ６０）。保留中であることを示す状態変数は，「保留状態」にセットされる。
【００７０】
工程Ｓ６０ではYES，工程Ｓ６１でもYESと判断され，次の入力頂点が，カレント三角形の第２，３頂点と同じクリップ面に対してクリップ枠外の場合（Ｓ６８のYES），入力頂点をカレント三角形の第３頂点へコピーし（Ｓ７３），次の頂点入力処理に移行する。つまり，工程Ｓ７３でカレント三角形の第３頂点に保持されていた一つ前の頂点を廃棄することになる。
【００７１】
一方，入力頂点とカレント三角形の第２，３頂点とが同じクリップ面に対してクリップ枠外でない場合は（Ｓ６８のNO），（起点，カレント三角形第２頂点，カレント三角形第３頂点）で形成される三角形の内部クリップ処理を行い，第1クリップ頂点を除くクリップ頂点列を出力する（Ｓ６９）。
【００７２】
続いて，カレント三角形の第３頂点を第２頂点へ，入力頂点をカレント三角形の第３頂点にコピーし（Ｓ７０），カレント三角形の第２頂点と第３頂点とが同じクリップ面に対してクリップ枠外かどうかを調べ，同じクリップ枠外でない場合（Ｓ７１のNO），（起点，カレント三角形第２頂点，カレント三角形第３頂点）で形成される三角形の内部クリップ処理を行い，第1クリップ頂点を除くクリップ頂点列を順次出力し（Ｓ７２），保留中の状態を解除する（Ｓ６５）。一方，同じクリップ枠外の場合は（Ｓ７１のYES），保留状態をセット（維持）する（Ｓ７４）。
【００７３】
最後に，頂点入力時に入力頂点が存在しない場合は（工程Ｓ６０のNO），保留状態かどうかを判定し（Ｓ７５），保留中の三角形があれば，（起点，カレント三角形第２頂点，カレント三角形第３頂点）で形成される保留中の三角形の内部クリップ処理を行い，第1クリップ頂点を除くクリップ頂点列を順次出力する（Ｓ７６）。続いて，カレント三角形の第３頂点をカレント三角形の第２頂点へコピーして（Ｓ７７），クリップ後処理部へ遷移する。
【００７４】
また，最初に工程Ｓ６３でカレント三角形の第２，３頂点が共にクリップ枠内にある場合は，図５の工程S32,S33,S34と同様に，その第２，３頂点をクリップ頂点として出力し（Ｓ６４），カレント三角形の第３頂点を第２頂点にコピーする（Ｓ６６）。
【００７５】
図８を例にして，上記の処理フローチャートを説明する。図８では起点Sに対して，第５頂点までが処理されているものとする。また，保留状態はオフとする。第５頂点は，クリップ面Yminに対してクリップ枠外にある。そして，クリップ多角形生成部が，次の第６頂点を入力したとき，第５，６頂点は，クリップ面Yminに対してクリップ枠外であるので，工程Ｓ７１にてYESと判断され，保留状態をセットする（Ｓ７４）。
【００７６】
次に，クリップ多角形生成部が，第７頂点を入力した時，第７頂点は，第５，第６頂点と同様にクリップ面Yminに対してクリップ枠外であるので，工程Ｓ６８でYESと判断し，工程Ｓ７３で第６頂点を廃棄し，工程Ｓ７４で起点，第５，第７頂点で生成される三角形を保留する。続いて，第８頂点を入力し，第５，７頂点と同じクリップ枠外であるので，同様に工程Ｓ７３で第７頂点を廃棄し，起点，第５，第８頂点で生成される三角形を保留する（Ｓ７４）。
【００７７】
次に，クリップ多角形生成部が，頂点91を入力した場合，頂点91はクリップ面Yminに対してクリップ枠内なので，工程Ｓ６８でNOと判断し，保留中の三角形(S,5,8)に対して内部クリップ処理を行い，頂点出力
(C0,C1,C2)
を得る（Ｓ７０）。
【００７８】
次に，クリップ多角形生成部は，頂点８と頂点91のクリップ状態を調べ，ともに，クリップ枠Xmaxに対してクリップ枠外なので，工程Ｓ７１でYESと判断し，三角形(S,8,91)を保留する（Ｓ７４）。仮に，頂点８の次の入力が，頂点91でなく頂点92の場合は，頂点８と頂点92は同じクリップ面に対してクリップ枠外であるという条件を満足しないので，工程Ｓ７１でNOと判断し，三角形(S,8,92)の内部クリップ処理を行い，頂点出力，
(C2,C３)
を得る（Ｓ７２）。
【００７９】
以上の通り，頂点６，７に対しては内部クリップ処理が省略され，三角形(S,5,8)が変わりに内部クリップ処理されるので，無駄な内部クリップ処理が省略され，それにより生成される予定であった無駄なクリップ頂点も省略される。
【００８０】
次に，第４の実施の形態例では，クリップ頂点の出力が重複するのを防止する。図３，４に示したクリップ起点生成部の処理で，工程Ｓ２２ではクリップ頂点列として（C0,C1）が出力され，次の工程Ｓ２３ではクリップ頂点列として（C1,C2,4）が出力される。この場合，工程Ｓ２３でのクリップ頂点C1の出力は重複することになり，好ましくない。そこで，第４の実施の形態例では，かかる重複を防止し，描画部２２への出力頂点数を削減する。
【００８１】
そのために，第４の実施の形態例では，起点Ｓ以外の頂点データを描画部２２に出力したかどうかを示す頂点出力フラグを設け，初期状態では頂点出力フラグを出力なし状態にセットする。そして，前述の第１の実施の形態例から第３の実施の形態例におけるクリップ頂点出力処理時において，内部クリップ処理を行った結果頂点を出力する場合，または，カレント三角形の第２頂点および第３頂点がクリップ枠内にある場合は，以下の条件制御による判定を行う。
【００８２】
内部クリップ処理を行った結果，クリップ頂点を出力する場合は，（１）頂点出力フラグが「出力なし」ならば，第１クリップ頂点を除くクリップ頂点列を出力し，（２）頂点出力フラグが「出力あり」ならば，第１クリップ頂点および第２クリップ頂点を除くクリップ頂点列を出力する。
【００８３】
カレント三角形の第２，３頂点がクリップ枠内にある場合は，（１）頂点出力フラグが「出力なし」ならば，カレント三角形の第２，３頂点を出力し，（２）頂点出力フラグが「出力あり」ならば，カレント三角形第３頂点のみを出力する。
【００８４】
頂点出力フラグを「出力あり」にセットするタイミングは原則的に起点以外の上記出力処理を行った直後である。従って，図４，５，７，９に「Ａ」で示すタイミングで頂点出力フラグが「出力あり」にセットされる。即ち，図４では，工程Ｓ２２の直後，図５では工程Ｓ３３の直後，図７では工程Ｓ２２の直後，そして，図９では工程Ｓ６４，Ｓ６９，Ｓ７６の直後である。ただし，例外的に，図７の第３の実施の形態例のクリップ起点生成部において，工程Ｓ５３にて第n頂点を起点Ｓとした場合，その後の工程Ｓ５４，５５で起点Ｓとクリップ頂点を出力した直後では，頂点出力フラグを“出力あり”にセットしない。理由は，それに続く工程Ｓ５６では内部クリップ処理を行うことなく起点（第n頂点）を頂点として出力するので，重複することはないからであり，更にその後新たな三角形列の連結が開始されるからである。
【００８５】
図３の例では，上記の頂点出力フラグにより重複したクリップ頂点出力をなくした結果，出力される頂点列は，
S，C0，C1，（ここで最初の頂点出力フラグありをセット）C2，4，5，C3，C4，C5
となる。
【００８６】
図６の例では，出力される頂点列は，
S，C0，C1，C2，S，5，C4，3（ここで最初の頂点出力フラグありをセット）C5，C0
となる。
【００８７】
以上の実施の形態例をまとめると次の付記の通りである。
【００８８】
（付記１）任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において，
前記任意形状の多角形の頂点データを順次入力し，前記クリップ枠内で切り取られたクリップ後の多角形の１つの頂点を起点データとして生成するクリップ起点生成部と，
前記起点と前記任意形状の多角形の２つの頂点データからなる第１の三角形について，順次，前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて，前記起点を１つの頂点とする少なくとも１つの第２の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有することを特徴とするジオメトリクリッピング装置。
【００８９】
（付記２）付記１において，
前記クリップ多角形生成部は，前記任意形状の多角形の頂点データを，順次入力し，前記起点と入力済みの頂点と当該入力した頂点とで画定される第１の三角形について，順次，前記クリップ後の多角形の頂点を求めることを特徴とするジオメトリクリッピング装置。
【００９０】
（付記３）付記１において，
更に，３つの頂点で画定される三角形をクリップ枠内で切り取られるクリップ多角形の頂点データを求める内部クリップ手段が，前記クリップ起点生成部とクリップ多角形生成部とに共通に設けられていることを特徴とするジオメトリクリッピング装置。
【００９１】
（付記４）付記１において，
前記クリップ起点生成部は，最初に求められた前記クリップ後の多角形の頂点を，前記起点データとして生成することを特徴とするジオメトリクリッピング装置。
【００９２】
（付記５）付記１において，
前記クリップ起点生成部は，前記任意形状の多角形の１つの頂点であって，前記クリップ枠内に位置する頂点を，前記起点データとして生成することを特徴とするジオメトリクリッピング装置。
【００９３】
（付記６）付記１または２において，
前記クリップ多角形生成部は，前記任意形状の多角形の頂点であって，連続して入力される第１，２，３の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は，前記起点と第１，２の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく，前記起点と第１，３の頂点で画定される第１の三角形について当該頂点を求めることを特徴とするジオメトリクリッピング装置。
【００９４】
（付記７）付記１において，
前記クリップ起点生成部またはクリップ多角形生成部は，前記クリップ多角形の頂点データを，重複することなく，当該クリップ多角形の塗りつぶしを行う描画部に供給することを特徴とするジオメトリクリッピング装置。
【００９５】
【発明の効果】
以上，本発明によれば，任意形状の多角形のクリッピング処理において，多角形の頂点データを順次入力して処理し，クリップ頂点を順次出力することができるので，クリッピング処理時の中間データ量を少なく抑えることができ，ハードウエア資源を削減することができる。
【００９６】
以上，本発明の保護範囲は，上記の実施の形態例に限定されるものではなく，特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【図面の簡単な説明】
【図１】本実施の形態例のジオメトリクリップ装置が設けられる画像処理装置（グラフィック装置）の構成図である。
【図２】ジオメトリクリップ部の構成図である。
【図３】第１の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図４】第１の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。
【図５】第１の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。
【図６】第２の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図７】第２の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。
【図８】第３の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図９】第３の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。
【図１０】サザーランド・ホッジマンのアルゴリズムを説明する図である。
【図１１】一般的な任意の形状の多角形内の塗りつぶしの例を示す図である。
【符号の説明】
１４    画像処理装置
２０    ジオメトリクリップ部
２４    フレームメモリ
１０１  クリップ起点生成部
１０２  クリップ多角形生成部
１０３  クリップ後処理部
Ｓ      起点
ＣＬ    クリップ枠
Ｐ０    最初の任意形状の多角形
【図１】
0004323101.tif 000002
【図２】
0004323101.tif 000003
【図３】
0004323101.tif 000004
【図４】
0004323101.tif 000005
【図５】
0004323101.tif 000006
【図６】
0004323101.tif 000007
【図７】
0004323101.tif 000008
【図８】
0004323101.tif 000009
【図９】
0004323101.tif 000010
【図１０】
0004323101.tif 000011
【図１１】
0004323101.tif 000012