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

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

Info

Publication number
JPH0324676A
JPH0324676A JP2148850A JP14885090A JPH0324676A JP H0324676 A JPH0324676 A JP H0324676A JP 2148850 A JP2148850 A JP 2148850A JP 14885090 A JP14885090 A JP 14885090A JP H0324676 A JPH0324676 A JP H0324676A
Authority
JP
Japan
Prior art keywords
window
polygon
point
algorithm
code
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.)
Granted
Application number
JP2148850A
Other languages
English (en)
Other versions
JP3066599B2 (ja
Inventor
Patrick-Gilles Maillot
パトリック―ジル・マイヨ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明ハコンピュータグラフィックス装置に関するもの
であシ、更に詳しくいえば、コ/ビュータの出力表示装
置上の窓内に存在させるために多角形を一層効率的にク
リップする方法に関するものである。
〔従来の技術〕
最近のコンピュータ装置は複数のプログラムを同時に処
理できる。これは、中央処理装置の機能をほぼ時分割し
ている、コンピュータで実行される各種のプログラムに
よシ通常行われる。複数のプログラムが中央処理装置に
よシ同時に実行されると、各プログラムのためのグラフ
ィック出力表示をコンピュータ出力表示装置の別々のウ
ィンドウに一緒に表示できる。二次元コンピュータ出力
表示装置のウィンドウは通常は長方形であって、そのウ
ィンドウに表示される特定のプログラムに対するグラフ
ィック情報を含む。いずれの場合にも、ウィンドウに表
示される情報は、利用できる全体的なグラフィック呈示
ようしばしば少い。したがって、特定の出力表示装置に
適合するようにグラフィック映像をクリップする必要が
ある。
グラフィック形象は多角形の形で出力表示にしばしば記
述される。通常は、ウィンドウに適合するように多角形
をクリップする方法は、表示すべき多角形の頂点を結ぶ
線を、ウィンドウの境界を描く線と比較して、多角形の
どの部分がウィンドウの境界内に含まれるかを判定する
。多角形の頂点を結ぶ線をコンピュータの境界と比較す
るためにいくつかのアルゴリズムが提供されている。そ
れらのアルゴリズムのうち最も使用されているもの、す
なわち、サザーランド=ホツジマン( 8utherl
 an − HOdgman )アルゴリズムが雑誌、
コミエ二ケーションズ●オブ●ザ●アソシエーション●
7オー●コンピューティング●マシナリイ(C@mmu
nicat1ons  of  the  Assoc
iatlon  for Computlng Mac
hinery)、17巻、1号、1974牟1月号所載
のサザーランド( 8utherlan )とホツジマ
ン(Hodgman)の「リエントラント・ポリゴン●
クリツビング( Re−entrmnt PolFgo
n cttpptng) Jと題する論文に記載されて
いる。サザーランド=ホツジマン・アルゴリズムは、「
入力」多角形の各辺を特定のウィンドウ境界に対してク
リップすることによシ、各ウィンドウ境界に対して新し
い多角形を形成する。これによって「出力」多角形が発
生される。次にその「出力」多角形は次のウィンドウ境
界に対する「入力」多角形となって、新しい「出力」多
角形を生ずる。全てのウィンドウ境界が走査されて、最
後の「出力」多角形がウィンドウに適合するまでこの動
作が繰返見される。
サザーランド=ホツジマンの実現には大容量のメモリを
必要とし、かつそれの目的を這成するためには中央処理
装置の十分に長い処理時間を要する。
サザーツンド=ホツジマン●アルゴリズムは非常に長い
時間と大容量のメモリを必要とするから、別のアルゴリ
ズムが提案されている。1977午に出版されたグロシ
ーデイングス●オプ●シッグラフ( Pr@ceedi
ngs of 81gfraPh )の214〜222
ページ所載の「ヒツドン●t−7エイス.リムーバル.
エージング.ポリゴン●エリア.ソーティング( }I
idden 8urfac@Removaluslng
 Polygon  Area  8ortln!r)
)  と題する論文において、ウエイラー(Welle
r)とアサ−トン(Ath@rton )は、多角形の
隠されている表面と隠されている線を除去するためのア
ルゴリズムを提案している。このアルゴリズムは映像ヲ
、ウィンドウ内の深さオーダーが見出されるまで、多形
状のウィンドウに繰返見し分割される。このアルゴリズ
ムはとくに正確であるが、非常に複雑であるからコンピ
ュータによる処理時間が非常に長く、かつメモリの動作
時間が非常に長い。更に、このアルゴリズムは長方形の
ウィンドウに対しては最適にされず、したがって動作が
比較的遅い.リアン(x,tang)とパースキー(B
arsk7 )ハ、コ電エニケーションズ●オブ◆ザ◆
エーシーエム( Communlcmtlons of
  the ACM)、1983年11月号、2648
