JP4323101B2 - 多角形のジオメトリクリッピング装置 - Google Patents
多角形のジオメトリクリッピング装置 Download PDFInfo
- Publication number
- JP4323101B2 JP4323101B2 JP2001004420A JP2001004420A JP4323101B2 JP 4323101 B2 JP4323101 B2 JP 4323101B2 JP 2001004420 A JP2001004420 A JP 2001004420A JP 2001004420 A JP2001004420 A JP 2001004420A JP 4323101 B2 JP4323101 B2 JP 4323101B2
- Authority
- JP
- Japan
- Prior art keywords
- vertex
- clip
- polygon
- triangle
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は,3次元や2次元空間に定義された図形データを表示装置に表示するグラフィックス装置において利用され,任意形状の多角形をクリップ枠内に切り取るジオメトリクリッピング装置に関するものである。
【0002】
【従来の技術】
多角形や線などの図形データをCRTや液晶画面などの2次元画面上に表示するグラフィックス装置では,表示画面からはみ出すデータを切り取るクリッピング処理が必要になる。一般に,クリッピングは,多角形(ポリゴン)を構成する頂点情報とクリップ枠(またはクリップボリューム)とから切り取られた多角形の新たな頂点情報を作り出すジオメトリクリッピングと,多角形や線を表示画面に相当するフレームメモリに書きこむ時に,描画するピクセル単位にクリップ枠(またはクリップボリューム)との内外判定を行うピクセルクリッピングとが組み合わせられる。
【0003】
ここで,フレームメモリとは,表示画面の各画素(ピクセル)の色情報を2次元配列状に格納する記憶手段であり,通常,表示手段への表示は,この配列内の色情報を読み出して行われる。
【0004】
近年のグラフィクス装置は,カーナビゲーションシステムなどに応用されるようになってきたが,地図情報などを描画するにあたっては,凸形状だけでなく凹形状の多角形描画も正確に行う必要がある。
【0005】
上記のジオメトリクリッピングのうち,多角形(ポリゴン)の頂点情報のみからクリッピングを行う方法として,サザーランド・ホッジマンのアルゴリズムが提案されている。図10は,サザーランド・ホッジマンのアルゴリズムを説明する図である。図10には,6角形のポリゴンP0の一部の領域にクリップ枠CLが重なる場合を示す。図10(a)の状態で,クリップ枠CLの上辺より上の領域が切り取られ,(b)に示される中間ポリゴンP1が形成される。同様にして,クリップ枠CLの右辺より右側の領域が切り取られ,(c)に示される中間ポリゴンP2が形成される。更に,クリップ枠CLの下辺より下側の領域及びクリップ枠の左辺より左側の領域が切り取られ,(c)のハッチング領域で示される最終的なポリゴンP3が形成される。
【0006】
そして,この最終ポリゴンP3の頂点情報が,クリップ後の多角形情報として描画装置に送られる。描画装置では,この切り取られたクリップ後の多角形の塗りつぶし処理が行われる。
【0007】
図11は,一般的な任意の形状の多角形内の塗りつぶしの例を示す図である。凹形状の多角形にも対応できるアルゴリズムでは,多角形の頂点のうち一つの頂点を起点にして,その起点と他の2つの頂点からなる三角形を順番に選択して排他的論理和処理し,最終的に論理値「1」が残った領域を塗りつぶし領域と判定することが提案されている。
【0008】
図11は,図10で切り取られたクリップ後の多角形P3をピクセルクリッピングする場合について示す。右側のコラム(A)がクリップ後の多角形から選択された三角形を示し,左側のコラム(B)が塗りつぶし領域を示すマスクバッファを示す。マスクバッファの斜線領域が論理値「1」を,斜線以外が論理値「0」をそれぞれ示す。
【0009】
最初に,マスクバッファ内が全て論理値「0」にクリアされている。そこで,コラム(A)の(1)において,起点1と点2,3からなる三角形を選択して,その三角形(1,2,3)の領域内のピクセルを論理値「1」として,マスクバッファと排他的論理和処理を行う。その結果,コラム(B)の(1)に示される通り,斜線領域が論理値「1」に変換される。
【0010】
次に,コラム(A)の(2)において,起点1と点3,4からなる三角形を選択して,その三角形(1,3,4)の領域内のピクセルを論理値「1」として,マスクバッファと排他的論理和処理を行う。その結果,コラム(B)の(2)に示される斜線領域が論理値「1」に変換される。
【0011】
次に,コラム(A)の(3)において,起点1と点4,5からなる三角形を選択して,その三角形(1,4,5)の領域内のピクセルを論理値「1」として,マスクバッファと排他的論理和処理を行う。その結果,三角形(1,4,5)の領域は論理値「0」に変換されて凹部が処理され,コラム(B)の(3)に示される斜線領域が論理値「1」のままとなる。
【0012】
そして,最後に,コラム(A)の(4)において,起点1と点5,6からなる三角形を選択して,その三角形(1,5,6)の領域内のピクセルを論理値「1」として,マスクバッファと排他的論理和処理を行う。その結果,コラム(B)の(4)に示される斜線領域が論理値「1」に変換され,クリップ後の多角形内の塗りつぶしすべきピクセルの位置が,マスクバッファ内に格納される。
【0013】
その後,このマスクバッファ内の論理値「1」の領域に対応するフレームバッファ内の領域に所定の色データを記録することで,塗りつぶし処理が行われる。
【0014】
図11に示された方法によれば,凹形状を有する任意の多角形に対しても柔軟に塗りつぶし処理を行うことができる。かかる方法は,Open GL Programming Guide Second Edition ( P.516 Drawing Filled, Concave Polygons Using the Stencil Buffer )に詳細に記述されている。
【0015】
【発明が解決しようとする課題】
しかしながら,上記のサザーランド・ホッジマンのアルゴリズムの場合,クリッピング処理中に生成される中間ポリゴンの頂点データを格納しておくためのメモリ領域が必要になる。カーナビゲーションシステムなどで用いられる地図情報は,海岸線データなど膨大な頂点を持つ多角形を含み,上記アルゴリズムによるジオメトリ処理装置は,頂点データ格納のために多くのハードウエア資源を必要とし,コスト面で不利である。
【0016】
特開平7−296172号公報は,かかる問題点を解決する発明を開示する。この公報に記載された発明では,多角形の頂点データを順次処理してジオメトリクリッピングを行うことができるが,クリッピング処理により生成される頂点データを全て格納しておき,エッジ(辺)データを生成,格納した後に,塗りつぶし処理を行わなければならない。従って,依然として,中間的なデータを格納しておく多くのハードウエア資源が必要になる。
【0017】
そこで,本発明の目的は,任意形状の多角形の頂点データを順次処理して,レンダリング装置に必要なクリッピング後の多角形の頂点データを順次供給することができるジオメトリクリッピング装置を提供することにある。
【0018】
【課題を解決するための手段】
上記の目的を達成するために,本発明の一つの側面は,任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において,前記任意形状の多角形の頂点データを順次入力し,前記クリップ枠内で切り取られたクリップ後の多角形の1つの頂点を起点データとして生成するクリップ起点生成部と,前記起点と前記任意形状の多角形の2つの頂点データからなる第1の三角形について,順次,前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて,前記起点を1つの頂点とする少なくとも1つの第2の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有することを特徴とする。
【0019】
上記発明によれば,クリップ起点生成部もクリップ多角形生成部も共に,最初の任意形状の多角形の頂点データを順次入力して処理することができ,更に,クリップ多角形生成部がクリップ後の多角形の頂点データを順次生成することができるので,従来例のように中間的な頂点データを格納するための膨大なハードウエア資源を必要としない。従って,地図の海岸線などのクリップ枠との交点が膨大になる画像データの処理に適している。
【0020】
上記発明において,好ましい実施例では,3つの頂点で画定される三角形をクリップ枠内で切り取られるクリップ後の多角形の頂点データを求める内部クリップ手段が,前記クリップ起点生成部とクリップ多角形生成部とに共通に設けられる。
【0021】
更に,好ましい実施例では,前記クリップ起点生成部は,最初に求められた前記クリップ後の多角形の頂点を,前記起点データとして生成することを特徴とする。
【0022】
更に,別の好ましい実施例では,前記クリップ起点生成部は,前記任意形状の多角形の1つの頂点であって,前記クリップ枠内に位置する頂点を,前記起点データとして生成することを特徴とする。入力される任意形状の多角形の頂点がクリップ枠内に位置する場合は,その頂点を起点として出力することができる。従って,入力される頂点がクリップ枠内に位置する場合は,入力される頂点からなる三角形についてクリップ枠内の切り取り処理を行う必要がなくなる。
【0023】
別の好ましい実施例では,前記クリップ多角形生成部は,前記任意形状の多角形の頂点であって,連続して入力される第1,2,3の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は,前記起点と第1,2の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく,前記起点と第1,3の頂点で画定される第1の三角形について当該頂点を求めることを特徴とする。これにより,クリップ後の多角形の頂点を求める処理の回数を減らすことができる。
【0024】
更に,別の好ましい実施例では,前記クリップ起点生成部またはクリップ多角形生成部は,前記クリップ多角形の頂点データを,重複することなく,当該クリップ多角形の塗りつぶしを行う描画部に供給することを特徴とする。これにより,クリップ多角形の頂点データを供給される描画部は,順次供給される頂点で構成され多角形について,塗りつぶし領域を特定することができ,中間データを格納する必要がなく処理が簡便になる。
【0025】
【発明の実施の形態】
以下,図面を参照して本発明の実施の形態例を説明する。しかしながら,かかる実施の形態例が,本発明の技術的範囲を限定するものではない。
【0026】
図1は,本実施の形態例のジオメトリクリップ装置20が設けられる画像処理装置(グラフィック装置)14の構成図である。画像処理装置14は,ホストコンピュータ10から図形データファイル12内の画像データのうち,任意形状の多角形(ポリゴン)の頂点データS1を供給されて,ジオメトリ処理,レンダリング処理を行い,フレームメモリ24内にピクセル毎の色データを格納する。このフレームメモリ24内の色データがデジタル・アナログ変換されて,表示装置28に供給され,所定の画像が表示される。
【0027】
画像データファイル12内の画像データが3次元データの場合は,ポリゴンの頂点データS1は,座標変換部18で表示画面の2次元データに透視変換され,変換後の頂点データS2がジオメトリクリップ部20に出力される。画像データが2次元データの場合は,ポリゴンの頂点データS1は,座標変換部18で表示画面の2次元データに変換され,ジオメトリクリップ部20に出力される。
【0028】
ジオメトリクリップ部20は,変換後の頂点データS2を順次入力し,任意形状の多角形(ポリゴン)をクリップ枠内で切り出したクリップ後の多角形の頂点データS3を生成し,描画部であるレンダラ部22にそのクリップ頂点データS3を順次供給する。このジオメトリクリップ部20が,本実施の形態例の対象装置である。
【0029】
描画部22は,順次供給されるクリップ後の多角形の頂点データS3で形成される三角形について,マスクバッファ26内のマスクデータと排他的論理和処理を行い,図11で説明した任意多角形塗りつぶし処理を行う。そして,マスクバッファ26で画定された領域に対応するフレームメモリ24内の領域に,ポリゴンの色データを格納することで,塗りつぶし処理を行う。1フレーム期間内のポリゴンの描画処理が終了すると,フレームメモリ24に格納された色データが出力され,表示装置28に表示される。
【0030】
図2は,ジオメトリクリップ部20の構成図である。ジオメトリクリップ部20は,任意形状の多角形(ポリゴン)の頂点データS2を順次入力し,クリップ枠内で切り取られたクリップ後の多角形の1頂点を起点データとして生成するクリップ起点生成部101と,その起点と任意形状の多角形の2つの頂点データS2からなる第1の三角形について,順次,クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて,起点を1つの頂点とする少なくとも1つの第2の三角形を含むクリップ後の多角形(クリップ多角形)の頂点データを生成するクリップ多角形生成部102とを有する。
【0031】
更に,ジオメトリクリップ部20は,クリップ多角形生成部102が,最後の第1の三角形についてクリップ後の多角形の頂点を生成した後の後処理を行うクリップ後処理部103を有する。そして,3つの頂点で画定される三角形をクリップ枠内で切り取られて得られるクリップ多角形の頂点データを求める内部クリップ手段110が,他の生成部101,102や処理部103に共通に設けられる。そして,内部クリップ手段110は,クリップ多角形生成部102やクリップ起点生成部101からの指令に応答して,3頂点からなる三角形の内部クリップ処理を行う。
【0032】
クリップ起点生成部101,クリップ多角形生成部102,及びクリップ後処理部103は,生成した起点データやクリップ多角形の頂点データS3を描画部22に順次出力する。
【0033】
図3は,第1の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。この例は,図10で示した6角形のポリゴンP0とクリップ枠CLと同じ関係にある。今仮にポリゴンP0が6個の頂点1〜6で構成されているものとする。
【0034】
本実施の形態例におけるジオメトリクリップ部の処理は,最初に,ポリゴンP0の任意の頂点1を起点にして,頂点1,2,3の三角形,頂点1,3,4の三角形,頂点1,4,5,頂点1,5,6の三角形が,クリップ枠CL内に位置するか否かの判断を順次行い,最初に検出されたクリップ後の多角形の頂点Sを起点データとして生成する。これがクリップ起点生成部101により行われる。次に,今度は頂点Sを起点として,頂点S,1,3の三角形,頂点S,3,4の三角形,頂点S,4,5の三角形,頂点S,5,6の三角形,そして頂点S,6,1の三角形をクリップ枠内で切り取られるクリップ多角形の頂点C0,C1,C2,4,5,C3,C4,C5のデータを生成する。これらの処理は,一部クリップ起点生成部101により行われるが,大半はクリップ多角形生成部102により行われる。
【0035】
三角形をクリップ枠内で切り取られるクリップ多角形の頂点は,既知の内部クリップ処理により求められるが,以下の例では,被クリップ処理の三角形の第1頂点がクリップ枠内にある場合,その第1頂点が内部クリップ処理結果の頂点列の第1頂点になる必要がある。それ以外は,いずれのアルゴリズムであってもよい。
【0036】
上記の処理は,座標変換部18から多角形の頂点データS2を多角形の周囲に沿って順次入力して行うことができ,一定の処理により生成されたクリップ後の多角形の頂点データS3を,その都度出力することができるので,中間の頂点データなどを格納しておく膨大なメモリ領域を設ける必要がない。
【0037】
図4は,第1の実施の形態例におけるクリップ起点生成部101の処理フローチャート図である。まず,第1頂点(図3の頂点1)のデータS2を入力する(S10)。そして,クリップ後処理のために一次的に第1頂点をメモリに退避する。更に,第1頂点がクリップ枠内か否かの判定を行う(S11)。
【0038】
第1頂点がクリップ枠内の場合,第1頂点を起点としてメモリに格納する(S12)とともに,該起点データを出力する(S13)。次に,第2頂点を入力して,それをカレント三角形の第2頂点として格納し(S14),クリップ起点生成部の処理を終了する。即ち,第1頂点がクリップ枠内に存在する場合は,その第1頂点がクリップ処理の起点となり,図4のクリップ起点生成処理は終了する。
【0039】
図3の例では,頂点1はクリップ枠CL内に位置していないので,工程S16に進む。
【0040】
一方,第1頂点がクリップ枠外の場合,工程S16以下の処理が行われる。即ち,第2,第3頂点を入力し,(第1頂点,第2頂点,第3頂点)で形成される三角形を内部クリップ手段110により内部クリップ処理を行う(S16,S17)。
【0041】
前述した通り,内部クリップ手段110は,被クリップ処理三角形をクリップ枠内で切り取ったクリップ後の多角形の頂点(以下クリップ頂点)を生成するという,当業者に既知の処理を行う。但し,被クリップ三角形の第1頂点がクリップ枠内にある場合,その第1頂点が内部クリップ処理結果の頂点列の第1頂点になるアルゴズムが含まれていることは必要である。内部クリップ手段110の入力図形は単純な三角形であるので,この処理は高速に処理でき,中間的な格納データを少なくすることができる。
【0042】
内部クリップ処理の結果,クリップ頂点が存在しない場合(S19でNOの場合),第4頂点を入力し,(第1頂点,第3頂点,第4頂点)で形成される三角形の内部クリップ処理を行う。この起点検出処理S17,S18,S19を起点が検出されるまで実行する。起点が検出されないまま,すべての頂点入力を完了した場合(S25でNOの場合),凹形状多角形が完全にクリップ枠の外側と判断して,本ジオメトリクリップ処理を完了する。
【0043】
被クリップ三角形(1,3,4)のように,内部クリップ処理の結果,クリップ枠内に存在するクリップ頂点を検出した場合(S19),その頂点のいずれかを起点として格納する(S20)。この処理フローでは,内部クリップ処理の結果見つかったクリップ頂点のうち,第1クリップ頂点を起点としている。従って,図3の例では,三角形(1,3,4)の内部クリッピング処理によりクリップ頂点S,C0,C2,4が見つかるが,その第1クリップ頂点Sが起点としてメモリに格納される。
【0044】
第n頂点入力の後にクリップ起点検出処理において起点を検出した場合,その起点をメモリに格納するとともに,該起点を出力する(S21)。次に,(起点,第1頂点,第n-1頂点),(起点,第n-1頂点,第n頂点)で形成される三角形の内部クリップ処理を行い,それぞれのクリップ処理結果の第1頂点を除くクリップ頂点列を出力する(S22,S23)。第1頂点は,起点Sとしてすでに出力されているので,重複して出力しないことが好ましい。
【0045】
従って,図3の例では,第n(=4)頂点を入力した後に,クリップ頂点S,C0,C2,4が見つかるので,工程S22では,(起点S,第1頂点,第n-1(=3))の三角形の内部クリップ処理が行われ,見つかったクリップ頂点S,C0,C1のうち,第1クリップ頂点Sを除くクリップ頂点C0,C1が出力される。更に,工程S23では,(起点S,第n-1(=3)頂点,第n(=4)頂点)の三角形の内部クリップ処理が行われ,見つかったクリップ頂点S,C1,C2,4のうち,第1クリップ頂点Sを除くクリップ頂点C1,C2,4が出力される。第n頂点を入力した時点でクリップ頂点が見つかった場合,第n-2頂点以前の頂点からなる三角形は,クリップ枠内に位置しないので,それらの第2頂点から第n-2頂点までの頂点を含む三角形は,内部クリップ処理が不要になる。従って,工程S22,S23ではそれらの三角形の内部クリップ処理は省略される。
【0046】
最後に,第n頂点をカレント三角形の第2頂点としてメモリに格納し(S24),クリップ起点生成部の処理を終了する。
【0047】
図5は,第1の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。図4のクリップ起点生成処理が終了した時点では,起点Sがカレント三角形の第1頂点,第n頂点がカレント三角形の第2頂点に格納されている。そこで,クリップ多角形生成部102は,次の入力頂点が存在する場合(S30),入力頂点をカレント三角形の第3頂点として格納する(S31)。そして,すでに格納されているカレント三角形の第2頂点と,入力したカレント三角形の第3頂点がともにクリップ枠内にある場合(S32でYESの場合)は,それぞれの頂点を描画部22に出力する(S33)。
【0048】
カレント三角形の第2頂点と第3頂点がともにクリップ枠内にあるという条件以外の場合(S33でNOの場合)は,(起点,カレント三角形の第2頂点,カレント三角形の第3頂点)で形成される三角形について,内部クリップ処理を行い,第1クリップ頂点を除く内部クリップ頂点列を順次出力する(S35)。続いて,カレント三角形の第3頂点をカレント三角形の第2頂点として格納する(S34)。上記の処理S30〜S35を,入力頂点データがなくなるまで繰り返す。次の入力頂点がなくなると(S30でNOの場合),クリップ多角形生成部の処理が終了し,クリップ後処理部での処理になる。
【0049】
クリップ後処理部103は,(起点,カレント三角形の第2頂点,退避している第1入力頂点)で形成される三角形の内部クリップ処理を行い,第1クリップ頂点を除く内部クリップ頂点列を順次出力する。
【0050】
図3の例で説明すると,前述の通り,クリップ起点生成部101において,起点Sが生成され,工程S22,S23における三角形(S,1,3),三角形(S,3,4)の内部クリップ処理により,クリップ頂点列(S,C0,C1)と,(S,C1,C2,4)が検出され,最初のクリップ頂点Sを除く頂点列がそれぞれ出力される。従って,クリップ起点生成部101におけるクリップ頂点の出力列は,
起点S,頂点列(C0,C1),頂点列(C1,C2,4)
となる。
【0051】
次に,クリップ多角形生成部102において,頂点5,6が処理される。頂点5が入力された時は,三角形(S,4,5)の頂点4,5は共にクリップ枠内にあるので,工程S33にて,
頂点列(4,5)
が出力される。更に,頂点6が入力された時は,頂点5,6は共にクリップ枠内にないので,工程S35での三角形(S,5,6)の内部クリップ処理により,
頂点列(5,C3,C4)
が出力される。この場合のクリップ多角形は,起点Sと頂点5,C3,C4からなる四角形であり,起点Sを有する2つの三角形を有する。
【0052】
そして,最後に,クリップ後処理部103では,三角形(S,6,1)が内部クリップ処理され,
頂点列(C4,C5)
が出力される。
【0053】
上記の通り,ジオメトリクリップ部20が出力する頂点列からなるクリップ後の多角形は,描画部22にて,クリップ後の多角形を構成する三角形の領域の論理値「1」と,図11で示したマスクバッファ26の記憶データとで排他的論理和処理が行われ,マスクバッファ内に再格納される。多角形(ポリゴン)の頂点すべてについて処理が終了すると,マスクバッファ26内の論理値「1」の領域が,クリップ後のポリゴンの塗りつぶし領域になっているので,それに対応するフレームメモリの領域に,色データを格納することで,ポリゴンの塗りつぶし処理が行われる。
【0054】
図6は,第2の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。多角形P0とクリップ枠CLの関係は,図3の例と同じである。第2の実施の形態例では,最初のクリップ起点生成部101の処理が,第1の実施の形態例と異なり,起点をできるだけ最初の多角形P0の頂点と一致させる。即ち,最初のクリップ起点生成部では,多角形の第1,n-1,n頂点からなる三角形の内部クリップ処理で,いずれかの頂点がクリップ枠内にある場合は,内部クリップ処理を行うことなく,その枠内の頂点をクリップ起点にする。そして,頂点がクリップ枠内にない場合は,第1の実施の形態例と同様に,内部クリップ処理で生成されたクリップ頂点をクリップ起点とする。頂点がクリップ枠内にあることが判明すれば,内部クリップ処理が不要になるので,その分処理を高速化できる。
【0055】
従って,図6の例では,三角形(1,2,3)ではいずれもクリップ枠内に位置しないが,次の三角形(1,3,4)では,頂点4がクリップ枠内にあるので,この頂点4がクリップ起点として格納され,出力される。その後の処理は,第1の実施の形態例と同じである。
【0056】
図7は,第2の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。クリップ起点生成部101において,工程S10〜S14は第1の実施の形態例と同じであり,第1入力頂点がクリップ枠内であれば,それを起点として格納,出力し,第2頂点を入力してカレント三角形の第2頂点に格納する。第1頂点がクリップ枠外の場合(S11),第2入力頂点がクリップ枠内かどうかを判定する(S46)。第2入力頂点がクリップ枠内の場合,第2入力頂点を起点として格納する(S47)とともに,該起点を出力する(S48)。そして,第3頂点を入力してカレント三角形の第2頂点として格納し(S49),クリップ起点生成部101の処理を終了する。
【0057】
第2頂点がクリップ枠外の場合は,第3頂点以降を順次入力して以下の手順で起点検出を行う。ここで,カレントの入力頂点を第n頂点とする。第n頂点がクリップ枠内の場合(S52でYESの場合),第n頂点を起点としてメモリに格納する(S53)とともに,該起点を出力する(S54)。
【0058】
次に,起点,すなわち第n頂点と,第1頂点,第n-1頂点で形成される三角形の内部クリップ処理を行い,クリップ結果の第1頂点を除くクリップ頂点列を出力する(S55)。そして,次に(起点,第n-1頂点,第n頂点)で形成される三角形の内部クリップ処理を行う必要があるが,起点は第n頂点に一致するので,この内部クリップ処理を省略して,第n頂点のみを出力する(S56)。図6の例では,三角形(S,3,4)の内部クリップ処理は省略されて,第n頂点である第4頂点が出力される。
【0059】
そして,次の入力頂点が存在する場合(S57),その頂点を入力してカレント三角形の第2頂点として格納し,クリップ起点生成部101の処理を終了し,クリップ多角形生成部に遷移する。入力頂点が存在しない場合は,第n頂点をカレント三角形の第2頂点とし,クリップ起点生成部の処理を終了し,クリップ後処理部に遷移する(S59)。
【0060】
第n頂点もクリップ枠外の場合は,第1の実施の形態例と同様の処理S18〜S24が行われる。即ち,まず第1,第n-1,第n頂点で形成される三角形の内部クリップ処理を行う(S18)。この内部クリップ処理により,クリップ枠内に存在するクリップ頂点が検出された場合(S19でYESの場合),その頂点のいずれかを起点としてメモリに格納し,出力する(S20,S21)。次に(起点,第1頂点,第n-1頂点),(起点,第n-1頂点,第n頂点)で形成される三角形の内部クリップ処理を行い,それぞれのクリップ結果の第1頂点を除くクリップ頂点列を出力する(S22,S23)。次に,第n頂点をカレント三角形の第2頂点として格納し(S24),クリップ起点生成部の処理を終了してクリップ多角形生成部102に遷移する。
【0061】
(第1,第n-1,第n頂点)で形成される三角形に対する内部クリップ処理の結果,クリップ頂点が存在しない場合(S19)は,次の頂点を入力して起点検出処理を繰り返す。 起点が検出されないまま,すべての頂点入力を完了した場合(S50)は,クリップ起点生成部は,凹形状の多角形が完全にクリップ枠外と判断して,本ジオメトリクリップ処理を完了する。
【0062】
この起点検出方式では,クリップ枠内に存在する頂点が存在すれば,その頂点を起点とするため,そのようなケースにおいて第1の実施の形態例のように起点検出のための内部クリップ処理を行う必要がなく,多角形の形状によってはクリップ起点生成の処理時間を短縮することができる。
【0063】
図6の例に適用して説明すると,第4頂点はクリップ枠内にあるので,頂点4を起点Sとして得る。次に,三角形(S,1,3)の内部クリップ処理により,クリップ頂点列(S,C0,C1,C2)を得る。その場合,第1クリップ頂点を除く頂点列が出力されるので,クリップ起点生成部101における出力列は,
起点S(S54),
頂点列(C0,C1,C2)(S55),
第4頂点(=起点S)(S55),
となる。そして,クリップ起点生成部101は,第5頂点の入力を行いカレント三角形の第2頂点として格納し(S58),処理を終了する。
【0064】
次に,クリップ多角形生成部102では,第6頂点が処理され,三角形(S,5,6)の内部クリップ処理により,
頂点列(5,C4,C3)
が出力される。 そして,クリップ後処理部103では,三角形(S,6,1)が内部クリップ処理され,
頂点列(C3,C5,C0)
が出力される。クリップ多角形生成部102の処理とクリップ後処理部103の処理は,第1の実施の形態例と同じである。
【0065】
図8は,第3の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。第3の実施の形態例は,クリップ多角形生成部102の高速化に関し,内部クリップ手段による三角形のクリップ頂点検出回数をできるだけ少なくし,且つクリップ頂点数もできるだけ少なくすることを目的としている。
【0066】
その概略的なアルゴリズムは,図8において,内部クリップ手段110により三角形(S,4,5)に対するクリップ頂点C0が検出されるが,頂点5,6と次の頂点7とが同じクリップ面Yminの外側に位置しているので,三角形(S,5,6)の内部クリップ処理を行わずに,三角形(S,5,7)の内部クリップ処理を行っても同じ結果が得られる。同様に,頂点5,7と次の頂点8も同じクリップ面Yminの外側に位置しているので,三角形(S,5,7)の内部クリップ処理を行わずに,三角形(S,5,8)の内部クリップ処理を行っても同じである。そして,最後に頂点91が入力された時点で,三角形(S,5,8)の内部クリップ処理が行われる。
【0067】
従って,上記の通り,被クリップ処理三角形の第2頂点と第3頂点が同じクリップ枠外に位置する場合は,その内部クリップ処理を保留し,更に次の入力頂点と第2,第3頂点とが同じクリップ枠外に位置する場合も引き続き内部クリップ処理を保留し,できるだけ無駄な内部クリップ処理を行わないようにすることが高速化に寄与する。
【0068】
図9は,第3の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。クリップ多角形生成部102は,開始時において,被クリップ処理三角形が保留状態か否かを示す状態変数が,「保留状態解除」の状態に初期化されているものとする。
【0069】
クリップ多角形生成部102において,最初は,工程S60では次の入力頂点が存在し,工程S61では保留状態解除であり,入力頂点がカレント三角形の第3頂点に格納される(S62)。そこで,カレント三角形の第2頂点とカレント三角形の第3頂点が同じクリップ面に対してクリップ枠外の場合(S63,S71),(起点S,カレント三角形第2頂点,カレント三角形第3頂点)で形成される三角形の内部クリップ処理を保留し(S74),次の頂点を入力する(S60)。保留中であることを示す状態変数は,「保留状態」にセットされる。
【0070】
工程S60ではYES,工程S61でもYESと判断され,次の入力頂点が,カレント三角形の第2,3頂点と同じクリップ面に対してクリップ枠外の場合(S68のYES),入力頂点をカレント三角形の第3頂点へコピーし(S73),次の頂点入力処理に移行する。つまり,工程S73でカレント三角形の第3頂点に保持されていた一つ前の頂点を廃棄することになる。
【0071】
一方,入力頂点とカレント三角形の第2,3頂点とが同じクリップ面に対してクリップ枠外でない場合は(S68のNO),(起点,カレント三角形第2頂点,カレント三角形第3頂点)で形成される三角形の内部クリップ処理を行い,第1クリップ頂点を除くクリップ頂点列を出力する(S69)。
【0072】
続いて,カレント三角形の第3頂点を第2頂点へ,入力頂点をカレント三角形の第3頂点にコピーし(S70),カレント三角形の第2頂点と第3頂点とが同じクリップ面に対してクリップ枠外かどうかを調べ,同じクリップ枠外でない場合(S71のNO),(起点,カレント三角形第2頂点,カレント三角形第3頂点)で形成される三角形の内部クリップ処理を行い,第1クリップ頂点を除くクリップ頂点列を順次出力し(S72),保留中の状態を解除する(S65)。一方,同じクリップ枠外の場合は(S71のYES),保留状態をセット(維持)する(S74)。
【0073】
最後に,頂点入力時に入力頂点が存在しない場合は(工程S60のNO),保留状態かどうかを判定し(S75),保留中の三角形があれば,(起点,カレント三角形第2頂点,カレント三角形第3頂点)で形成される保留中の三角形の内部クリップ処理を行い,第1クリップ頂点を除くクリップ頂点列を順次出力する(S76)。続いて,カレント三角形の第3頂点をカレント三角形の第2頂点へコピーして(S77),クリップ後処理部へ遷移する。
【0074】
また,最初に工程S63でカレント三角形の第2,3頂点が共にクリップ枠内にある場合は,図5の工程S32,S33,S34と同様に,その第2,3頂点をクリップ頂点として出力し(S64),カレント三角形の第3頂点を第2頂点にコピーする(S66)。
【0075】
図8を例にして,上記の処理フローチャートを説明する。図8では起点Sに対して,第5頂点までが処理されているものとする。また,保留状態はオフとする。第5頂点は,クリップ面Yminに対してクリップ枠外にある。そして,クリップ多角形生成部が,次の第6頂点を入力したとき,第5,6頂点は,クリップ面Yminに対してクリップ枠外であるので,工程S71にてYESと判断され,保留状態をセットする(S74)。
【0076】
次に,クリップ多角形生成部が,第7頂点を入力した時,第7頂点は,第5,第6頂点と同様にクリップ面Yminに対してクリップ枠外であるので,工程S68でYESと判断し,工程S73で第6頂点を廃棄し,工程S74で起点,第5,第7頂点で生成される三角形を保留する。続いて,第8頂点を入力し,第5,7頂点と同じクリップ枠外であるので,同様に工程S73で第7頂点を廃棄し,起点,第5,第8頂点で生成される三角形を保留する(S74)。
【0077】
次に,クリップ多角形生成部が,頂点91を入力した場合,頂点91はクリップ面Yminに対してクリップ枠内なので,工程S68でNOと判断し,保留中の三角形(S,5,8)に対して内部クリップ処理を行い,頂点出力
(C0,C1,C2)
を得る(S70)。
【0078】
次に,クリップ多角形生成部は,頂点8と頂点91のクリップ状態を調べ,ともに,クリップ枠Xmaxに対してクリップ枠外なので,工程S71でYESと判断し,三角形(S,8,91)を保留する(S74)。仮に,頂点8の次の入力が,頂点91でなく頂点92の場合は,頂点8と頂点92は同じクリップ面に対してクリップ枠外であるという条件を満足しないので,工程S71でNOと判断し,三角形(S,8,92)の内部クリップ処理を行い,頂点出力,
(C2,C3)
を得る(S72)。
【0079】
以上の通り,頂点6,7に対しては内部クリップ処理が省略され,三角形(S,5,8)が変わりに内部クリップ処理されるので,無駄な内部クリップ処理が省略され,それにより生成される予定であった無駄なクリップ頂点も省略される。
【0080】
次に,第4の実施の形態例では,クリップ頂点の出力が重複するのを防止する。図3,4に示したクリップ起点生成部の処理で,工程S22ではクリップ頂点列として(C0,C1)が出力され,次の工程S23ではクリップ頂点列として(C1,C2,4)が出力される。この場合,工程S23でのクリップ頂点C1の出力は重複することになり,好ましくない。そこで,第4の実施の形態例では,かかる重複を防止し,描画部22への出力頂点数を削減する。
【0081】
そのために,第4の実施の形態例では,起点S以外の頂点データを描画部22に出力したかどうかを示す頂点出力フラグを設け,初期状態では頂点出力フラグを出力なし状態にセットする。そして,前述の第1の実施の形態例から第3の実施の形態例におけるクリップ頂点出力処理時において,内部クリップ処理を行った結果頂点を出力する場合,または,カレント三角形の第2頂点および第3頂点がクリップ枠内にある場合は,以下の条件制御による判定を行う。
【0082】
内部クリップ処理を行った結果,クリップ頂点を出力する場合は,(1)頂点出力フラグが「出力なし」ならば,第1クリップ頂点を除くクリップ頂点列を出力し,(2)頂点出力フラグが「出力あり」ならば,第1クリップ頂点および第2クリップ頂点を除くクリップ頂点列を出力する。
【0083】
カレント三角形の第2,3頂点がクリップ枠内にある場合は,(1)頂点出力フラグが「出力なし」ならば,カレント三角形の第2,3頂点を出力し,(2)頂点出力フラグが「出力あり」ならば,カレント三角形第3頂点のみを出力する。
【0084】
頂点出力フラグを「出力あり」にセットするタイミングは原則的に起点以外の上記出力処理を行った直後である。従って,図4,5,7,9に「A」で示すタイミングで頂点出力フラグが「出力あり」にセットされる。即ち,図4では,工程S22の直後,図5では工程S33の直後,図7では工程S22の直後,そして,図9では工程S64,S69,S76の直後である。ただし,例外的に,図7の第3の実施の形態例のクリップ起点生成部において,工程S53にて第n頂点を起点Sとした場合,その後の工程S54,55で起点Sとクリップ頂点を出力した直後では,頂点出力フラグを“出力あり”にセットしない。理由は,それに続く工程S56では内部クリップ処理を行うことなく起点(第n頂点)を頂点として出力するので,重複することはないからであり,更にその後新たな三角形列の連結が開始されるからである。
【0085】
図3の例では,上記の頂点出力フラグにより重複したクリップ頂点出力をなくした結果,出力される頂点列は,
S,C0,C1,(ここで最初の頂点出力フラグありをセット)C2,4,5,C3,C4,C5
となる。
【0086】
図6の例では,出力される頂点列は,
S,C0,C1,C2,S,5,C4,3(ここで最初の頂点出力フラグありをセット)C5,C0
となる。
【0087】
以上の実施の形態例をまとめると次の付記の通りである。
【0088】
(付記1)任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において,
前記任意形状の多角形の頂点データを順次入力し,前記クリップ枠内で切り取られたクリップ後の多角形の1つの頂点を起点データとして生成するクリップ起点生成部と,
前記起点と前記任意形状の多角形の2つの頂点データからなる第1の三角形について,順次,前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて,前記起点を1つの頂点とする少なくとも1つの第2の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有することを特徴とするジオメトリクリッピング装置。
【0089】
(付記2)付記1において,
前記クリップ多角形生成部は,前記任意形状の多角形の頂点データを,順次入力し,前記起点と入力済みの頂点と当該入力した頂点とで画定される第1の三角形について,順次,前記クリップ後の多角形の頂点を求めることを特徴とするジオメトリクリッピング装置。
【0090】
(付記3)付記1において,
更に,3つの頂点で画定される三角形をクリップ枠内で切り取られるクリップ多角形の頂点データを求める内部クリップ手段が,前記クリップ起点生成部とクリップ多角形生成部とに共通に設けられていることを特徴とするジオメトリクリッピング装置。
【0091】
(付記4)付記1において,
前記クリップ起点生成部は,最初に求められた前記クリップ後の多角形の頂点を,前記起点データとして生成することを特徴とするジオメトリクリッピング装置。
【0092】
(付記5)付記1において,
前記クリップ起点生成部は,前記任意形状の多角形の1つの頂点であって,前記クリップ枠内に位置する頂点を,前記起点データとして生成することを特徴とするジオメトリクリッピング装置。
【0093】
(付記6)付記1または2において,
前記クリップ多角形生成部は,前記任意形状の多角形の頂点であって,連続して入力される第1,2,3の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は,前記起点と第1,2の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく,前記起点と第1,3の頂点で画定される第1の三角形について当該頂点を求めることを特徴とするジオメトリクリッピング装置。
【0094】
(付記7)付記1において,
前記クリップ起点生成部またはクリップ多角形生成部は,前記クリップ多角形の頂点データを,重複することなく,当該クリップ多角形の塗りつぶしを行う描画部に供給することを特徴とするジオメトリクリッピング装置。
【0095】
【発明の効果】
以上,本発明によれば,任意形状の多角形のクリッピング処理において,多角形の頂点データを順次入力して処理し,クリップ頂点を順次出力することができるので,クリッピング処理時の中間データ量を少なく抑えることができ,ハードウエア資源を削減することができる。
【0096】
以上,本発明の保護範囲は,上記の実施の形態例に限定されるものではなく,特許請求の範囲に記載された発明とその均等物にまで及ぶものである。
【図面の簡単な説明】
【図1】本実施の形態例のジオメトリクリップ装置が設けられる画像処理装置(グラフィック装置)の構成図である。
【図2】ジオメトリクリップ部の構成図である。
【図3】第1の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図4】第1の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。
【図5】第1の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。
【図6】第2の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図7】第2の実施の形態例におけるクリップ起点生成部の処理フローチャート図である。
【図8】第3の実施の形態例におけるジオメトリクリップ部の処理を説明するための多角形とクリップ枠との関係例を示す図である。
【図9】第3の実施の形態例におけるクリップ多角形生成部の処理フローチャート図である。
【図10】サザーランド・ホッジマンのアルゴリズムを説明する図である。
【図11】一般的な任意の形状の多角形内の塗りつぶしの例を示す図である。
【符号の説明】
14 画像処理装置
20 ジオメトリクリップ部
24 フレームメモリ
101 クリップ起点生成部
102 クリップ多角形生成部
103 クリップ後処理部
S 起点
CL クリップ枠
P0 最初の任意形状の多角形
Claims (1)
- 任意形状の多角形をクリップ枠内で切り取るジオメトリクリッピング装置において,
前記任意形状の多角形の頂点データを順次入力し,前記クリップ枠内で切り取られたクリップ後の多角形の1つの頂点を起点データとして生成するクリップ起点生成部と,
前記起点と前記任意形状の多角形の2つの頂点データからなる第1の三角形について,順次,前記クリップ枠内で切り取られたクリップ後の多角形の頂点を求めて,前記起点を1つの頂点とする少なくとも1つの第2の三角形を含むクリップ多角形の頂点データを生成するクリップ多角形生成部とを有するジオメトリクリッピング装置であって、
前記クリップ多角形生成部は,前記任意形状の多角形の頂点であって,連続して入力される第1,2,3の頂点が前記クリップ枠の同じクリップ面の外側に位置する場合は,前記起点と第1,2の頂点で画定される三角形のクリップ後の多角形の頂点を求めることなく,前記起点と第1,3の頂点で画定される第1の三角形について当該頂点を求めることを特徴とするジオメトリクリッピング装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001004420A JP4323101B2 (ja) | 2001-01-12 | 2001-01-12 | 多角形のジオメトリクリッピング装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001004420A JP4323101B2 (ja) | 2001-01-12 | 2001-01-12 | 多角形のジオメトリクリッピング装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002208028A JP2002208028A (ja) | 2002-07-26 |
JP4323101B2 true JP4323101B2 (ja) | 2009-09-02 |
Family
ID=18872613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001004420A Expired - Fee Related JP4323101B2 (ja) | 2001-01-12 | 2001-01-12 | 多角形のジオメトリクリッピング装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4323101B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3768937B2 (ja) | 2001-09-10 | 2006-04-19 | キヤノン株式会社 | 電子放出素子、電子源及び画像表示装置の製造方法 |
CN103948395A (zh) | 2007-07-19 | 2014-07-30 | 北卡罗来纳大学查珀尔希尔分校 | 固定 x 射线数字化断层合成或断层摄影系统和相关方法 |
KR100914915B1 (ko) * | 2007-12-05 | 2009-08-31 | 한국전자통신연구원 | 저비용의 뷰-체적 클리핑 방법 및 장치 |
US9782136B2 (en) | 2014-06-17 | 2017-10-10 | The University Of North Carolina At Chapel Hill | Intraoral tomosynthesis systems, methods, and computer readable media for dental imaging |
-
2001
- 2001-01-12 JP JP2001004420A patent/JP4323101B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002208028A (ja) | 2002-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3484096B2 (ja) | 有向グラフの論理的ズーム装置における論理的ズーム方法 | |
US5619628A (en) | 3-Dimensional animation generating apparatus | |
JPH0251786A (ja) | 走査変換方法 | |
JP2002501640A (ja) | プログレッシブメッシュの適応細分方法および装置 | |
JP2007304576A (ja) | 半透明層の描写 | |
JP3650355B2 (ja) | 幾何学モデルのレンダリングを加速するコンピュータ・システム、方法およびコンピュータ・プログラム | |
JP4323101B2 (ja) | 多角形のジオメトリクリッピング装置 | |
JP3605317B2 (ja) | 画像描画方法、画像描画装置及び記録媒体 | |
JPH1196394A (ja) | 画像生成装置および画像生成方法 | |
CA2372882C (en) | System and method for the industrialization of parts | |
JP2009070183A (ja) | 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体 | |
JPS63305478A (ja) | パタ−ン情報復元装置 | |
JP4639010B2 (ja) | 大規模図形データ高速描画方法および装置 | |
JPH07109628B2 (ja) | 図形情報の表示処理方法 | |
JP2000172879A (ja) | 形状分割方法、形状分割装置、形状分割プログラムを記憶した記憶媒体及び形状分割装置作成方法 | |
JP3139805B2 (ja) | 画像処理方法及びその装置 | |
JP2634905B2 (ja) | 図形ぬりつぶし方法 | |
JP2543425B2 (ja) | 図形表示方法 | |
JP2980079B2 (ja) | 三次元画像処理装置及び方法 | |
JP3375069B2 (ja) | 描画処理装置 | |
JPH02208694A (ja) | 太線描画方式 | |
JP2000348209A (ja) | 3次元グラフィックス表示装置 | |
JPH06259507A (ja) | 図形分割装置 | |
JP3454150B2 (ja) | クリッピング描画装置 | |
JP3585386B2 (ja) | インクデータ形式手書きデータの処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090303 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090310 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090428 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090602 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090604 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120612 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120612 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130612 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140612 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |