JPH0554149A - エツジリスト作成装置 - Google Patents

エツジリスト作成装置

Info

Publication number
JPH0554149A
JPH0554149A JP3212258A JP21225891A JPH0554149A JP H0554149 A JPH0554149 A JP H0554149A JP 3212258 A JP3212258 A JP 3212258A JP 21225891 A JP21225891 A JP 21225891A JP H0554149 A JPH0554149 A JP H0554149A
Authority
JP
Japan
Prior art keywords
coordinate
edge list
point
polygon
memory
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
JP3212258A
Other languages
English (en)
Other versions
JP2712912B2 (ja
Inventor
Kazuhiro Kubota
和弘 窪田
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP3212258A priority Critical patent/JP2712912B2/ja
Priority to US07/933,941 priority patent/US5353394A/en
Publication of JPH0554149A publication Critical patent/JPH0554149A/ja
Application granted granted Critical
Publication of JP2712912B2 publication Critical patent/JP2712912B2/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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Abstract

(57)【要約】 【目的】 ただ1個の線分発生器(DDA)と少ないワ
ークメモリ容量を使用して、XY座標平面上に定義され
た多角形の座標頂点列から、内部領域に属する整数座標
点を高速に算出できるエッジリスト生成装置を実現す
る。 【構成】 処理装置1はXY座標頂点列を求めたメモリ
3に格納し、線分発生器7は、メモリ3に格納された多
角形の頂点列をもとに、多角形の各辺と水平直線との交
点(エッジリスト要素)を、多角形の辺を一筆書きでな
ぞるような順序で、逐次生成する。処理装置1は逐次生
成したエッジリスト要素をメモリ5に格納する過程にお
いて、直前に生成したY座標がKなるエッジリスト要素
格納位置から、Y座標がKなるエッジリスト要素数だけ
離れた格納位置に、次に生成したエッジリスト要素を格
納する。 【効果】 すべてのエッジリスト要素を生成した段階
で、エッジリストの全要素に対してY座標ソート処理が
不要になる。またワークメモリの連続した領域にエッジ
リストを格納できるため、最小のメモリ容量で済む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、デジタル画像処理装置
に利用され、特に、ビットマップ表示機構を備えた装置
における多角形描画におけるエッジリスト作成装置に関
する。
【0002】
【従来の技術】従来の技術について図を参照しながら説
明する。
【0003】グラフィックスディスプレイなど二次元X
Y平面上に表された任意閉領域をある一定のパターンで
塗りつぶす要求が多い。最も顕著な応用は、多角形の頂
点の座標列が与えられており、多角形内部を塗りつぶす
要求である。形状にある種の制限がある多角形であれば
塗りつぶすのは容易である。ここでいうある種の制限と
は、例えば、図16(a)のような凸多角形である。一
般に多角形といえば、図16(a)および(b)のよう
な、ただ一つの閉領域を形成する場合を指すが、ここで
の議論は、図12(a)および(b)のように、辺が交
差するもの、すなわち、二つ以上の閉領域を形成するも
のも対象とする。図16(a)および(b)の内部領域
判定は、比較的容易であるが、図16(c)のような多
角形を塗りつぶすためには、ある座標点(X#、Y#)
が、多角形の内部領域に属するかどうかの判定条件を導
入する必要がある。現在、導入されている条件として一
般的なものは「イーブンオッドルール」と「ノンゼロワ
インディングルール」である。この二つのルールを次に
説明する。
【0004】mは3以上の自然数、nはm以下の自然数
とする。座標頂点列{Xn 、Yn }の隣接した2要素、
(Xn 、Yn )を始点、(Xn+1 、Yn+1 )を終点とす
るm本の線分を辺として形成されるm多角形を定義す
る。ここで、Xm+1 =X1 、Ym+1 =Y1 である。い
ま、座標点(X#、Y#)を始点、無限遠方にある座標
点を終点とする基準直線と、前記(Xn 、Yn )を始
点、(Xn+1 、Yn+1 )を終点とする辺との外積値の正
負符号成分をWn としたときに、nに関するWn の総和
W(W=ΣWn )を、前記座標点(X#、Y#)に関す
る巻数(Winding number)とし、巻数に
よって座標点(X#、Y#)が前記m多角形の内部領域
に属するか否かの判定をする方法である。
【0005】通常は、「巻数が奇数である座標点は内部
領域とみなす方法」と、「巻数が0でない座標点は内部
領域とみなす方法」の2種類のどちらかを選択する。前
者をイーブンオッドルール、後者をノンゼロワインディ
ングルールと称する。このルールを直感的に理解するた
めに、図17および図18を用いて説明する。X座標の
定義域をXMIN ≦Xとする。座標点(X#、Y#)の巻
数を求めるには、座標点(X#、Y#)と(XMIN 、Y
#)を端点とする基準線分を考える。このように水平線
分(X軸に平行な直線)を基準直線として選択すると、
外積値の正負符号成分Wn は、簡単に求めることができ
る。すなわち、この線分を−Y方向から+Y方向へ横切
る辺がある場合にはWn =+1とし、+Y方向から−Y
方向へ横切る辺がある場合にはWn =−1とする。従っ
て、座標点(X#、Y#)の巻数Wは、(XMIN 、Y
#)から(X#、Y#)までのWn を総和すれば算出で
きる。この様子を図17に示す。また、イーブンオッド
ルールとノンゼロワインディングルールの差を最も顕著
に示す多角形の例を図18に示す。図18のように座標
頂点列{Xn 、Yn }(n=1、2、3、4、5)が与
えられたときに、ノンゼロワインディングルールでは領
域1から領域6までのすべての領域を塗りつぶす。イー
ブンオッドルールでは領域1から領域5までを塗りつぶ
し、領域6は塗りつぶさない。
【0006】以上、「イーブンオッドルール」と「ノン
ゼロワインディングルール」の説明をした。
【0007】次に、巻数を算出する具体的な方法につい
て説明する。
【0008】巻数は、辺と基準線分の交点座標を逐一算
出すれば求めることができるが、この交点算出処理は除
算を必要とするので、ソフトウェアで処理すると低速に
なる。また高速に求めるには高価なハードウェアを必要
とする。そこで従来より、空間コヒーレンシ(隣接した
座標点の巻数は等しい場合が多い性質)、あるいは、ス
キャンラインコヒーレンシ{座標点(X#、Y#)の巻
数がWである場合には、座標点(X#+1、Y#)、
(X#−1、Y#)の巻数もWである場合が多い性質}
を利用して、種々の方法が考案されてきた。ここでは本
発明の原形となったオーダードエッジリストアルゴリズ
ムについて、図7、図8、図9(a)および(b)、図
10(a)および(b)、ならびに図11を用いて説明
する。
【0009】図10(a)は、三つの座標点(4、
0)、(7、3)、(5、6)を頂点とする三角形であ
る。この三角形の3辺は実数座標平面に描かれた理想直
線である。整数座標平面上にこの三角形を写像すると、
図11のような、3本の近似直線で形成される三角形と
なる。近似直線を点の集合体とみなしたときの各点の座
標値を、安価なハードウェアを使用して高速に算出する
手法としてデジタル微分解析器{以下、DDA(Dig
ital Differencial Analze
r)という。}がある。DDAの手法を利用すれば、多
角形の辺(近似線分)を点の集合体とみなした場合の各
点(以下、微小点という)の整数座標を高速に生成する
ことができる。この微小点は、水平直線と辺との交点で
ある。例えば、図10(b)における微小点座標(5、
4)は、(4、0)、(5、6)を端点とする近似線分
と、Y=4なる水平直線との交点座標である。すなわ
ち、DDAを使用して微小点の座標を算出することは、
水平直線との交点を求めることと同値である。
【0010】図10(b)の三角形の辺をなす、3本の
近似線分と、Y=K(K=0、1、2、3、4、5、
6)なる水平直線との交点座標(図10(b)の黒丸の
座標点)を算出し、X座標値およびY座標値でソートし
たものが、図8に示したエッジリストである。ただし、
各交点要素には、「+」または「−」の属性情報を付加
してある。これは、辺が水平直線に対して、下から上に
向かって交差しているならば「+」、上から下に向かっ
て交差しているならば「−」とする属性である。この属
性情報は、巻数算出の際の増減値として使用する。通常
は、一つの水平直線に属するエッジリストは偶数個の要
素からなる。奇数個の要素からなる場合には、「無限遠
方の座標点の巻数が零である」事実に矛盾するからであ
る。
【0011】ところが、Y座標値に対して極大となる頂
点(5、6)が属する、Y=6なる水平直線に関するエ
ッジリストは奇数個の要素からなる。同様に、Y座標値
に対して極小となる頂点(4、0)が属する、Y=0な
る水平直線に関するエッジリストも奇数個の要素からな
る。従って、一つの極大点、または、一つの微小点につ
いては、2個のエッジ要素が存在するように処理する必
要がある。この極大極小処理を施したエッジリストを図
9(a)に示す。極大点、極小点に関しては、同値の要
素を2個持つように修正している。また、別の極大極小
処理もある。例えば、一つの極大点については、2個の
エッジ要素が存在し、一つの極小点については、0個の
エッジ要素が存在するように処理してもよい。この極大
極小処理を施したエッジリストを図9(b)に示す。
【0012】極大極小処理は、DDAによる近似線分発
生の過程で解決できる。以下に図9(a)のエッジリス
トを生成する場合を示す。一般的には、多角形の辺を一
筆書きでなぞるように近似直線を発生する。第10
(b)の三角形を例にとると、頂点(5、6)から頂点
(7、3)への近似直線、頂点(7、3)から頂点
(4、0)への近似直線、頂点(4、0)から頂点
(5、6)への近似直線の順に発生する。従って、「現
在DDAが発生している近似線分の終了端点が、極大点
または極小点である」ならば、終了端点まで線分発生
し、「現在DDAが発生している近似線分の終了端点
が、極大点ではなく、かつ極小点でもない」ならば、終
了端点の一つ手前の点まで線分を発生させる。このよう
にすれば、図9(a)のようなエッジリストが作成され
る。
【0013】最後に、図9(a)または図9(b)のエ
ッジリストを使用して多角形の内部領域を判定する。例
えば、Y=2の水平直線に着目すると、(4、2、+)
(6、2、−)の二つの要素が存在する。これは、X=
4なる座標点で巻数が1増え、(6、2)なる座標点で
巻数が1減ることを意味している。交点(4、2)およ
び(6、2)の巻数は、境界判別条件として一定の規則
を導入すればよい。ここでは、「交点(X#、Y#)が
存在するときには、(X#−0.5、Y#)なる位置で
巻数が変化する」という境界判別条件を導入する。従っ
て、4≦X<6の区間は巻数が1、X<4または6≦X
の区間は巻数が0となる。
【0014】図9(a)に基づいて巻数算出をし、三角
形の内部を塗りつぶすと図11のようになる。巻数が1
の座標点のみ塗りつぶしている。
【0015】
【発明が解決しようとする課題】前述した従来のオーダ
ードエッジリストアルゴリズムでは、多角形の頂点数が
数百にもおよぶときには、X座標値、Y座標値によるソ
ートのために膨大な時間を必要とする。元来、メモリ空
間は、ただ一つのパラメータであるアドレスによって配
置される一次元配列である。一方、エッジリストは、X
座標値、Y座標値によって配置される二次元配列であ
る。一次元空間内に、二次元配列データを格納する場合
において、ソートを高速に実行するための二種類の方法
を説明する。
【0016】まず、メモリ空間を二次元空間として再配
列する方法について考える。巻数判定の対象となる座標
点数を少しでも減らすために、多角形を完全に包み込む
最小の外接矩形(以下、外接矩形という。)を抽出し、
外接矩形の内部領域に属する座標点の巻数のみを求め
る。図15(a)および(b)に抽出した外接矩形の例
を示す。外接矩形の抽出は、処理対象となるデータを減
らすための有効な手段である。外接矩形の内部領域に属
する座標点一つに対し、その座標点の巻数を格納する領
域をメモリ内に割り付ける。すなわち、エッジリスト格
納領域として割りつけるメモリ容量は外接矩形の大きさ
により一意に決定してしまう。図15(b)のような多
角形ではメモリの使用効率が比較的高いが、図15
(a)のような多角形では使用効率が極めて低い。エッ
ジリスト格納領域として、実際に割り付けられたメモリ
容量の1%しか使用していないというメモリ使用効率の
悪い状況に陥る。
【0017】次に、近似線分を形成している各微小点の
座標値を、Y座標値が大きい方から小さい方に向かって
発生させる方法もある。図10(b)の例でいえば、頂
点(7、3)から頂点(4、0)への近似直線と、頂点
(7、3)から頂点(5、6)への近似直線を両方を一
度に発生させれば、Y座標値が大きいエッジリスト要素
から順に生成される。しかし、この方法では、多角形の
形状によってDDAを何個搭載しなければならないか決
まる。極端にいえば、多角形の辺の数だけDDAが必要
になるので現実的な方法ではない。別の方法として、一
つのDDAを使用して2本以上の近似直線を同時に発生
することもできる。しかし、この場合においても、DD
Aが直線を発生するためのパラメータを、DDAとメモ
リとの間でプッシュ、ポップしなければならない。この
オーバーヘッドを考えるとこの方法も現実的でない。
【0018】以上二つの方法を紹介したが、前者ではメ
モリ容量、後者ではDDAの個数という問題が顕著化す
る。
【0019】すなわち、従来のエッジリスト格納システ
ムでは、多角形の頂点数が大きくなると、エッジリスト
を高速で作成できなくなる欠点がある。
【0020】本発明の目的は、前記の欠点を除去するこ
とにより、一つのDDAと少ないワークメモリ容量を使
用して、XY座標平面上に定義された多角形の座標頂点
列から、内部領域に属する整数座標点を高速に算出し、
エッジリストを生成できるエッジリスト格納システムを
提供することにある。
【0021】
【課題を解決するための手段】本発明は、mは3以上の
自然数、nはm以下の自然数、Xm+1 =X1 、Ym+1
1 とし、二次元XY平面上の座標頂点列{Xn
n }の隣接した2要素、(Xn 、Yn )を始点、(X
n+1 、Yn+1 )を終点とするm本の線分を辺として形成
されるm多角形と、任意の座標点(X#、Y#)が与え
られたときに、前記座標点(X#、Y#)を始点、無限
遠方にある座標点を終点とする基準直線と、前記
(Xn 、Yn )を始点、(Xn+1 、Yn+1 )を終点とす
る辺との外積値の正負符号成分をWn としたときに、n
に関するWn の総和W(W=ΣWn )を、前記座標点
(X#、Y#)に関する巻数とし、巻数値によって座標
点(X#、Y#)が前記m多角形の内部領域に属するか
否かの判定を行う手段を含むエッジリスト作成装置にお
いて、前記座標頂点列{Xn 、Yn }の要素のなかで、
最大のY座標値をYMAX 、最小のY座標値をYMIN 、K
をYMIN 以上YMAX 以下の整数としたときに、「前記多
角形の辺とY=Kとなる水平直線との交点数」であるf
(K)をあらかじめ算出する第一の手段と、「前記多角
形の辺とY=Kなる水平直線との交点座標」と「その交
点が持つWn 」とから構成されるエッジリスト要素を、
前記多角形のすべての辺を一筆書きでなぞるような順序
で生成する第二の手段と、前記第二の手段が生成するエ
ッジリスト要素を記憶する第三の手段と、前記第二の手
段が逐一生成するエッジリスト要素を前記第三の手段に
格納する過程において、直前に格納した、Y座標がKな
るエッジリスト要素格納位置から、前記第一の手段が算
出したf(K)だけ離れた位置に、次のエッジリスト要
素を格納する第四の手段とを含むことを特徴とする。
【0022】
【作用】一般に、ソート時間を短縮する最も効果的な方
法は、ソート対象データの構造を解析し、その構造に適
したソート方法を実行することである。本発明では、ソ
ート対象は、多角形の辺を構成する微小点の座標値であ
る。本発明はこの事象に着目し、DDAを用いて生成し
た微小点の座標データを、Y座標値によるソートが不要
となるように、メモリに格納していく。
【0023】すなわち、ある一つの辺を形成する微小点
の座標をDDAが発生するときには、Y座標値は順次増
加するか、または、順次減少するかのどちらかである。
従って、Y=Kなる水平直線に関するエッジリストの要
素数f(K)があらかじめわかっていれば、次のような
ことができる。いま、DDAがY=Kの水平直線に関す
るエッジリスト要素を発生し、メモリ内のS番地に格納
したと仮定する。次に、DDAがY=K+1の水平直線
に関するエッジリスト要素を発生した場合には、この要
素を(S+f(K))番地に格納する。逆にY=K−1
の水平直線に関するエッジリスト要素を発生した場合に
は、(S−f(K))番地に格納する。このようにすれ
ば、すべての辺をDDAで発生し終わったときには、Y
座標値でソート済みのエッジリストがメモリ内に作成さ
れている。
【0024】これにより、一つのDDAと少ないワーク
メモリ容量を用いて、エッジリストの作成を高速に行う
ことが可能となる。
【0025】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0026】図1は本発明の一実施例の要部を示すブロ
ック構成図である。
【0027】本実施例は、処理装置1と、XY座標頂点
列格納用のメモリ3と、極大または極小となる頂点のY
座標列およびその属性格納用のメモリ4と、エッジリス
ト格納用のメモリ5と、メモリ3に格納された座標頂点
列のなかでY座標値が最小である最小頂点座標格納アド
レス格納用のメモリ6と、DDAからなる線分発生器7
と、各ブロックを接続するバス2とを含んでいる。
【0028】処理装置1は、これらのメモリ内の任意の
位置の単位記憶素子に対する読み書き、および、線分発
生器7に対するデータの読み書きができる。また、読み
出した二つ以上のデータ間で、加減算したり、大小比較
したりでき、その結果をメモリに書き込むこともでき
る。線分発生器7は、線分の始点、終点を与えられる
と、その2点を結ぶ近似線分を構成要素である微小点の
座標値を逐次発生し、メモリ5に書き込む。微小点の座
標値を書き込む際には、同時に線分の方向ベクトルの正
負符号も属性情報として書き込む。方向ベクトルの正負
符号とは、線分の始点Y座標が終点Y座標よりも大きい
ときが「+」、始点Y座標が終点Y座標よりも小さいと
き「−」となる。これは「従来の技術」で説明したよう
に、巻数を増減する値Wn になる。
【0029】本発明の特徴は、図1において、座標頂点
列{Xn 、Yn }の要素のなかで、最大のY座標値をY
MAX 、最小のY座標値をYMIN 、KをYMIN 以上YMAX
以下の整数としたときに、「多角形の辺とY=Kなる水
平直線との交点数」であるf(K)をあらかじめ算出す
る第一の手段としての処理装置1と、「多角形の辺とY
=Kなる水平直線との交点座標」と「その交点が持つW
n 」とから構成されるエッジリスト要素を、多角形のす
べての辺を一筆書きでなぞるような順序で生成する第二
の手段としての線分発生器7と、線分発生器7が生成す
るエッジリスト要素を格納する第三の手段としてのメモ
リ5と、線分発生器7が逐一生成するエッジリスト要素
をメモリ5に格納する過程において、直前に格納した、
Y座標がKなるエッジリスト要素格納位置から、線分発
生器7が算出したf(K)だけ離れた位置に、次のエッ
ジリスト要素を格納する第四の手段としての処理装置1
とを含むことにある。
【0030】次に、本実施例の動作について、図2、図
3および図4に示すフローチャートを参照して説明す
る。ここで、図2は全体の動作を示し、図3は図2中の
ステップS4の処理手順の前半部分を示し、図4は図2
中のステップS4の処理手順の後半部分を示す。
【0031】図2に示すフローチャートの開始時に、メ
モリ3にXY座標頂点列{Xn 、Yn }が格納されてい
るものとする。座標頂点列{Xn 、Yn }は、その隣接
した2要素、(Xn 、Yn )と(Xn+1 、Yn+1 )とを
端点とする。m本の線分を辺として形成されるm多角形
を定義するものである。ただし、mは3以上の自然数、
nはm以下の自然数、Xm+1 =X1、Ym+1 =Y1 であ
る。
【0032】まず、処理装置1は、メモリ3に格納され
ているXY座標頂点列{Xn 、Yn }から、極大または
極小となる頂点のY座標列を作成し、メモリ4に格納す
る。頂点(Xn 、Yn )が極大点であるか、極小点であ
るか、あるいは、そのどちらでもないかの判別は、隣接
した3頂点のY座標Yn-1 、Yn 、Yn+1 を大小比較す
ることにより求められる。Yn-1 <Y>Yn+1 ならば頂
点(Xn 、Yn )は極大点、また、Yn-1 >Yn <Y
n+1 ならば頂点(Xn 、Yn )は極小点である。Yn-1
=Yn の場合には、Yn-2 、Yn-3 の座標値と大小比較
をする。同様に、Yn+1 =Yn の場合には、Yn+2 、Y
n+3 の座標値と大小比較をする。この比較をn=1、
2、3、…、mで実行すると、極大または極小となる頂
点のY座標列を作成できる。このとき、最小のY座標値
を持った頂点がわかるので、この頂点(XK 、YK )の
格納位置(メモリ3内部のどこに格納しているかを示す
アドレスポインタ)をメモリ6に格納しておく(ステッ
プS1)。
【0033】次に、処理装置1は、メモリ4に格納され
ている座標頂点(Xt 、Yt )と(Xt+1 、Yt+1 )を
読み出し(ステップS2)、線分発生器7に与える(ス
テップS3)。線分発生器7は、(Xt 、Yt )と(X
t+1 、Yt+1 )とを端点とした近似線分の微小点の座標
を発生し、メモリ5にエッジリストとして格納する(ス
テップS4)。このときメモリ5内のどこに格納するか
を、メモリ4の内容を参照して決定する。すなわち、一
つの座標格納位置から、f(K)だけ離れた位置に、そ
の次の座標を格納する(ステップS4)。
【0034】(Xt 、Yt )と(Xt+1 、Yt+1 )とを
端点とした線分の座標を発生し終わると(ステップS
5)、処理装置1は、メモリ3に格納されている座標頂
点(Xt+1 、Yt+1 )と(Xt+2 、Yt+2 )を読み出
し、線分発生器7に与える。線分発生器7は、
(Xt+1 、Yt+1 )と(Xt+2 、Yt+2 )とを端点とし
た線分の座標を発生し、同様に、メモリ5にエッジリス
トとして格納する(ステップS4)。以下、順次線分を
発生させ、(Xm-1 、Ym-1 )と(Xm 、Ym )とを端
点とする線分まで発生したら、座標頂点列の第1要素に
戻り、(Xm 、Ym )と(X1 、Y1 )とを端点として
線分を発生する。以下同様に(X1 、Y1 )と(X2
2 )とを端点、(X2 、Y2 )と(X3 、Y3 )とを
端点、というように、(Xt-2 、Yt-2 )と(Xt-1
t-1 )とを端点とする線分まで、総計m本の線分を発
生する(ステップS5)。この時点で、メモリ5にY座
標値に関するソートが終了したエッジリストが作成完了
している。
【0035】最後に、メモリ5のエッジリストのなか
で、Y座標値が等しい要素を、X座標値に関してソート
する(ステップS7)。
【0036】以上で、Y座標値に関するソート、および
X座標値に関するソートが終了したエッジリストが、メ
モリ5内に完成していることになる。
【0037】次に、本発明の特徴であるステップS4に
ついて、図3および図4を用いて詳細に説明する。メモ
リ5内のどの位置にエッジリスト要素を格納するかを示
すアドレスポインタをADRSとし、1本の線分発生に
おいて、ADRSとf(K)の値がどのように推移する
かを説明する。
【0038】ステップS4の開始時に、ADRSは次に
格納するべき要素の格納位置を指し示しているものとす
る。また、第一番目の線分発生時にはf(K)=0、第
二番目以降の線分発生時には一つ前の線分発生終了時に
おけるf(K)の値がそのまま保持されているものとす
る。
【0039】まず、微小点の座標発生をする前に、微小
点の座標発生回数Jを求めておく。図3中、ステップS
11からステップS16までの過程がこれにあたる。ス
テップS11において、水平線分(X軸に平行な辺)は
エッジリスト作成の対象から除外している。座標発生回
数Jは、線分を構成している微小点の個数をJ個とす
る。ステップS15において、頂点(Xt+1 、Yt+1
が極大点、または極小点であった場合の処理(エッジリ
スト要素数が奇数個にならないようにする)をしてい
る。
【0040】座標発生回数Jが求められた後、微小点の
座標を発生し、エッジリストを格納する処理にはいる。
ステップS17において座標発生し、ステップS18に
おいて格納している。ステップS19、S20、S21
およびS22の処理において、Y=Kなる水平直線に関
するエッジリスト要素数f(K)を算出している。すな
わち、Y=Kなる水平直線上に存在する極大点の数をP
個、極小点の数をQ個としたときに、 f(K)=f(K+1)+2×(P−Q) または、 f(K)=f(K−1)+2×(P−Q) なる漸化式を実行している。ステップS23でADRS
値を更新し、二つの要素間に(f(K)−1)個の要素
が格納できる空き領域を作っている。そして、ステップ
S24、S25、S26およびS27で次の微小点につ
いての処理を行う。ここで、ステップS27は、ある一
つの辺(近似線分)と、ある一つの水平直線との交点が
二つ以上存在しないようにするための処理である。近似
線分の傾きが、X軸(+X方向)に対して−45度から
+45度の範囲内にある場合には、ある一つの水平直線
との交点が二つ以上存在してしまう。図5にこの様子を
示す。図5の近似線分は、Y=2なる水平直線と、
(3、2)、(4、2)、(5、2)なる三つの座標点
において交わっている。これは、辺を整数座標系上での
線分として近似したためである。
【0041】最後に、ステップS28およびS29にお
いて、ADRSを1だけずらしている。頂点(Xt+1
t+1 )が極大点または極小点であった場合には、次に
この頂点(Xt+1 、Yt+1)を始点として線分発生させ
てエッジリスト要素を格納する際に、ADRSの変化方
向が逆になるからである。例えば、後述の図6(b)で
はADRSが増える方向であったのが、図6(c)では
ADRSが減る方向に変化する。ADRSを1だけずら
せば、図6(c)のようにエッジリストが格納できる。
【0042】以下、具体例についてさらに詳細に説明す
る。
【0043】本発明では、多角形の辺を一筆書きでなぞ
るように近似直線を発生する。すなわち、一つのDDA
を搭載すればよい。図7のような順序でエッジリストが
作成される。ただし、逐一発生したエッジリストをその
ままシーケンシャルにメモリに格納したのでは、前述し
たようにソートに時間がかかる。従って、逐一発生した
エッジリストを次のような手順でメモリ5に格納する。
Y=Kなる水平直線に関するエッジリストの要素数f
(K)をあらかじめ認識し、このf(K)のアドレスオ
フセットを考慮しながらメモリ5上に格納する。この格
納方法について、図10(b)の三角形を用いて具体的
に説明する。
【0044】図10(b)の三角形の領域判定をするた
めに、最終的に必要なエッジリストは図9(a)または
図9(b)のリストである。すなわち、Y座標値に関す
るソートをした後、X座標値に関するソートを施したエ
ッジリストである。
【0045】図6(a)、(b)および(c)にエッジ
リストがメモリ5上に格納されてゆく過程を示す。図6
(a)は、頂点(5、6)から頂点(7、3)への近似
直線を発生し終わった直後のメモリの状態である。頂点
(7、3)は極大点でも極小点でもないのでリストアッ
プされていない。(5、6、−)、(6、5、−)、
(6、4、−)の3要素が格納される。このとき、Y=
6、Y=5、Y=4の水平直線に関しては、2個の要素
が存在することがあらかじめわかっていれば、図6
(a)のように、1番地おきに(5、6、−)、(6、
5、−)、(6、4、−)の3要素を格納できる。Y=
Kの水平直線に関する要素数が何個あるかを求める方法
は後述する。
【0046】次に、図6(b)は頂点(7、3)から頂
点(4、0)への近似直線を発生し終わった直後のメモ
リ5の状態である。やはり、1番地おきに格納する。最
後に、頂点(4、0)から頂点(5、6)への近似直線
を発生し終わった直後のメモリ5の状態を図6(c)に
示す。線分の描画方向がY座標値が増加する向きになる
ので、いままでの2本の線分のエッジリスト格納時と逆
方向に格納してゆく。図6(b)まで1番地おきに要素
を格納していたため、1番地おきに空き領域が存在して
いる。この空き領域に要素が格納される。三角形を形成
する3本の近似直線の発生が終了した段階が図6(c)
の状態である。この状態で、すでにY座標値に関するソ
ートが終了している。すなわち、Y座標値に関するソー
ト時間が零である。またメモリ5に余分な空き領域も存
在しない。
【0047】さてここで、Y=Kの水平直線に関する要
素が何個存在するかをあらかじめ認識する方法を説明す
る。基本的には、多角形の極大点、極小点が存在すY座
標値を解析すればよい。Y=Kの水平直線に関する要素
数をf(K)と仮定する。Y=K+1なる水平直線に関
する要素数がf(K+1)個であったならば、その下に
位置する水平直線Y=Kに関する要素数f(K)は、漸
化式で表すことができる。Y=Kなる水平直線上に極大
点がP個、極小点がQ個存在するならば、 f(K)=f(K+1)+2×(P−Q) となる。また、Kの定義域は、多角形の頂点列のなかで
最大のY座標値をもつもの、あるいは、最小のY座標値
をもつものを調べればわかる。
【0048】図12(a)および(b)ならびに図13
(a)および(b)を用いて具体的に説明する。図10
(a)のような凸多角形では、ただ一つの極大点(X
1、Y1)と、ただ一つの極小点(X4、Y4)が存在
する。(X1、Y1)は極大点であると同時に最大点で
もある。また、(X4、Y4)は極小点であると同時に
最小点でもある。従って、K>Y1なる水平直線、また
は、K<Y4なる水平直線に関する要素は0個である。
【0049】Y4≦K≦Y1 の範囲の水平直線を考えればよい。まず、K=Y1なる
水平直線上に極大点が一つ存在するので、 f(Y1)=2 である。Kの値をY1、Y1−1、Y1−2、Y1−
3、…、Y4+3、Y4+2、Y4+1と1ずつ減らし
ていくが、Y=Y4+1までは極大点、極小点ともに存
在しないので、 f(K)=2 (K=Y1、Y1−1、Y1−2、Y1
−3、…、Y4+3、Y4+2、Y4+1)となる。Y
=Y4の水平直線上には極小点が存在するので、 f(Y4)=0 となる。これは、Y=Y4の水平直線に関する要素は存
在しないことを意味する。換言すれば、(X4、Y4)
なる頂点は図形の外部領域とみなすことを意味する。図
10(b)の例でいえば、三角形の頂点(4、0)がエ
ッジリストに選出されない。すなわち、図9(b)のエ
ッジリストが作成されることになる。もし、図9(a)
のエッジリストが欲しいならば、Y座標値に対する領域
判定の境界条件を変えればよい。例えば、図10(b)
の三角形に対して図9(a)のエッジリストを作成した
い場合には、前出の漸化式「Y=Kなる水平直線上に極
大点がP個、極小点がQ個存在するならば、f(K)=
f(K+1)+2×(P−Q)」の代わりに、「Y=K
なる水平直線上に極大点がP個、Y=K+1なる水平直
線上に極小点がQ個存在するならば、f(K)=f(K
+1)+2×(P−Q)」とすればよい。
【0050】ここでは、簡単のために、「Y=Kなる水
平直線上に極大点がP個、極小点がQ個存在するなら
ば、f(K)=f(K+1)+2×(P−Q)」とす
る。これは、極大点は多角形の内部領域に属し、極小点
は外部領域に属すると定義することと同値である。
【0051】複雑な形状をした多角形について、f
(K)値の推移を考察する。図13(a)は、三つの極
大点と三つの極小点を持つ7角形である。(X1、Y
1)、(X3、Y3)、(X6、Y6)の3頂点が極大
点、(X2、Y2)、(X5、Y5)、(X7、Y7)
の3頂点が極小点である。従って、Kの値をY1からY
5まで1ずつ減少させたとき、f(K)値はY1、Y
3、Y6において2増えている。また、Y2、Y5、Y
7において2減っている。これは、前出の漸化式を使っ
て算出した結果と一致する。
【0052】さらに複雑な形状をした多角形について、
f(K)値の推移を考察する。図13(b)は、二つの
極大点と二つの極小点を持つ、辺が相互交差した7角形
である。(X1、Y1)、(X5、Y5)の2頂点が極
大点、(X4、Y4)、(X7、Y7)の2頂点が極小
点である。従って、Kの値をY1からY4まで1ずつ減
少させたとき、f(K)値はY1、Y5において2増え
ている。また、Y4、Y7において2減っている。これ
も、前出の漸化式を使って算出した結果と一致する。
【0053】以上説明したように、本実施例によれば、
エッジリストのY座標値に関するソート時間が零であ
る。しかし一方で、多角形頂点の極大極小判定の時間が
必要となる。ただし、Y座標値に関するソート時間に比
べて、この極大極小判定に要する時間は極めて少ない。
これは、一般的な多角形の形状を考えれば導出される結
論である。
【0054】一般的な多角形の形状を考えてみる。多角
形のすべての頂点のなかで、極大点でも極小点でもない
頂点が何%を占めるかを考える。図14(a)のよう
に、すべての頂点が極大点、または極小点である例は少
ない。このような多角形を塗りつぶす要求は、対話型の
ソフトウェアアプリケーションしかない。すなわち、コ
ンピュータのオペレータがマウスなどのポインティング
デバイスを使用して多角形の頂点を与えるような応用で
ある。この場合には、ポインティングする頂点数が十数
個程度である。すなわち、全頂点数が少ないので極大極
小判定に必要な時間は少ない。また、図14(b)のよ
うに、太い実線、破線などを描画する際に、太線の外郭
線を多角形として与える場合も全頂点数が少ないので極
大極小判定に必要な時間は少ない。
【0055】頂点が多くなるのは、曲線を微小線分の集
合として直線近似する場合である。図14(c)および
(d)のように、文字の外郭線を多角形として与える応
用などでは、全頂点数は数十個(英字、数字)から数百
個(漢字)にもおよぶ。この場合には、多角形のすべて
の頂点のなかで、極大点でも極小点でもない頂点が90
%以上を占める。従って、全頂点数が数百個におよぶ場
合であっても、極大極小判定の対象となる頂点数は十個
程度になる。従って、この場合でも極大極小判定に必要
な時間は少ない。
【0056】なお、最大点、最小点の判定は、どのよう
な領域判定方式を採用したとしても(本発明の方式を採
用しなくても)必要である。すなわち、巻数判定の対象
となる座標点数を少しでも減らすために、多角形を完全
に包み込む最小の外接矩形を抽出し、外接矩形の内部領
域に属する座標点の巻数のみを求める。図15(a)お
よび(b)に抽出した外接矩形の例を示す。外接矩形の
抽出は、処理対象となるデータを減らすための有効な手
段である。従って、最大最小判定の時間は処理速度比較
の際に考慮する必要はない。
【0057】また、本実施例において、極大極小判定を
すれば、エッジリストの要素数が算出でき、ひいては、
エッジリスト格納領域として必要なメモリ容量が算出で
きる。最大点が存在する水平直線Y=KMAX と、最小点
が存在する水平直線Y=KMIN がわかれば、Kに関する
f(K)の総和Σf(K)が求められ、これがエッジリ
スト格納領域の大きさになる。従って、極大極小判定を
した時点で、メモリを総括管理している他の処理系に、
使用可能なメモリ容量を問い合わせた後にエッジリスト
生成処理を実行する方法も採択できる。このようにすれ
ば、他の処理系に対して必要十分の容量を持ったエッジ
リスト格納用メモリを要求することになる。これは、メ
モリという、有限かつ重要な資源を有効活用することが
できる。
【0058】
【発明の効果】以上説明したように、本発明は、多角形
の座標頂点列をもとに、多角形の各辺と水平直線との交
点(エッジリスト要素)を多角形の辺を一筆書きでなぞ
るような順序で逐次生成し、エッジリスト要素をメモリ
に格納する過程において、直前に生成したY座標がKな
るエッジリスト要素格納位置から、Y座標がKなるエッ
ジリスト要素数だけ離れた格納位置に、次に生成したエ
ッジリスト要素を格納することにより、Y座標のソート
が不要になり、処理の高速化を図ることができる効果が
ある。
【0059】また、エッジリスト要素を連続した領域に
格納でき、メモリ容量が小さくて済むとともにメモリの
有効活用を図ることができる効果がある。
【0060】さらに、必要とするDDAは一つでよく、
装置を簡単化できる効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック構成図。
【図2】その動作を示すフローチャート。
【図3】図2のステップS4の処理手順の前半部分を示
すフローチャート。
【図4】図2のステップS4の処理手順の後半部分を示
すフローチャート。
【図5】X軸(+X方向)に対する傾きが0度以上45
度未満の傾き成分を持った近似線分を示す図。
【図6】図4に対するエッジリストがメモリ上に格納さ
れていく過程を示す図。
【図7】ソートされていないエッジリストを示す図。
【図8】ソートされたエッジリストを示す図。
【図9】極大点、極小点を考慮したエッジリストを示す
図。
【図10】XY座標平面上に描かれた三角形と、それを
整数座標平面上に写像したものを示す図。
【図11】図10の三角形の内部領域に属する座標点を
塗りつぶした模式図。
【図12】極大点、極小点が3個ずつ存在する多角形を
示す図。
【図13】極大点、極小点が2個ずつ存在する多角形を
示す図。
【図14】多角形の一般的形状と頂点との関係を説明す
るための図。
【図15】多角形と、その多角形を包み込む最小の外接
矩形との関係を示す図。
【図16】多角形の一般的形状を説明するための図。
【図17】巻数の説明図。
【図18】塗りつぶし規則を説明するための図。
【符号の説明】
1 処理装置 2 バス 3 (XY座標頂点列格納用の)メモリ 4 (極大、極小頂点のY座標列・属性格納用の)メ
モリ 5 (エッジリスト格納用の)メモリ 6 (最小頂点座標格納アドレス格納用の)メモリ 7 線分発生器 S1〜S7、S11〜S29 ステップ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 mは3以上の自然数、nはm以下の自然
    数、Xm+1 =X1 、Ym+1 =Y1 とし、二次元XY平面
    上の座標頂点列{Xn 、Yn }の隣接した2要素、(X
    n 、Yn )を始点、(Xn+1 、Yn+1 )を終点とするm
    本の線分を辺として形成されるm多角形と、任意の座標
    点(X#、Y#)が与えられたときに、前記座標点(X
    #、Y#)を始点、無限遠方にある座標点を終点とする
    基準直線と、前記(Xn 、Yn )を始点、(Xn+1 、Y
    n+1 )を終点とする辺との外積値の正負符号成分をWn
    としたときに、nに関するWn の総和W(W=ΣWn
    を、前記座標点(X#、Y#)に関する巻数とし、巻数
    値によって座標点(X#、Y#)が前記m多角形の内部
    領域に属するか否かの判定を行う手段を含むエッジリス
    ト作成装置において、 前記座標頂点列{Xn 、Yn }の要素のなかで、最大の
    Y座標値をYMAX 、最小のY座標値をYMIN 、KをY
    MIN 以上YMAX 以下の整数としたときに、「前記多角形
    の辺とY=Kとなる水平直線との交点数」であるf
    (K)をあらかじめ算出する第一の手段と、 「前記多角形の辺とY=Kなる水平直線との交点座標」
    と「その交点が持つWn 」とから構成されるエッジリス
    ト要素を、前記多角形のすべての辺を一筆書きでなぞる
    ような順序で生成する第二の手段と、 前記第二の手段が生成するエッジリスト要素を記憶する
    第三の手段と、 前記第二の手段が逐一生成するエッジリスト要素を前記
    第三の手段に格納する過程において、直前に格納した、
    Y座標がKなるエッジリスト要素格納位置から、前記第
    一の手段が算出したf(K)だけ離れた位置に、次のエ
    ッジリスト要素を格納する第四の手段とを含むことを特
    徴とするエッジリスト作成装置。
JP3212258A 1991-08-23 1991-08-23 エッジリスト作成装置 Expired - Lifetime JP2712912B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3212258A JP2712912B2 (ja) 1991-08-23 1991-08-23 エッジリスト作成装置
US07/933,941 US5353394A (en) 1991-08-23 1992-08-24 Edge list constructor for digital image processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3212258A JP2712912B2 (ja) 1991-08-23 1991-08-23 エッジリスト作成装置

Publications (2)

Publication Number Publication Date
JPH0554149A true JPH0554149A (ja) 1993-03-05
JP2712912B2 JP2712912B2 (ja) 1998-02-16

Family

ID=16619599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3212258A Expired - Lifetime JP2712912B2 (ja) 1991-08-23 1991-08-23 エッジリスト作成装置

Country Status (2)

Country Link
US (1) US5353394A (ja)
JP (1) JP2712912B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3332165B2 (ja) * 1992-08-08 2002-10-07 株式会社リコー 画像処理装置
JP3480971B2 (ja) * 1993-10-17 2003-12-22 ヒューレット・パッカード・カンパニー 画像データの生成方法及び復元方法
US5657436A (en) * 1995-06-08 1997-08-12 Hewlett-Packard Company Preprocessing apparatus and method for line scan conversion in a computer graphics system
FR2735267B1 (fr) * 1995-06-08 1999-04-30 Hewlett Packard Co Systeme et procede de convertisseur de balayage de triangles a tampons de trame entrelaces en deux dimensions
AUPR970501A0 (en) * 2001-12-21 2002-01-24 Canon Kabushiki Kaisha A method for performing set operations on two or more arbitrary paths to produce a simple outline path
JP4621618B2 (ja) * 2006-03-28 2011-01-26 株式会社東芝 図形描画装置、図形描画方法、およびプログラム
JP4400667B2 (ja) * 2007-10-04 2010-01-20 セイコーエプソン株式会社 描画装置、画像出力装置及びプログラム
KR20120090354A (ko) * 2011-02-07 2012-08-17 삼성전자주식회사 2차원 벡터 그래픽스를 위한 에지 관리 유닛과 그것을 포함하는 그래픽 처리장치 및 그 방법
US20130328884A1 (en) * 2012-06-08 2013-12-12 Advanced Micro Devices, Inc. Direct opencl graphics rendering

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202960A (en) * 1988-11-02 1993-04-13 Digital Equipment Corp Method and apparatus for plotting polygon edges on a pixelized grid
US5133049A (en) * 1990-03-14 1992-07-21 Hewlett-Packard Company Accelerated decomposition of small polygons into trapezoids

Also Published As

Publication number Publication date
US5353394A (en) 1994-10-04
JP2712912B2 (ja) 1998-02-16

Similar Documents

Publication Publication Date Title
JP2865751B2 (ja) 表示画面スクロール方式
US5115402A (en) Scan-conversion process and processor for converting a graphic primitive to a pixel map
US5448686A (en) Multi-resolution graphic representation employing at least one simplified model for interactive visualization applications
US6377259B2 (en) Presenting node-link structures with modification
JPH05127654A (ja) 文字図形変形処理装置
WO2010088029A2 (en) Single-pass bounding box calculation
İşler et al. Real-time multi-resolution modeling for complex virtual environments
US5640589A (en) Method and device for generating graphic data using a writing motion model
JP2712912B2 (ja) エッジリスト作成装置
US4972330A (en) Clipping process and processor
US5489920A (en) Method for determining the optimum angle for displaying a line on raster output devices
JPH05334383A (ja) 画像図形編集装置
US5920324A (en) Character pattern producing apparatus capable of producing character pattern having connected character elements
US12026809B2 (en) Systems for generating anti-aliased vector objects
JPH02270019A (ja) 高品質文字パターン発生方式
CN110807113B (zh) 可视化布局中的矩形图元重叠的非迭代消除方法
US5355451A (en) Graphic processing unit
Samsonov Points-to-polygons and reverse animations for enhanced visual analytics on multiscale thematic maps
JP2004348708A (ja) 地図情報システム用ポリゴン生成方法及びその装置
JP2782904B2 (ja) 多角形塗りつぶし方式
JP2590327B2 (ja) 図面情報の管理方法
KR100719480B1 (ko) 고속의 안티알리아싱 처리 방법
JP3024178B2 (ja) 画像処理装置の多角形塗りつぶし装置
Fallah et al. Software for visualizing volume rendering of large datasets
CN117555465A (zh) 一种用于显示设备的图形显示方法及图形显示装置