68〜877ページ所載の「アン・アナリシス●アンド
●アルゴリズム●7オー●ポリゴン●クリツビング(▲
n Analysls  and Algoritbm
for PolygonCllppimg)Jと題する
論文において、サザーランド*ホツジマン・アルゴリズ
ムの動作速度を約2倍にするアルゴリズムを提案してい
る。サザーランド=ホツジマン・アルゴリズムとは異b
,  リアン=バースキー・アルゴリズムは二次元の長
方形ウィンドウに限定される。リアン=バース中一●ア
ルゴリズムは、無限に延長している多角形の辺である線
と、無限に拡っている全てのクリップ平面との交差を計
算する。それから、多角形の通から離れて存在するが、
クリップされる多角形の中に含着れる必l!がある点(
転換点iたは転換頂点として知られている)を決定する
ために、そのアルゴリズムはそれらの交差を用いる。そ
れらの点はクリップされたウィンドウの4つの隅であっ
て、クリップされた多角形内では呈示すべき多角形の部
分にしばしばなる。リマン=パースキー●アルゴリズム
は、サザーランドヨホツジマン●アルゴリズムよう速い
が、かなシな数の浮動小数点計算を行う必要があるが、
特定のコンビエータ装置が浮動小数点コブロセツサを含
んでいなければ、その計算は困難で、非常κ時間を要す
る。マイクロプロセッサをベースとする多くのコンビエ
ータ装置はそのようなコプロセツサを含まず、それらの
装置による計算は極めて複雑で、時間がかかる。
最後に、サザーランド=コーヘン(Cohen)が、特
定の線分がクリツピングウィンドウの内部に完全に含ま
れ、かつ完全に引かなければならないようなケースと、
特定の線分を引くべきでない特定の領域内のクリツビン
グ・ウィンドウの完全に外側にその線分が存在するよう
なケースとを迅速に決定するととべよってのみ線をクリ
ップする方法を提案している。これについては、ニュー
マン(N@w man ) >よびスプルール(8Pr
oall)着、「プリンシプルス●オプ●インターアク
ティブ●コンビエータ●グラフィックス( Prlnc
1pl@厘of Interactive Compu
ter Grmph1cm)J第2版、マグローヒル(
 McGrav − Hi 1 1 )発行、65〜6
