JP3066599B2 - コンピュータ出力表示装置で表示するための多角形をクリップする方法 - Google Patents

コンピュータ出力表示装置で表示するための多角形をクリップする方法

Info

Publication number
JP3066599B2
JP3066599B2 JP2148850A JP14885090A JP3066599B2 JP 3066599 B2 JP3066599 B2 JP 3066599B2 JP 2148850 A JP2148850 A JP 2148850A JP 14885090 A JP14885090 A JP 14885090A JP 3066599 B2 JP3066599 B2 JP 3066599B2
Authority
JP
Japan
Prior art keywords
vertex
display window
window
code
polygon
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 - Lifetime
Application number
JP2148850A
Other languages
English (en)
Other versions
JPH0324676A (ja
Inventor
パトリック―ジル・マイヨ
Original Assignee
サン・マイクロシステムズ・インコーポレーテツド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by サン・マイクロシステムズ・インコーポレーテツド filed Critical サン・マイクロシステムズ・インコーポレーテツド
Publication of JPH0324676A publication Critical patent/JPH0324676A/ja
Application granted granted Critical
Publication of JP3066599B2 publication Critical patent/JP3066599B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はコンピユ−タグラフイツクス装置に関するも
のであり、更に詳しくいえば、コンピユ−タの出力表示
装置上の窓内に存在させるために多角形を一層効率的に
クリツプする方法に関するものである。
〔従来の技術〕
最近のコンピユ−タ装置は複数のプログラムを同時に
処理できる。これは、中央処理装置の機能をほぼ時分割
している、コンピユ−タで実行される各種のプログラム
により通常行われる。複数のプログラムが中央処理装置
により同時に実行されると、各プログラムのためのグラ
フイツク出力表示をコンピユ−タ出力表示装置の別々の
ウインドウに一緒に表示できる。二次元コンピユ−タ出
力表示装置のウインドウは通常は長方形であつて、その
ウインドウに表示される特定のプログラムに対するグラ
フイツク情報を含む。いずれの場合にも、ウインドウに
表示される情報は、利用できる全体的なグラフイツク呈
示よりしばしば少い。したがつて、特定の出力表示装置
に適合するようにグラフイツク映像をクリツプする必要
がある。
グラフイツク形象は多角形の形で出力表示にしばしば
記述される。通常は、ウインドウに適合するように多角
形をクリツプする方法は、表示すべき多角形の頂点を結
ぶ線を、ウインドウの境界を描く線と比較して、多角形
のどの部分がウインドウの境界内に含まれるかを判定す
る。多角形の頂点を結ぶ線をコンピユ−タの境界と比較
するためにいくつかのアルゴリズムが提供されている。
それらのアルゴリズムのうち最も使用されているもの、
すなわち、サザ−ランド=ホツジマン(Sutherland−Ho
dgman)アルゴリズムが雑誌、コミユニケ−シヨンズ・
オブ・ザ・アソシエ−シヨン・フオ−・コンピユ−テイ
ング・マシナリイ(Cemmunications of the Associatio
n for Computing Machinery)、17巻、1号、1974年1
月号所載のサザ−ランド(Sutherland)とホツジマン
(Hodgman)の「リエントラント・ポリゴン・クリツピ
ング(Re−entrant Polygon Clipping)」と題する論文
に記載されている。サザ−ランド=ホツジマン・アルゴ
リズムは、「入力」多角形の各辺を特定のウインドウ境
界に対してクリツプすることにより、各ウインドウ境界
に対して新しい多角形を形成する。これによつて「出
力」多角形が発生される。次にその「出力」多角形は次
のウインドウ境界に対する「入力」多角形となつて、新
しい「出力」多角形を生ずる。全てのウインドウ境界が
走査されて、最後の「出力」多角形がウインドウに適合
するまでこの動作が繰返えされる。サザ−ランド=ホツ
ジマンの実現には大容量のメモリを必要とし、かつそれ
の目的を達成するためには中央処理装置の十分に長い処
理時間を要する。
サザ−ランド=ボツジマン・アルゴリズムは非常に長
い時間と大容量のメモリを必要とするから、別のアルゴ
リズムが提案されている。1977年に出版されたプロシ−
デイングス・オブ・シツグラフ(Preceedings of Siggr
aph)の214〜222ペ−ジ所載の「ヒツドン・サ−フエイ
ス・リム−バル・ユ−ジング・ポリゴン・エリア・ソ−
テイング(Hidden Surfece Removal Using Polygon Are
a Sorting)〕と題する論文において、ウエイラ−(Wei
ler)とアサ−トン(Atherton)は、多角形の隠されて
いる表面と隠されている線を除去するためのアルゴリズ
ムを提案している。このアルゴリズムは映像を、ウイン
ドウ内の深さオ−ダ−が見出されるまで、多形状のウイ
ンドウに繰返えし分割される。このアルゴリズムはとく
に正確であるが、非常に複雑であるからコンピユ−タに
よる処理時間が非常に長く、かつメモリの動作時間が非
常に長い。更に、このアルゴリズムは長方形のウインド
ウに対しては最適にされず、したがつて動作が比較的遅
い。
リアン(Liang)とバ−スキ−(Barsky)は、コミユ
ニケ−シヨンズ・オブ・ザ・エ−シ−エム(Communicat
ions of the ACM)、1983年11月号、26巻、868〜877ペ
−ジ所載の「アン・アナリシス・アンド・アルゴリズム
・フオ−・ポリゴン・クリツピング(An Analysis and
Algorithm for Polygon Clipping)」と題する論文にお
いて、サザ−ランド=ボツジマン・アルゴリズムの動作
速度を約2倍にするアルゴリズムを提案している。サザ
−ランド=ホツジマン・アルゴリズムとは異り、リアン
=バ−スキ−・アルゴリズムは二次元の長方形ウインド
ウに限定される。リアン=バ−スキ−・アルゴリズム
は、無限に延長している多角形の辺である線と、無限に
拡つている全てのクリツプ平面との交差を計算する。そ
れから、多角形の辺から離れて存在するが、クリツプさ
れる多角形の中に含まれる必要がある点(転換点(turn
ing point)または転換頂点(turning vertex)として
知られている)を決定するために、そのアルゴリズムは
それらの交差を用いる。それらの点はクリツプされたウ
インドウの4つの隅であつて、クリツプされた多角形内
では呈示すべき多角形の部分にしばしばなる。リアン=
バ−スキ−・アルゴリズムは、サザ−ランド=ホツジマ
ン・アルゴリズムより速いが、かなりな数の浮動小数点
計算を行う必要があるが、特定のコンピユ−タ装置が浮
動小数点コプロセツサを含んでいなければ、その計算は
困難で、非常に時間を要する。マイクロプロセツサをベ
−スとする多くのコンピユ−タ装置はそのようなコプロ
セツサを含まず、それらの装置による計算は極めて複雑
で、時間がかかる。
最後に、サザ−ランド=コ−ヘン(Cohen)が、特定
の線分がクリツピングウインドウの内部に完全に含ま
れ、かつ完全に引かなければならないようなケ−スと、
特定の線分を引くべきでない特定の領域内のクリツピン
グ・ウインドウの完全に外側にその線分が存在するよう
なケ−スとを迅速に決定することによつてのみ線をクリ
ツプする方法を提案している。これについては、ニユ−
マン(New man)およびスプル−ル(Sproull)著、「プ
リンシプルス・オブ・インタ−アクテイブ・コンピユ−
タ・グラフイツクス(Principles of Interactive Comp
uter Graphics)」第2版、マグロ−ヒル(McGraw−Hil
l)発行、65〜69ペ−ジを参照されたい。それらは単純
な合格ケ−スおよび単純な不合格ケ−スと呼ばれ、交差
計算の全体の実現を要しない。サザ−ランド=コ−ヘン
・アルゴリズムはそれらの単純な合格ケ−スおよび単純
な不合格ケ−スを決定する迅速な方法を提供するもので
あつて、クリツピング・アルゴリズムの実現速度を大幅
に向上させるものである。しかし、サザ−ランド・コ−
ヘン・アルゴリズムには多角形をクリツプする方法はな
く、したがつて、多角形の辺から離れて存在するが、ク
リツプされる多角形内に含まれるべき点(転換点)を決
定するために付加交差は発生しない。
〔発明が解決しようとする課題〕
したがつて、本発明の目的はコンピユ−タの出力表示
装置によるグラフイツク物体の表示を加速することであ
る。
本発明の別の目的は、多角形の頂点を決定し、コンピ
ユ−タの出力表示装置におけるウインドウに適合させる
ようにクリツプする速度を向上させることである。
〔課題を解決するための手段〕
本発明のそれらの目的およびその他の目的は、単純な
合格ケ−スと単純な不合格ケ−スを決定するためにサザ
−ランド=コ−ヘン・アルゴリズムを多角形にまず適用
し、それから、多角形の辺上には存在しないが、クリツ
ピングウインドウの隅である、多角形に含ませられ、あ
る付加点の存在を、多角形の辺が存在する領域から決定
するために、サザ−ランド=コ−ヘン・アルゴリズムに
よる単純な合格テストおよび不合格テストにおいて決定
された情報が利用される。これは、終点の頂点と、特定
のウインドウに対して発生された種々のルツクアツプテ
−ブルとを用いるプ−ル演算を用いることにより、ほと
んどの場合に可視ウインドウの外部のウインドウ境界と
の交差を計算する必要なしに非常に簡単に行われる。
表記および用語 以下に示す詳細な説明のいくつかの部分は、コンピユ
−タメモリ内のデ−タビツトについてのオペレ−シヨン
のアルゴリズムと記号表記に関して行つている。それら
のアルゴリズム記述と表現は、デ−タ処理技術における
専門家が自己の業績をその分野における他の専門家へ最
も効果的に伝えるために用いる手段である。
アルゴリズムというのは、ここでは、および一般的
に、希望の結果へ導く、自己矛盾しない一連の過程であ
ると解される。それらの過程は物理量の物理的取扱いを
要するものである。通常は、それらの量は、格納、転
送、組合わせ、比較およびその他の処理を行うことがで
きる電気信号または磁気信号の形をとるが、必ずしもそ
うする必要はない。主として一般的に使用するという理
由から、それらの信号をビツト、値、素子、記号、文
字、項、数等と呼ぶ方が時には便利であることが判明し
ている。しかし、それらの用語および類似の用語の全て
適切な物理量に関連づけるべきであり、かつそれらの用
語はそれらの量につけられる便利なレツテルであるにす
ぎないことも憶えておくべきである。
更に、行われる処理は、加算または比較のような用語
でしばしば呼ばれる。それらの処理は人により行われる
精神活動に関連するものである。本発明の部分を形成す
るここで説明する処理のいずれにもおけるほとんどの場
合に、人のそのような能力は必要でないことが望まし
い。操作は機械による操作である。本発明の操作を行う
ために有用な装置には汎用デジタルコンピユ−タおよび
他の類似の装置が含まれる。あらゆる場合に、コンピユ
−タを動作させる方法と、処理方法自体の違いを記憶し
ておくべきである。本発明は、電気信号その他の(たと
えば、機械的、化学的)物理的信号を処理して、他の希
望の物理信号を発生させるために、コンピユ−タを使用
する方法に関するものである。
本発明はそれらの操作を行う装置にも関するものであ
る。この装置は求められている目的のためにとくに製作
でき、あるいは、コンピユ−タに格納されているコンピ
ユ−タプログラムにより選択的に起動または再構成され
る汎用コンピユ−タを含むことができる。ここで示すア
ルゴリズムは特定のコンピユ−タその他の装置に本質的
に関連するものではない。とくに、この明細書の記載に
従つて書かれたプログラムに各種の汎用機を使用でき、
あるいは求められている方法を実施するために一層専用
化された装置を製作することが更に便利であることが判
明している。
〔実施例〕
まず、本発明の方法の実現を示す線図が示されている
第1図を参照する。この図は、出力表示装置にサザ−ラ
ンド=コ−ヘン・アルゴリズムで与えられる様式で呈示
すべき可視ウインドウを囲む領域の命名を示す。二次元
クリツプウインドウを示す4本の線が第1図に示されて
いる。2本の平行な垂直線がXmin,Xmaxで示され、2本
の平行な水平線がYmin,Ymaxで示されている。それら4
本の線で囲まれた中央部分にある領域は、コンピユ−タ
の出力表示装置に表示すべきウインドウの領域である。
他の領域はコンピユ−タ表示装置の上、下、左および右
にある領域である。
サザ−ランド=コ−ヘン・アルゴリズムは4つの2進
ビツトを用いてそれらの各領域をコ−ド化する。最も左
側のビツト1はクリツプウインドウの下の点を示し、左
から2番目のビツト1はウインドウの左側にある点を示
し、左から3番目のビツト1はウインドウの上の点を示
し、最も右のビツト1はウインドウの右の点を示す。し
たがつて、ウインドウ自体は0000として示され、他の領
域は第1図に示すように示されている。したがつて、た
とえば、ウインドウの左上の領域が0110で示されてい
る。
サザ−ランド=コ−ヘン・クリツプアルゴリズムは、
両方の頂点がそれらの領域のうちの特定の1つにあるか
どうかを検査することにより、単純に合格または不合格
にできる線を効果的に識別するために構成される。たと
えば、第3図にはサザ−ランド=コ−ヘン・アルゴリズ
ムのオペレ−シヨンを説明する際に考えることができる
何本かの線が示されている。ウインドウ領域の中に完全
に含まれている線10の各端点は0000領域内にある。サザ
−ランド=コ−ヘン・アルゴリズムにおいて、線分の2
個の各端点が存在する領域を比較する検査が、それが、
どのような検査決定または他のどのような検査も行うこ
となしに、合格にすべき線の単純なケ−スであることを
決定する。
同様にして、線12の2つの端点はウインドウのすぐ上
の領域0010内にあり、アルゴリズムにより交差点を計算
することを必要としないものとして、頂点が含まれる領
域を比較した後で単純にそれを除去できる。同様にし
て、線14の両方の端点がウインドウの右上の領域0011の
中にあるものとして、線14を単純に除去できる。
しかし、クリツプされた多角形を完全に形成するため
に、第3図に示す他の線を単純に合格または不合格にし
ないようにでき、かつ種々の交差点の決定にサザ−ラン
ド=コ−ヘン・アルゴリズムの使用を要する。サザ−ラ
ンド=コ−ヘン・アルゴリズムを用いてこれをどのよう
にして行うかを以下に説明する。線16のような線が、決
定されるウインドウ境界を定める1本の延長線と第1の
交差を行う。たとえば線Ymaxと線16の代数的な定義を用
いて、第3図の交点18を計算できる。それから線16の1
つの部分がすてられる。サザ−ランド=コ−ヘン・アル
ゴリズムは、ウインドウの上、下、右または左にある線
の一端を、このアルゴリズムの適用を通じてたどる特定
の順序で選択することにより、捨れるべき部分をすて
る。線16の場合には、ウインドウの上にある部分が捨て
られる。線18の残りの部分を調べて、その部分を単純に
合格するか、単純に不合格にするかを決定する。いずれ
も採用しないとすると、線16と次のウインドウ境界Xmin
の新しい交差を点20において決定する。交差点20が決定
されたとすると、ウインドウの左側の線部分がすてられ
る。この線の、点18と20の間にある部分を調べて、その
部分の合否を単純に決定する。この線の両方の端部が領
域0000内の可視ウインドウの境界内にあるから、その部
分は単純に合格にできることが明らかである。これでそ
の特定の線16をクリツプするための計算が終る。
線22のような他の線に適用されると、このアルゴリズ
ムにより行われる決定は一層複雑になる。たとえば、線
22は、ウインドウの中に完全に含まれる多角形を完成で
きる。その場合には(たとえば、第3図に破線で示され
ている、線22と10と端点を結ぶ多角形の場合には)、そ
れらの線とクリツプウインドウの縁部の交点24と26を上
記のように単純なやり方で決定できる。しかし、クリツ
プウインドウ内に、クリツプウインドウの左上隅へ延長
する多角形の部分を含ませることにより完成されるだけ
である。この点28は、多角形を形成する線のどれにもな
く、ウインドウの境界に対する線22の位置から決定せね
ばならない。サザ−ランド=コ−ヘン・アルゴリズムは
線をクリツプする線であるから、そのアルゴリズムを用
いてこの点を見つける方法はない。サザ−ランド=コ−
ヘン・アルゴリズムは、拡張されているクリツプウイン
ドウを定める線XmaxおよびXminと線22の種々の交差の計
算を続け、線全体を除去するとの結論に達する。
リアン(Liang)=バ−スキ−(Barsky)アルゴリズ
ムは、全ての交差を決定し、それらの交差の決定からク
リツプ点の値を割当てるやり方を用いることにより、こ
の問題をある程度解決する。リアン=バ−スキ−・アル
ゴリズムは基本的なサザ−ランド=ホツジマン・アルゴ
リズムより2倍速いが、全てのクリツプウインドウ境界
に対して交差を計算した後で、転換点の割当てを行うこ
とができる。そして、浮動小数点計算による交差を計算
を行うことを必要とする。マイクロプロセツサをベ−ス
とする多くのコンピユ−タ装置においては、その計算は
極めて遅いからグラフイツク出力表示装置での映像表示
を損う。
本発明は、無限に延びているウインドウ境界との交差
を、ほとんどの場合に計算する必要なしに、多角形の辺
を離れている点の決定を大幅に改良するものである。本
発明は次のように動作する。まず初めに、サザ−ランド
=コ−ヘン・アルゴリズムにより割当てられている各領
域コ−ドが、可視ウインドウの対角線上の隅にある2つ
の1ビツトと、可視ウインドウの右、左、上または下に
ある1つの1ビツトを含むことを認識する。可視多角形
の転換点を決定するためにこの方法はこの認識を用い
る。
クリツプすべき多角形の辺を形成する最初の線分に対
して、単純な合格条件または単純な不合格条件が存在す
るかを判定するために、サザ−ランド=コ−ヘン・アル
ゴリズムが最初に適用される。その条件が存在しないと
すると、サザ−ランド=コ−ヘン・アルゴリズムは可視
ウインドウの縁部と辺の交差を判定する。それらが起ら
ないとすると、サザ−ランド=コ−ヘン・アルゴリズム
により供給される、頂点が存在する領域についての情報
が、その線分の始点と終点を基にして種類に分類され
る。各辺は始点から次の終点までと考えられる。その終
点から次の辺が考えられる。線の端点が、4ビツトコ−
ド指示が2個の1ビツトを含んでいる領域(すなわち、
ウインドウの隅の区域)に存在するものとすると、その
領域に接触する可視ウインドウのウインドウの隅が、ク
リツプすべき多角形中の付加点、すなわち転移点、とし
て可視多角形に割当てられる。第1図からわかるよう
に、これは、多角形の辺の端点が、可視ウインドウの対
角線上の隅における区域0110、0011、1001、または1100
内にあるものとすると、この最初(いわゆる一般的な規
則)が適用されることを意味する。そして、それらの各
領域に最も近いウインドウの隅がクリツプされる多角形
に対する付加点として割当てられる。
この一般的な規則は、ウインドウの真上、真下、左お
よび右の領域の中に端点が存在する場合はカバ−しな
い。その一般的な規則は、斜めの領域に終る線に対する
全ての転換点もカバ−しない。この理由から、始点と終
点が含まれる領域に依存して線分が分類される。ウイン
ドウの上、下、左および右の領域であつて、その領域に
対するコ−ドが1個の1ビツトを有するような領域に始
点と終点が含まれるものとすると、辺は1−1ビツト線
と命名されて、1つのやり方で処理される。他方、始点
と終点がコ−ド化された領域に含まれ、それらの領域の
1つが1つの1ビツトを有し、残りが一対の1ビツト
(いわゆる1−2ビツト線)を有するものとすると、そ
の線は異なるやり方で取扱われる。最後に、一対の1ビ
ツト(いわゆる2−2ビツト線)を含むコ−ドを有する
領域に始点と終点が含まれる線が第3のやり方で取扱わ
れる。
1−1ビツト線の場合には、両方の頂点が同じ領域内
にあるものとすると、転換点を割当てる必要はない。こ
れに対して線はサザ−ランド=コ−ヘン・アルゴリズム
の最初のステツプにおいて単純な不合格な場合として既
に単純に除去されることになる。しかし、1−1ビツト
辺の両方の頂点が別々の領域内にあるものとすると、2
つのコ−ドが論理オア操作で組合わされる。そのオア操
作の結果は一般的な規則の適用において用いられる。た
とえば、第3図に示す線30のような線が区域0100で始つ
て区域0010に終るものとすると、論理オア操作によつて
2進数0110が与えられる。その2進数は左上の領域に対
するコ−ドと同じ数である。この数は、一般的な規則を
用いて、クリツプされるウインドウ内に記述すべき多角
形内に含ませるべき転換点として、可視ウインドウの左
上隅を割当てることを求める。
1−2ビツト指定内に入る頂点を有する線の場合に
は、4つの可能性が起る。第1に、線の端点が1ビツト
領域内にあり、領域の2つのコ−ドの論理アンド操作の
結果が零でないとすると、転換点は発生されない。たと
えば、0110区域から0010区域へ進む線は転換点を発生す
る必要はない。というのは、一般的な規則の下で、左上
隅の領域が0110区域内の頂点に終る線により転換点とし
て既に指定されているからである。ある点がクリツプさ
れた多角形内にあるものと指定されると、クリツプされ
るウインドウ内に存在する多角形を完全に記述するため
にはそのような再び指定する必要はない。
しかし、線の端点が1ビツト領域内にあり、頂点の領
域を指定するコ−ドのアンド操作によつて零結果が得ら
れる場合、たとえば区域0110から0001まで延長する線32
(第4図)のような場合には、ウインドウの右上隅に対
応する転換点40が発生される。本発明においては指定は
ルツクアツプテ−ブルにより行われる。
線が2ビツト領域に終り、2つのコ−ドのアンド操作
により零となる結果が生じないものとすると、そのケ−
スは一般的な規則により取扱われて、その線の端点に最
も近いウインドウの隅を転換点として発生する。
他方、線が2ビツト領域に終つて、2つのコ−ドのア
ンド操作により零となる結果が生ずる場合、たとえば、
区域0001で始つて区域0110に終る線34(第5図)の場合
には、2つの転換点を発生せねばならない。すなわち、
1つの転換点42をウインドウの左上隅で一般的な規則に
より発生し、他の1つの点44をウインドウの右上隅で発
生する。この第2の転移点44は本発明のこの実施例では
ルツクアツプテ−ブルによつても取扱われる。
2−2ビツトケ−スとして示されている辺の場合に
は、3つの状況が起る。まず、始点と終点が同じ領域に
ある時は、サザ−ランド=コ−ヘン・アルゴリズムによ
り単純な合格または不合格のケ−スとして取扱われるか
ら、転換点は発生する必要はない。もし、単純なケ−ス
ではなくて、線の端点に対する2つのコ−ド領域のアン
ド操作の結果が零でないとすると、辺の端点に一般的な
規則が適用される。それらの辺は、たとえば、区域0011
から区域1001へ、および区域1001から区域1100へ移動す
る線のことがある。
しかし、線の端点が存在する2つの領域に対するコ−
ドのアンド操作によつて零が生じたとすると(たとえ
ば、第6図において線36と38が区域0011から反対側の対
角線の隅へ移動する)、その線は可視ウインドウの1つ
の辺または他の辺に含まれることがある。それであいま
いな状況が生ずる。この状況においては、線(第6図の
36または38)が、いわゆる中間点(第6図で、たとえば
線38上の点39)を決定することにより、2本の線に分割
される。本発明のこの実施例は、その点が2個の原点の
うちの1つと同じ領域にあるかどうかを決定する。もし
そうだとすると、対応する原点が中間点で置換され、新
しい中間点が評価される。端点が含まれる領域とは異な
る領域に中間点が含まれるまでその操作は繰返えされ
る。中間点が端点が含まれている領域の1つにないもの
とすると、本発明のこの実施例は、1−1ビツトの場合
または1−2ビツトの場合について先に述べた規則の1
つを適用することにより、適切な転換点を決定する。
本発明に従つてルツクアツプテ−ブルを構成すること
が比較的簡単なやり方で容易に行えることが判明してい
る。たとえば、第4図の転換点40を決定するのに必要な
コ−ド番号0110を得るため、線分32が始る区域0110のコ
−ドが、非ブ−ル代数計算において、コ−ド0001(これ
は端点を示す)により索引されるルツクアツプテ−ブル
の内容に単に加えられる。したがつて、初めの頂点にお
けるコ−ド0110(6の2進表現)にマイナス3が加えら
れるとすると、第4図の領域との比較により、ウインド
ウの左上隅における転換点が一般的な規則により示され
ることがわかるであろう。したがつて、2進で示されて
いるマイナス3がルツクアツプテ−ブルの索引位置0001
で得られ、それから一般的な規則が適用される。同様に
して、他の隅、または1ビツト領域または2ビツト領域
で種々に始り、または終る線のための転換点を実現する
ために、ルツクアツプテ−ブルは数プラス6またはマイ
ナス6、あるいはプラス3を保持できる。
コ−ド区域1100で始り、同じ区域0001に同様にして終
る線分は、コ−ド区域1001内の転換点に達するために、
ルツクアツプテ−ブルからのマイナス3を用いる。区域
1100または1001で始つて、コ−ド区域0010で終る線分が
索引され、マイナス6を加えて区域0110または0011内の
転換点に達する。コ−ド区域0011または0110で始つてコ
−ド区域1100で終る線分は検索され、プラス6を加えて
区域1100または1001内の転換点に達する。また、コ−ド
区域0011または1001で始つて、区域0110に終る線分が索
引され、プラス3を加えて区域0110または1100内の転換
点に達する。
本発明のためのルツクアツプテ−ブルの構成において
は、頂点が2ビツト領域に終る端点により発生された各
2ビツトコ−ド、またはそのような領域を指定するコ−
ドを提供するブ−ルオア操作へ第1のルツクアツプテ−
ブルが提供される。ルツクアツプテ−ブルはそれらの各
転換点(ウインドウの隅)に対してX値とY値を発生す
る。それらの値はクリツプされた多角形へ加えられてそ
の多角形を完全に構成する。
本発明の実施において提供される第2のルツクアツプ
テ−ブルは、頂点を終らせるためのコ−ドがアドレスへ
オフセツトとして供給され、ウインドウの特定の隅に対
する値に開始頂点を達せさせるための他のコ−ドがその
ルツクアツプテ−ブルにより供給される。この値は(番
号の符号に応じて)コ−ドの1つから差し引かれ、また
はその1つに加えられ、転換点を供給するために結果の
アドレスの下に第1のルツクアツプテ−ブルが調べられ
る。また、クリツプされた多角形に加える付加点を指示
するために、この転換点がX値およびY値として供給さ
れる。
本発明を実施するための一般的なアルゴリズムは次の
通りである。
(以後、全ての点に対して、 多角形の第1の点のコ−ドを計算する: 点のコ−ドを計算する、 線がクリツプ領域の外ならば、 2つのコ−ドに従つて線をクリツプする: 1−1、1−2、2−2コ−ドについてテストする。
endif 一般的なケ−スをテストする。
「第1の点」を「現在の点」にセツトする。
endfor) このアルゴリズムのC言語による特定の実現を次節に
示す。この実現には、下記の2つの機能で構成されたサ
ザ−ランド=コ−ヘン・アルゴリズムが含まれていな
い。
機能CP_space_code()は与えられた点に関連するコ
−ドを戻す。戻されたコ−ドは1つの値にでき、または
1つの値と、2ビツトコ−ドを示すフラツグとの間の連
合にできる。
CP_2D_polygon_clip()機能は頂点のアレイを入力と
して受け、長方形のビユ−ポ−トに対してベクトルをク
リツプする。多角形構造を保ち、正しい視覚化を確実に
行うために必要な場合には転換点が発生される。この機
能は結果としての多角形を点の出力アレイで発生する。
以上説明したクリツピングアルゴリズムの実現をいく
つかのワ−クステ−シヨンに対してプログラムし、いく
つかの図形について、サザ−ランド=ホツジマン・アル
ゴリズムと、リアン=バ−スキ−・アルゴリズムによる
実現と速度を比較した。あらゆる場合に、本発明のアル
ゴリズムは、類似の多角形図形を比較した時に、それら
2つのアルゴリズムより十分に速く動作した。本発明の
アルゴリズムは浮動小数点演算と整数演算の両方を用い
て演算できる。整数演算を用いる時は、本発明は上記2
つのアルゴリズムより十分に速く動作する。
【図面の簡単な説明】
第1図はサザ−ランド=コ−ヘン・アルゴリズムで用い
られる領域コ−ドを示す線図、第2図は本発明で用いる
転換点の意味を示す線図、第3図は本発明の説明に用い
られるウインドウのクリツプに関する線の種々の全般的
な形を示し、第4図は本発明の実施において特定のクリ
ツプされたウインドウに関する多角形の特定の辺に対し
て発生すべき特定の転換点を示し、第5図は本発明の実
施において特定のクリツプウインドウにおける多角形の
特定の辺に関して発生された別の転換点セツトを示し、
第6図は本発明の実施において取扱わねばならないあい
まいな条件を示す。
フロントページの続き (56)参考文献 J.D.Folley,A.van Dam.S.K.Feiner,J. F.Hugher ”Computer Graphics (PRINCIP LES AND PRACTICE)" Second Edition,pp. 930−937,Addison−Wesle y Publishing Compa ny,1990 http://www.neutra lzone.org/home/faq sys/docs/liang−ba. txt (58)調査した分野(Int.Cl.7,DB名) G06T 11/00

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】コンピュータ出力表示装置での表示のため
    に多角形をクリップする方法において、多角形にはその
    辺をなす実質上の直線で連結された開始頂点と終了頂点
    があり、前記辺はクリップされてコンピュータ出力表示
    装置における4個の隅を有し4つの縁で囲まれた方形の
    表示ウインドウ中に表示され、 開始頂点および終了頂点に開始コードおよび終了コード
    を割り当てる過程であって、各コードにより各頂点が前
    記表示ウィンドウの上、下、右、左、右上、左上、右
    下、左下、内部の何れの領域に存在するが示され、各コ
    ードには少なくとも4つのビットが含まれ、それらの第
    1ビットによって当該頂点が前記表示ウィンドウの下の
    3つの領域の1つに位置するかどうかが示され、第2ビ
    ットによって当該頂点が前記表示ウィンドウの左の3つ
    の領域の1つに位置するかどうかが示され、第3ビット
    によって当該頂点が前記表示ウィンドウの上の3つの領
    域の1つに位置するかどうかが示され、第4ビットによ
    って当該頂点が前記表示ウィンドウの右の3つの領域の
    1つに位置するかどうかが示され、 前記開始頂点および終了頂点の双方が前記表示ウィンド
    ウの内部の領域に存在する場合には、前記辺を表示する
    ものに含める過程と、 前記開始頂点および終了頂点の双方が前記表示ウィンド
    ウの外部の領域に存在する場合には、前記辺を表示する
    ものから除外する過程と、 前記開始頂点および終了頂点が異なる領域に存在し、前
    記辺が前記表示ウィンドウの1つまたは2つの縁と交差
    する場合には、表示ウィンドウの外部にある前記辺の一
    部分をクリップすることによって残る前記辺の部分を、
    表示するものに含める過程と、 前記開始頂点および終了頂点が異なる領域に存在し、前
    記辺が前記表示ウィンドウのどの縁とも交差しないとき
    は、前記開始頂点に割当てられたコードと前記終了頂点
    に割当てられたコードとについて、ブールOR演算および
    ブールAND演算のうち選択された一方を実行することに
    よってブール演算結果を得て、このブール演算結果から
    第1領域を導出し、この第1領域に最も近い、前記表示
    ウィンドウの1つの隅を第1隅とし、前記辺を前記第1
    隅で置き換える過程と、 前記開始頂点および終了頂点が異なる領域に存在し、前
    記辺が前記表示ウィンドウのどの縁とも交差せず、前記
    開始頂点が前記表示ウィンドウの上、下、右、および左
    にある4つの領域の1つに位置し、そして、前記終了頂
    点が前記表示ウィンドウの左下、右上、左上、および右
    下にある4つの領域の1つに存在するという条件を満足
    するときは、前記開始頂点に割当てられたコードと前記
    終了頂点に割当てられたコードとについて、ブールAND
    演算を実行することによってブール演算結果を得て、こ
    のブール演算結果から第2領域を導出し、この第2領域
    に最も近い、前記表示ウィンドウの1つの隅を第2隅と
    し、前記辺を前記第2隅で置き換える過程と を含む、コンピュータ出力表示装置での表示のために多
    角形をクリップする方法。
JP2148850A 1989-06-09 1990-06-08 コンピュータ出力表示装置で表示するための多角形をクリップする方法 Expired - Lifetime JP3066599B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/364,697 US5079719A (en) 1989-06-09 1989-06-09 Method and apparatus for clipping polygons
US364,697 1989-06-09

Publications (2)

Publication Number Publication Date
JPH0324676A JPH0324676A (ja) 1991-02-01
JP3066599B2 true JP3066599B2 (ja) 2000-07-17

Family

ID=23435668

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2148850A Expired - Lifetime JP3066599B2 (ja) 1989-06-09 1990-06-08 コンピュータ出力表示装置で表示するための多角形をクリップする方法

Country Status (5)

Country Link
US (1) US5079719A (ja)
JP (1) JP3066599B2 (ja)
CA (1) CA2010967C (ja)
GB (1) GB2232564B (ja)
HK (1) HK76694A (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5566292A (en) * 1992-04-17 1996-10-15 International Business Machines Corporation Methods for detecting the closest existing point on a spline or polyline
US5357599A (en) * 1992-07-30 1994-10-18 International Business Machines Corporation Method and apparatus for rendering polygons
US5613052A (en) * 1993-09-02 1997-03-18 International Business Machines Corporation Method and apparatus for clipping and determining color factors for polygons
US5491494A (en) * 1993-11-19 1996-02-13 International Business Machines Corporation Pick correlation
GB9406584D0 (en) * 1994-03-31 1994-05-25 Argonaut Software Limited Clipping in 3-d computer graphics
EP0680020B1 (en) * 1994-04-28 2003-02-05 Sun Microsystems, Inc. Apparatus and method for direct calculation of clip region outcodes
US5720019A (en) * 1995-06-08 1998-02-17 Hewlett-Packard Company Computer graphics system having high performance primitive clipping preprocessing
US5877773A (en) * 1997-05-30 1999-03-02 Hewlett-Packard Company Multi-pass clipping in a geometry accelerator
US6137497A (en) * 1997-05-30 2000-10-24 Hewlett-Packard Company Post transformation clipping in a geometry accelerator
US7224364B1 (en) * 1999-02-03 2007-05-29 Ati International Srl Optimal initial rasterization starting point
US7414635B1 (en) * 2000-08-01 2008-08-19 Ati International Srl Optimized primitive filler
KR100444782B1 (ko) * 2002-10-29 2004-08-18 (주)사나이시스템 다각형 부울리안 연산을 위한 선분 데이터 생성 방법
US6919908B2 (en) * 2003-08-06 2005-07-19 Ati Technologies, Inc. Method and apparatus for graphics processing in a handheld device
US20050280658A1 (en) * 2004-06-22 2005-12-22 Aleksandar Filipov Method of accurate fixed-point line clipping
JP2008009719A (ja) * 2006-06-29 2008-01-17 Fujitsu Ltd 直線描画方法、直線描画プログラム及び直線描画装置
US8368719B2 (en) * 2008-07-03 2013-02-05 Research In Motion Limited Method and system for fast clipping of polygons
CA2729234C (en) 2008-07-03 2014-01-07 Research In Motion Limited Method and system for fast clipping of line segments

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3638736A (en) * 1969-06-25 1972-02-01 Esco Corp Corner bit structure
US3639736A (en) * 1969-11-19 1972-02-01 Ivan E Sutherland Display windowing by clipping
US3816726A (en) * 1972-10-16 1974-06-11 Evans & Sutherland Computer Co Computer graphics clipping system for polygons
US4181953A (en) * 1978-02-17 1980-01-01 The Singer Company Face vertex correction for real-time simulation of a polygon face object system
JPS603695A (ja) * 1983-06-21 1985-01-10 ダイキン工業株式会社 Crtデイスプレイ装置のクリツプ回路
JPS6120128A (ja) * 1984-07-07 1986-01-28 Daikin Ind Ltd Crtデイスプレイ装置のクリツプ回路
US4958305A (en) * 1987-11-04 1990-09-18 General Electric Company Polygon edge clipping

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
http://www.neutralzone.org/home/faqsys/docs/liang−ba.txt
J.D.Folley,A.van Dam.S.K.Feiner,J.F.Hugher "Computer Graphics (PRINCIPLES AND PRACTICE)"Second Edition,pp.930−937,Addison−Wesley Publishing Company,1990

Also Published As

Publication number Publication date
CA2010967A1 (en) 1990-12-09
GB2232564B (en) 1994-01-12
GB2232564A (en) 1990-12-12
CA2010967C (en) 1998-12-01
JPH0324676A (ja) 1991-02-01
GB8926764D0 (en) 1990-01-17
HK76694A (en) 1994-08-12
US5079719A (en) 1992-01-07

Similar Documents

Publication Publication Date Title
JP3066599B2 (ja) コンピュータ出力表示装置で表示するための多角形をクリップする方法
JP3030206B2 (ja) グラフィック多角形をクリップ領域にクリップする方法および装置
US4982345A (en) Interactive computer graphics display system processing method for identifying an operator selected displayed object
EP0356103B1 (en) Scan-conversion process and processor
US6292192B1 (en) System and method for the direct rendering of curve bounded objects
JPH0827846B2 (ja) オブジエクトの選択を検出する方法及び装置
US5003497A (en) Method for three-dimensional clip checking for computer graphics
JPH05258077A (ja) 画素処理方法及び装置並びにグラフィックバッファ
JPH07109629B2 (ja) 多角形の識別方法、多角形を識別するシステム
JPH07104966A (ja) 長方形の相対位置を素早く判定するためのシステムおよび方法
US5020002A (en) Method and apparatus for decomposing a quadrilateral figure for display and manipulation by a computer system
US5128872A (en) Method and apparatus for determining line positions for display and manipulation by a computer system
JP2625612B2 (ja) 画像処理方法および画像処理装置
JPH04291685A (ja) クリップ・テスタ回路及びクリップ・テスト方法
US5563990A (en) Method and apparatus for processing a pick event
US5644691A (en) Method and apparatus for accelerated filling of polygons on a computer display by rectangular decomposition
US6930686B1 (en) Method and apparatus for drawing thick graphic primitives
JPH0816931B2 (ja) 輪郭線抽出方式
EP0521210B1 (en) Graphics clipping
JP2955995B2 (ja) 画像操作方法
EP0707285A2 (en) Method and apparatus for determining simple convex polygons
KR19980086392A (ko) 3-d 그래픽용 고속 클립핑
JP2780496B2 (ja) 描画装置のクリッピング処理方式
JP2714114B2 (ja) グラフィック処理方法及びグラフィックシステム
JPH08185542A (ja) 図形処理装置