9ページを参照されたい。それらは単純な合格ケースか
よび単純な不合格ケースと呼ばれ、交差計算の全体の実
現を要しない。サザーツンド=コーへ冫・アルゴリズム
はそれらの単純な合格ケースシよび単純な不合格ケース
を決定する迅速な方法を提供するものであって、クリツ
ビング・アルゴリズムの実現速度を大幅に向上させるも
のである。しかし、サザーランド●コーへ冫・7/I/
ゴリズムには多角形をクリップする方法はなく、したが
って、多角形の辺から離れて存在するが、クリップされ
る多角形内に含まれるべき点(転換点)を決定するため
に付加交差は発生しない。
〔発明が解決しようとする課題〕
したがって、本発明の目的はコンピュータの出力表示装
置によるグラフィック物体の表示を加速することである
本発明の別の目的は、多角形の頂点を決定し、コンビエ
ータの出力表示装置にかけるウィンドウに適合させるよ
うにクリップする速度を向上させることである. 〔課題を解決するための手段〕 本発明のそれらの目的シよびその他の目的は、単純な合
格ケースと単純な不合格ケースを決定するためにサザー
ランドツコーヘン●アルゴリズムを多角形に筐ず適用し
、それから、多角形の辺上には存在しないが、クリツピ
ングウィンドウの隅である、多角形に含ませられ、ある
付加点の存在を、多角形の辺が存在する領域から決定す
るために、サザーランドーコーへ冫・アルゴリズムによ
る単純な合格テス}Thよび不合格テストにかいて決定
された情報が利用される。これは、終点の頂点と、特定
のウィンドウに対して発生された種々のルックアップテ
ーブルとを用いるプール演算を用いることによシ、ほと
んどの場合に可視ウィンドウの外部のウィンドウ境界と
の交差を計算する必要なしに非常に簡単に行われる。
表記シよび用語 以下に行う詳細な説明のいくつかの部分は、コンピュー
タメモリ内のデータピットについてのオベレーションの
アルゴリズムと記号表記に関して行っている。それらの
アルゴリズム記述と表現は、データ処理技術にかける専
門家が自己の業績をその分野にかける他の専門家へ最も
効果的に伝えるために用いる手段である。
アルゴリズムというのは、ここでは、かよび一般的に、
希望の結果へ導く、自己矛盾しない一連の過程であると
解される。それらの過程は物理量の物理的取扱いを要す
るものである。通常は、それらの量は、格納、転送、組
合わせ、比較およびその他の処理を行うことができる電
気信号1たは磁気信号の形をとるが、必ずしもそうする
必要はない。主として一般的に使用するという理由から
、それらの信号をビット、値、素子、記号、文字、項、
数等と呼ぶ方が時には便利であることが判明している。
しかし、それらの用[1&よび類似の用語の全て適切な
物理量に関連づけるべきであう、かつそれらの用語はそ
れらの量につけられる便利なレッテルであるにすぎない
ことも憶えておくべきである。
更に、行われる処理は、加算または比較のような用語で
しばしば呼ばれる。それらの処理は人により行われる精
神活動に関連するものである。本発明の部分を形成する
ここで説明する処理のいずれにもおけるほとんどの場合
に、人のそのような能力は必要でないことが望會しい。
操作は機械による操作である。本発明の操作を行うため
に有用な装置には汎用デジタルコンピュータおよヒ他の
類似の装置が含まれる。あらゆる場合に、コンピュータ
を動作させる方法と、処理方法自体の違いを記憶してか
くべきである。本発明は、電気信号その他の(たとえば
、機械的、化学的ノ物理的信号を処理して、他の希望の
物理信号を発生させるために、コンピュータを使用する
方法に関するものである。
本発明はそれらの操作を行う装置にも関するものである
。この装置は求められている目的のためにとくに製作で
き、あるいは、コンピュータに格納サれているコンピュ
ータプログラムによう選択的に起動tたは再構成される
汎用コンピュータを含むことができる。ここで示すアル
ゴリズムは特定のコンピュータその他の装置に本質的に
関連するものではない。とくに、この明細書の記載に従
って書かれたプログラムに各種の汎用機を使用でき、あ
るいは求められている方法を実施するために一層専用化
された装置を製作することが更に便利であることが判明
している。
〔実施例〕
まず、本発明の方法の実現を示す線図が示されている第
1図を参照する。この図は、出力表示装置にサザーラン
ド=コーヘン●アルゴリズムで与えられる様式で呈示す
べき可視ウィンドウを囲む領域の命名を示す。二次元ク
リップウィンドウを示す4本の線が第1図に示されてい
る。2本の平行な自直線がxtnin , Xmaxで
示され、2本の平行な水平線がYmin , Ymmx
で示されている。それら4本の線で囲まれた中央部分に
ある領域は、コンピュータの出力表示装置に表示すべき
ウィンドウの領域である。他の領域はコンピュータ表示
装置の上、下、左および右にある領域である。
サザー2冫ド=コーヘン●アルゴリズムは4つの2進ビ
ットを用いてそれらの各領域をコード化する。最も左側
のビット1はクリップウィンドウの下の点を示し、左か
ら2番目のビット1はウィンドウの左側にある点を示し
、左から3番目のビット1はウィンドウの上の点を示し
、最も右のビット1はウィンドウの右の点を示す。した
がって、ウィンドウ自体はooooとして示され、他の
領域は第1図に示すように示されている。したがって、
たとえば、ウィンドウの左上の領域が0110で示され
ている。
サザーランド←コーヘン●クリップアルゴリズムは、両
方の頂点がそれらの領域のうちの特定の1つにあるかど
うかを検査することによシ、単純に合格tたは不合格に
できる線を効果的に識別するために構成される。たとえ
ば、第3図にはサザ−?ント=コーヘン●アルゴリズム
のオペレーシツンを説明する際に考えることができる何
本かの線が示されている。ウィンドウ領域の中に完全に
含筐れている線10の各端点はoooo領域内にある.
?ザーランド2コーヘン●アルゴリズムにかいて、線分
の2個の各端点が存在する領域を比較する検査が、それ
が、どのような検査決定または他のどのような検査も行
うことなしに、合格にすぺき線の単純なケースであるこ
とを決定する。
同様にして、線1202つの靖点はウィンドウのすぐ上
の領域0010 内にあb、アルゴリズムによD交差点
を計算することを必要としないものとして、頂点が含1
れる領域を比較した後で単純にそれを除去できる。同様
にして、線14の両方の端点がウィンドウの右上の領域
0011の中にあるものとして、線14を単純に除去で
きる。
しかし、クリップされた多角形を完全に形成するために
、第3図に示す他の線を単純に合格または不合格にしな
いようにでき、かつ種々の交差点の決定にサザーツンド
=コーへ冫●アルゴリズムの使用を要する。サザーラン
ド=コーヘン・アルゴリズムを用いてこれをどのように
して行うかを以下に説明する。線16のような線が、決
定されるウィンドウ境界を定める1本の延長線と第lの
交差を行う。たとえば線Ymaxと1s1Bの代数的な
定義を用いて、第3図の交点18を計算できる。
それから線16の1つの部分がすてられる.サザー2冫
ト=コーへ冫−アルゴリズムハ、ウィンドウの上、下、
右または左にある線の一部を、このアルゴリズムの適用
を通じてたどる特定の順序で選択することによ少、捨て
るべき部分をすてる。
線16の場合には、ウィンドウの上にある部分が捨てら
れる。線18の残bの部分を調べて、その部分を単純に
合格にするか、単純に不合格にするかを決定する。いず
れも採用しないとすると、線16と次のウィンドウ境界
Xminの新しい交差を点20において決定する。交差
点20が決定されたとすると、ウィンドウの左側の線部
分がすてられる。この線の、点18と20の間にある部
分を調べて、その部分の合否を単純に決定する。この線
の両方の端点が領域0000内の可視ウィンドウの境界
内にあるから、その部分は単純に合格にできることが明
らかである。これでその特定の線16をクリップするた
めの計算が終る。
線22のような他の線に適用されると、このアルゴリズ
ムによシ行われる決定は一層複雑になる。
たとえば、@22は、ウィンドウの中K完全に含まれる
多角形を完成できる。その場合には(たとえば、第3図
に破線で示されている、線22と10の端点を結ぶ多角
形の場合には)、それらの線とクリップウィンドウの縁
部の交点24と26を上記のように単純なやb方で決定
できる。しかし、クリップウィンドウ内に、クリップウ
ィンドウの左上隅へ延長する多角形の部分を含ませるこ
とによb5!威されるだけである。この点28は、多角
形を形成する線のどれにもなく、ウィンドウの境界に対
するI!22の位置から決定せねばならない.サザーラ
ンド=コーへ冫●アルゴリズムは線をクリップする線で
あるから、そのアルゴリズムを用いてこの点を見つける
方法はない。サザーランド=コーへ冫●アルゴリズムは
、拡張されているクリップウィンドウを定める@Yma
xおよびXminと線22の種々の交差の計算を続け、
線全体を除去するとの結論に達する。
リアン(Limng)=バースキー(B轟rmky)ア
ルゴリズムは、全ての交差を決定し、それらの交差の決
定からクリップ点の値を割自てるやシ方を用いることに
よb1この問題をある程度解決する。リアン=バースキ
ー●アルゴリズムは基本的なサザーランド=ホツジマン
・アルゴリズムよb2倍速いが、全てのクリップウィン
ドウ境界に対して交差を計算した後で、転換点の割当て
を行うことができる。そして、浮動小数点計算による交
差を計算を行うことを必要とする。マイクロプロセッサ
をベースとする多くのコンピエータ装置においては、そ
の計算は極めて遅いからグラフィック出力表示装置での
映像表示を損う。
本発明は、無限に延びているウィンドウ境界との交差を
、ほとんどの場合に計算する必要なしに、多角形の辺t
−離れている点の決定を大幅に改良するものである。本
発明は次のように動作する。まず初めに、サザーランド
=コーへ冫・アルゴリズムによb割蟲てられている各領
域コードが、可視ウィンドウの対角線上の隅にある2つ
の1ビットと、可携ウィンドウの右、左、上tたは下に
ある1つの1ビットを含むことをg識する.可視多角形
の転換点を決定するためにこの方法はこの認識を用いる
クリップすべき多角形の辺を形成する最初の線分に対し
て、単純な合格条件iたは単純な不合格条件が存在する
かを判定するために、サザーランドーコーへ冫・アルゴ
リズムが最初に適用される。
その条件が存在しないとすると、サザー2ンド=コーへ
冫●アルゴリズムは可視ウィンドウの餘部と辺の交差を
判定する。それらが起らないとするト、サザー27ドー
コーヘン●アルゴリズムによ)供給される、頂点が存在
する領域についての情報が、その線分の始点と終点を基
にして種類に分類される。各逮は始点から次の終点まで
と考えられる。その終点から次の辺が考えられる。線の
端点が、4ビットコード指示が2個の1ビットを含んで
いる領域(すなわち、ウィンドウの隅の区域)に存在す
るものとすると、その領域に接触する可視ウィンドウの
ウィンドウの隅力瓢クリップすべき多角形中の付加点、
すなわち転換点、として可視多角形Kll当てられる。
第1図からわかるように、これは、多角形の辺の靖点が
、可視ウィンドウの対角線上の隅における区域0110
、0011,1001,iたは1100内にあるものと
すると、この最初(いわゆる一般的な規則)が適用畜れ
ることを意味する。そして、それらの各領域に最も近い
ウィンドウの隅がクリップされる多角形に対する付加点
として割当てられる。
この一般的な規則は、ウィンドウの真上、真下、左およ
び右の領域の中に端点が存在する場合はカバーし々い。
その一般的な規則は、斜めの領域K終る線に対する全て
の転換点もカバーしない。この瑠由から、始点と終点が
含まれる領域に依存して線分が分類される。ウィンドウ
の上、下、左シよび右の領域であって、その領域に対す
るコードが1側の1ビットを有するような領域に始点と
終点が含噴れるものとすると、辺は1−1ピット線と命
名されて、1つのやう万で処理される。他方、始点と終
点がコード化された領域に含まれ、それらの領域の1つ
が1つの1ビットを有し、残)が−Jの1ビット(いわ
ゆる1−2ビット線)を有するものとすると、その線は
異なるヤシ方で取扱われる。最後に、一対の1ビット(
いわゆる2一2ビット線)を含むコードを虜する領域に
始点と終点が含筐れる線が第3のやシ方で取扱われる。
1−1ビット線の場合には、両方の頂点が同じ領域内に
あるものとすると、転換点を割当てる必要はない。これ
に対して線はサザーランドーコーヘン●アルゴリズムの
最初のステップにかいて単純な不合格な場合として既に
単純に除去されることにiる.しかし、1−1ビット通
の両方の頂点が種々の領域内にあるものとすると、2つ
のコードが論珊オア操作で組合わされる。そのオア操作
の結果は一般的な規則の適用において用いられる。
たとえば、第3図に示す113GのようなIIが区域0
100 で始って区域0010 に終るものとすると、
論理オア操作によって2進数0110が与えられる。そ
の2進数は左上の領域に対するコードと同じ数である。
この数は、一般的な規則を用いて、クリップされるウィ
ンドウ内に記述すべき多角形内に含ませるべき転換点と
して、可視ウィンドウの左上隅を割当てることを求める
1−2ビット指定内に入る頂点を有する線の場合には、
4つの可能性が起る。第1に、線の端点が1ビット領域
内にあシ、領域の2つのコードの論理アンド操作の結果
が零でないとすると、転換点は発生されない。たとえば
、0110区域から0010 区域へ進む線は転換点を
発生する必要はない。というのは、一般的な規則の下で
、左上隅の領域が01lO区域内の頂点κ終るMKよb
転換点として既に指定されているからである。ある点が
クリップされた多角形内にあるものと指定されると、ク
リップされるウィンドウ内に存在する多角形を完全に記
述するためにはそのように再び指定する必要はない。
しかし、線の端点が1ビット領域内にあう、頂点の領域
を指定するコードのア/ド操作によって零結来が得られ
る場合、たとえば区域0110からooottで延長す
る線32(第4図)のような場合には、ウィンドウの右
上隅に対応する転換点40が発生される。本発明にかい
ては指定はルックアップテーブルによb行われる。
線が2ビット領域に終シ、2つのコードのアンド操作に
よシ零となる結果が生じないものとすると、そのケース
は一般的な規則Kよう取扱われて、その線の端点に最も
近いウィンドウの隅を転換点として発生する。
他方、線が2ビット領域に終って、2つのコードのアン
ド操作によシ零となる結果が生ずる場合、たとえば、区
域0001で始って区域0110に終る線34(第5図
)の場合には、2つの転換点を発生せねばならない。す
なわち、1つの転換点42をウィンドウの左上隅で一般
的な規則によ)発生し、他の1つの点44をウィンドウ
の右上隅で発生する。このW!.2の転換点44は本発
明のこの実施例ではルックアップテーブルによっても取
扱われる。
2−2ビットケースとして示されている辺の場合には、
3つの状況が起る。まず、始点と終点が同じ領域にある
時は、サザーランド=コーヘン●アルゴリズムによシ単
純な合格tたは不合格のケースとして取扱われるから、
転換点は発生する必要はない。もし、単純なケースでは
危くて、線の端点に対する2つのコード領域のアンド操
作の結果が零でないとすると、通の端点に一般的な規則
が適用される。それらの週は、たとえば、区域0011
から区域1001へ、および区域1001から区域1l
00へ移動する線のことがある。
しかし、線の端点が存在する2つの領域に対するコード
のアンド操作によって零が生じたとすると(たとえば、
第6図において線36と38が区域0011 から反対
側の対角線の隅へ移動する)、その線は可視ウィンドウ
の1つの辺筐たは他の辺に含まれることがある。それで
あいまいな状況が生ずる。この状況においては、線(第
6図の36tたは38)が、いわゆる中間点(第6図で
、たとえば1138上の点39)を決定することによシ
、2本OIIに分割される。本発明のこの実施例は、そ
の点が2個の原点のうちの1つと同じ領域にあるかどう
かを決定する。もしそうだとすると、対応する原点が中
間点で置換され、新しい中間点が評価される。端点が含
まれる領域とは異なる領域に中間点が含まれるまでその
操作は繰返見される。
中間点が端点が含まれている領域の1つにないものとす
ると、本発明のこの実施例は、1−1ビットの場合また
は1−2ビットの場合について先に述べた規則の1つを
適用することによb5適切な転換点を決定する。
本発明に従ってルックアップテーブルを構或することが
比較的聞単なやり方で容易に行えることが判明している
。たとえば、第4図の転換点40を決定するのに必要な
コード番号0110 を得るため、線分32が始る区域
0110のコードが、非プール代数計算κおいて、コー
ド0001  (これは端点を示す)によシ索引される
ルックアップテーブルの内容に単に加えられる。したが
って、初めの頂点にシけるコード0110  (6の2
進表現)にマイナス3が加えられるとすると、第4図の
領域との比較によう、ウィンドウの左上隅にシける転換
点が一般的な規則によシ示されることがわかるであろう
。したがって、2進で示されているマイナス3がルック
アップテーブルの索引位置0001 で得られ、それか
ら一般的な規則が適用される。同様にして、他の隅、i
たは1ビット領域tたは2ピット領域で種々に始b,ま
たは終る線のための転換点を実現するために、ルックア
ップテーブルは数プラス6tたはマイナス6、あるいは
プラス3を保持できる。
コード区域1100で始シ、同じ区域0001に同様に
して終る線分は、コード区域1001内の転換点に達す
るために、ルックアップテーブルからのマイナス3を用
いる。区域1100  tたは1001  で始って、
コード区域0010で終る線分が索引され、マイナス6
を加えて区域0110または0011内の転換点に達す
る。コード区域ooti  tたは0110 で始って
コード区域1100で終る線分は検索され、プラス6を
加えて区域1100 tたは1001内の転換点に達す
る。また、コード区域0011  tたは1001で始
って、区域Ol10に終る線分が索引され、プラス3を
加えて区域0110 tたは1100内の転換点に達す
る。
本発IMのためのルックアップテーブルの構成において
は、頂点が2ピット領域に終る端点によシ発生された各
2ビットコード、1たはそのような領域を指定するコー
ドを提供するプールオア操作へ第1のルックアップテー
ブルが提供される。ルックアップテーブルはそれらの各
転換点(ウィンドウの隅)に対してX値とY値を発生す
る。それらの値はクリップされた多角形へ加えられてそ
の多角形を完全に構戒する。
本発明の実施において提供される第2のルックアップテ
ーブルは、頂点を終らせるためのコードがアドレスへオ
フセットとして供給され、ウィンドウの特定の隅に対す
る値に開始頂点を達せさせるための他のコードがそのル
ックアップテーブルによう供給される。この値は(番号
の符号に応じて)コードの1つから差し引かれ、tたは
その1つに加えられ、転換点を供給するために結果のア
ドレスの下に第1のルックアップテーブルが調べられる
。!た、クリップされた多角形に加える付加点を指示す
るために、この転換点がX@>よびY値として供給され
る。
本発明を実施するための一般的なアルゴリズムは次の通
シである。
Calculate the cod@of the 
first point of the polygo
n.for all aubaequent poin
ts:Calculate th@code of t
he point,CIip the line ac
cording to the two codes,
lf th@line is outside th@
cliPPing region:T@st for 
1−1, l−2 and 2−2 caaes.●n
dif Test for the gen@ral cmse
.Set @first point”=”curr@
nt point’endfor (以後の全ての点に対して、 多角形の第1の点のコードを計算する:点のコードを計
算する、 線がクリップ領域の外ならば、 2つのコードに従って線をクリップする=1−1、1−
2、2−2コードについてテストする。
endlf 一般的なケースをテストする。
「第1の点」を「現在の点」にセットする。
endfor  ) このアルゴリズムのCMHによる特定の実現を次節に示
す。この実現には、下記の2つの機能で構成されたナザ
ーランド=コーヘン・アルゴリズムが含まれていない。
CpJve−clipO performa a si
mple coding of the first 
pointof the polygon. Thla
 function r@turns SEGM if
 the point imlnsld@ th@ c
l1pp1ng  region,NOSKGM  i
f  the  point  lm  outsid
&Cp−drsv−cl1p ) perforam 
the clipping of a line co
ded in the一structures Cp;
ove and Cp−drsr vmich reg
pectiver representth@gbrt
 and @nd point of one pol
ygon edgs Cp−drtw−cl1ppro
vid@s th@following inform
ation:− Th@returned statu
a N)S加M, SEGH fmGM l CLIP
 , whichrepr@s@nts the vi
sibility characterigtlc o
f the @dge,− MLrsv* and L
drm. which are ths comput
ed codes of the startand 
@ad point of th@edges res
pectively,− Cp−move and C
p−drsvcontaln the clipped
 line coordinates atth@en
d of the algoritlp.typed@
f mtruct ( float x; floaty: l  Upaint: typedef gtruct ( Upoint point: int   cods: )  Ppolnt: /” xcoordtnate (couldbe t
nt) ”//” y coordinate (co
uld be Int)ン/’ User paint
γ /’ The paint’s coordinate
sン/” The cod@comPut@d for
 this pointγ/” Internal r
epresentation ”/#d@ftna B
MXTEST      1Nefine NO8EG
M O   /”The line is rejec
ted ”/Mefine  SEGM    1  
   /●The  line  is visibl
e (even pirtlally) γ Nefin@CLIP  2  /@Thelineh
asbe*n”clipped”(left)ン#de
flne  TmBIT8 0xlG)/” A fi
g  to  indicate a bpo bit
s  code  ン均噛tnt  Ql−mov●: int  [code: /” The  dart  point  of  
the  line  ”/Ppoint Cp−dr
一 1ni  D−code: /” The end point of the l
ineγPpoint  C−*xehmnge:/”
  These  are  two  1ook−u
p  tables  ”//” used in f
inding the turning pointン
/”  in  the  elm@  l−2.  
They  should  be  ”//” I!
Iodifl@d with th@region’s
 codes.  ンint  Thc[L6,)−(
0,−3,−6.1,3,0,1,0,6,1,0,0
,1,0,0,01:lnt Vpt(16)=(−1
,−1,−1.2,−1,−1,3,−1,−1,1,
−1,−1.0,−1,−1,−1):/” Tcc 
is us@d to compute a corr
ectン/” offset, while vpt 
gives an index ”//’ In th
@viewport array+ for theン
/” turninlr coordinates ン
Upoint Viewport[:4,1:/” V
lswport coor出nates IL1r,u
r.ulン機能cp *paco一codeO は与え
られた点に関連するコードを戻す。戻されたコードは1
つの値にてき、または1つの値と、2ビットコードを示
す7クッグとの間の連合にできる。
CP−space−code(paint−to−co
de)Upoint      ’polnt−t偏c
ode:{ if (paint−to−code−+v < Lo
wer−1eft.x) (i f(paint−to
−COdr>7 <tllpper−right.y)
 return( 6 l TWOBIT8 ) :i
f(paint−to−code−)y <Lower
−1eft.y)return(121’ImBITE
1):return (4) : } kt (po1nt−to−code−M >Upp@
r−right−x) {if(paint−to−c
od@−>y<Upper right.y)retu
rn(3  1TEBIT8):if(point−t
o−code−)y<LtN@r left.7) r
eturn (’j l T%’llOBITS) :
return (1) : 》 if (p61nt−to−code−)5” UPp
er−rlght.y) return (1) :i
f (po1nt−to−cods−)7 < Low
er−1eft.y) return (8) :re
turn (0): 》 CP2D polygon−clip( )機能は頂点
のアレイを入力として受け、長方形のビューポートに対
してベクトルをクリップする。多角形構造を保ち、正し
い視覚化を確実に行うために必要i場合には転換点が発
生される。この機能は結果としての多角形を点の出力ア
レイで発生する。
Qs−2DJolygon−cl ip(nin,In
,nout ,outl量at      nin: IJpotnt       ’in:int    
  ”nout: Upolnt       @out:{ register lnt   L L k:r@gi
ster Ppoint ”pt−CP−Eaove 
    = &CP movesreg1star P
point ”pLQ)−dry     −▲Cp−
drlw:/I ”  Teaiporary data used i
n the case of 2−2 bitm.功め
int      cp−t−m胛●;Upoint 
     Cp−t−drw:Upoint     
 Op−AJOlnt:int      A−eod
e: ” Be sur@to close the pol
ygon.ン k=nin+1: tncnlrLJ− in(0:) :” Coa+p
ute the fird point’ statu
s.@If visible, then store
 the first po1nt 1n the o
utput arr?.ン if (Cp−move−clip(in) l  (
out (”nout〕= pLcpJov*−)po
int:◆nout +− 1: } /I ” Next polygona points...
%% bulld a vector from th
e ”movs’” point to the @d
r〆point.” CIip the line w
ith a standard 2D line cl
ipping method.′h/ for (1 − t: l<k; l++)l (j
= Cp−drsv−cl lpT in + i )
 :/I If the line ia vis%ble, t
hen store the computed po
int(a), mjump to tho gen●
ral case.ン Cp−move. Code − D eode:tx
(j a IIEGM)  ( lfcj &CLIPl  { out(’nout) − pt−Cp−asove−
)point:’nout +−II1: out( ”nout) − pLCp−drsr−s
Point:1肋ut += 1 : Here the 11ne has been re
jected−.. See mat we can 
dolン J else ( ◆Beg1n with * 2 bita end 
paint.ン 1f (D−codI& TWoBIT8)  (if
 (1(M− code & Dcode>) (/I ” If the start point ia a
lso a 2 bitg... Need some
 more to” make a d@eis1on
+ン if ([code& TWOBIT8 )  (j−
1; Cp−t−OIovsrwpt−Cp;ova→やoi
nt:Cp−t−drvpt−qp−drar>Pot
nt:値1l●り){ Q)−AJoi nt −x = (Cp−t;owe
 .x+ Ql− t−drar.x) /2 . :
Cp−AJoint−y− (Cp−t;6y@.y+
 Q)−t−dry.y) /2 . .”jcOd@
 = Cp−1plc@jod@(”Cp−j%1ni
’ :if (jcode & TWOBITS)  
(if (A−code =Jcode) Cp−t−
drsv”CP.Apoint:else if(^−
codemM−code ) Cp−tμv@= Cp
−A−pot nt :●is●j−0; }−18◆ { if (jcodI& D code)jcod*mJ
code+Tcc[code龜(mf) : el s@A−code− Kcod●+Tcc(I)
,code &αd〕; j−0: } } }●lee ( /I ” ’rh1s is for a 1 bit st
art po1nt <2 bits end poi
nt).ン A−code=Dcode + TccO(code)
 :} out ( ”nout) = vi 一如rt ( 
vpt (kcode a art )) :”mut
+墳l: 》 lal謬e{ t ” Here we have a 1 bit en
d pointーif (Jcoda & TWOBI
T8)  (1 f t ! (yLcode h D
−code ) ) I),code=yLccde 
+%c■一code):} else { Dcode l = yLcode: lf (Tcc(D−code) = 1) Dcod
e I =T%vOBIT8:》 } } /@ ” The genera1 rule.−ン if (Dcode & TWOBITS)  (ou
t( ’nout) −Vietvport ( Vp
t ([Lcode轟叫〕〕;”nout +=1: } ” Copy the current point 
a@the next starting point
.ン pt−Cpmove−:b Point −  ”( 
in+  1 )  :} 1f (”nout) ( out( ”nout〕− out [0) :”no
ut += 1: 》 以上説明したクリツピングアルゴリズムの実現をいくつ
かのワークステーションに対してプログラムし、いくつ
かの図形について、サザーランド=ホツジマン●アルゴ
リズムト、リアン讃パースキー●アルゴリズムによる実
現と速度を比較した。
あらゆる場合に、本発明のアルゴリズムは、類似の多角
形図形を比較した時に、それら2つのアルゴリズムよシ
十分に速〈動作した。本発明のアルゴリズムは浮動小数
点演算と整数演算の両方を用いて演算できる。整数演算
を用いる時は、本発明は上記2つのアルゴリズムよシ十
分に速く動作する。
【図面の簡単な説明】 第1図はサザーランド=コーへ冫●アルゴリズムで用い
られる領域コードを示す線図、第2図は本発明で用いる
転換点の意味を示す線図、第3図は本発明の説明に用い
られるウィンドウのクリップに関する線の種々の全般的
な形を示し、第4図は本発明の実施にかいて特定のクリ
ップされたウィンドウに関する多角形の臂定の辺に対し
て発生すぺき峙定の転換点を示し、第5図は本発明の実
施において特定のクリップウィンドウにおける多角形の
特定の通に関して発生された別の転換点セットを示し、
第6図は本発明の実施+’l−いて取扱わねばならない
あいまいな条件を示す。 特許出願人  サン●マイクロシステムズ・インコーポ
レーテツド 代瑠人山川政樹 X−1m xffvLx XIFLIル ×附M X肌1へ X凰賦 X^1PL X−収

Claims (1)

    【特許請求の範囲】
  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
US364,697 1989-06-09
US07/364,697 US5079719A (en) 1989-06-09 1989-06-09 Method and apparatus for clipping polygons

Publications (2)

Publication Number Publication Date
JPH0324676A true JPH0324676A (ja) 1991-02-01
JP3066599B2 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
US6137497A (en) * 1997-05-30 2000-10-24 Hewlett-Packard Company Post transformation clipping in a geometry accelerator
US5877773A (en) * 1997-05-30 1999-03-02 Hewlett-Packard Company Multi-pass 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 直線描画方法、直線描画プログラム及び直線描画装置
CA2729234C (en) 2008-07-03 2014-01-07 Research In Motion Limited Method and system for fast clipping of line segments
EP2297692A4 (en) * 2008-07-03 2015-04-15 Blackberry Ltd METHOD AND SYSTEM FOR QUICKLY CLIPING POLYGONES

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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH0324676A (ja) コンピュータ出力表示装置で表示するための多角形をクリップする方法
Glassner Graphics gems
US5613052A (en) Method and apparatus for clipping and determining color factors for polygons
EP0775982B1 (en) System and method for merging pixel fragments based on depth range values
EP0356103B1 (en) Scan-conversion process and processor
US6333744B1 (en) Graphics pipeline including combiner stages
US7006101B1 (en) Graphics API with branching capabilities
US6292192B1 (en) System and method for the direct rendering of curve bounded objects
US8928668B2 (en) Method and apparatus for rendering a stroked curve for display in a graphics processing system
JP2007193835A (ja) 単一の半導体プラットフォームで支持される変換、ライティング、ラスター化システム
US9460552B2 (en) Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US5003497A (en) Method for three-dimensional clip checking for computer graphics
US5841442A (en) Method for computing parameters used in a non-homogeneous second order perspective texture mapping process using interpolation
US5347619A (en) Nonconvex polygon identifier
US7117238B1 (en) Method and system for performing pipelined reciprocal and reciprocal square root operations
US4930091A (en) Triangle classification setup method and apparatus for 3-D graphics display system
US20190236820A1 (en) Method for rendering resolution-independent shapes directly from outline control points
US5463723A (en) Method and apparatus for filling polygons
AU618128B2 (en) Method and apparatus for decomposing a quadrilateral figure for display and manipulation by a computer system
US10269168B2 (en) Graphics processing systems
US5412765A (en) Method for vector field visualization using time varying texture maps
US5563990A (en) Method and apparatus for processing a pick event
US20050231533A1 (en) Apparatus and method for performing divide by w operations in a graphics system
US6930686B1 (en) Method and apparatus for drawing thick graphic primitives
US6515661B1 (en) Anti-aliasing buffer