JPH0664617B2 - アドレス発生方法 - Google Patents

アドレス発生方法

Info

Publication number
JPH0664617B2
JPH0664617B2 JP26799288A JP26799288A JPH0664617B2 JP H0664617 B2 JPH0664617 B2 JP H0664617B2 JP 26799288 A JP26799288 A JP 26799288A JP 26799288 A JP26799288 A JP 26799288A JP H0664617 B2 JPH0664617 B2 JP H0664617B2
Authority
JP
Japan
Prior art keywords
value
aerrmi
coordinate
xmi
address
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
JP26799288A
Other languages
English (en)
Other versions
JPH01147682A (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 JPH01147682A publication Critical patent/JPH01147682A/ja
Publication of JPH0664617B2 publication Critical patent/JPH0664617B2/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/50Lighting effects
    • G06T15/80Shading
    • 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

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、コンピュータ・グラフィック・ターミナル等
の画像のタイリング処理等に好適なアドレス発生方法に
関する。
〔従来技術及び発明が解決しようとする課題〕
コンピュータ・グラフィック・システムでは、陰極線管
(CRT)等の表示装置のスクリーン上に画像を表示す
る。一般に、CRTの電子ビームは、X(水平)成分及び
Y(垂直)成分を有するデジタル信号の制御により偏向
され、スクリーン上に配列された格子点上の画素(ピク
セル)が1行ずつのラスタ走査に従ってアドレスされ
る。プロセッサが画像データを発生し、画像データはプ
ロセッサからフレーム・バッファに転送される。フレー
ム・バッファは、CRTスクリーン上の格子点(画素)に
1対1に対応する記憶位置を具えている。以下の説明に
於いて、フレーム・バッファ内のデータの記憶位置は、
表示スクリーン上の格子点の配列に対応する長方形配列
として物理的に配列されているものとする。
CRTの電子ビームの偏向を制御するデジタル信号は、フ
レーム・バッファのアドレス制御にも用いられ、格子点
の画素に表示される色はフレーム・バッファの対応する
記憶位置のデータの内容によって決まる。従って、フレ
ーム・バッファは、CRTスクリーン上に表示される画素
の仮想的な画像データを含んでいる。プロセッサからフ
レーム・バッファに供給するデータにより、色領域を含
む画像を表しても良い。色領域を表す為にフレーム・バ
ッファ・メモリに画像データをロードする処理をタイリ
ングと呼んでいる。以下の説明に於いて、タイリング処
理に関しては特定の格子点のタイリング及び多角形のタ
イリングについて述べる。しかし、特定の格子点に対応
する記憶位置のタイリング及び多角形内の格子点に対応
する記憶位置のタイリングを述べることは、単に説明を
簡単にすることを意図したに過ぎない。
コンピュータ・グラフィック・システムでは、多角形表
面を有する3次元図形を表示する際にその図形の表面を
2次元表示プレート上に投影することも出来る。各多角
形表面により表示プレーン上に多角形か又は直線が投影
される。3次元空間で多角形表面を定義する情報は、プ
ロセッサにより求められる。プロセッサは、この情報を
用いて表示プレーン上の多角形を定義する情報を発生す
る。この情報はプロセッサからタイリング・エンジンに
渡される。各多角形について、タイリング・エンジン
は、その多角形内にどの格子点が存在するかを判断す
る。各格子点が多角形内に存在するか否かを判断するに
は、非常に時間がかかる。凸型多角形の場合には、各行
毎に、多角形の境界線と交差する2つの格子点の位置を
測定し、これらの2点間の格子点をタイリングすること
により高速でタイリングすることが出来る。例えば、第
1図の多角形(四角形)は、この多角形の最下行から上
方に広がっている2本の辺の間にどの格子点が存在する
かを判断し、それに対応する記憶位置をタイリングする
ことによって最下行の格子点から上方に向かってタイリ
ングすることが出来る。行1〜4と辺ABとの交点のX座
標は、始点AのX座標に辺ABの傾きを繰り返し加えると
求めることが出来る。ここで、垂直方向のYを独立変数
としているので、この辺ABの傾きは(YB−YA)/(XB−
XA)ではなく、(XB−XA)/(YB−YA)で定義される。
同様に、行1〜8と辺ADとの交点のX座標は、始点Aの
X座標に辺ADの傾きを繰り返し加えて求めることが出来
る。行1〜4の各行の上で、各行と辺AB及び辺ADとの2
つの交点の間の格子点がタイリングされる。しかし、点
A及び点Dの座標は、夫々(8,0)と(12,8)なので、
辺ADの傾きは整数にならず、辺ADと行1,2,3,4,・・・と
の交点のX座標は、夫々8 1/2,9,9 1/2,10,・・
・のようになる。そして、タイリングする点を決めると
き、1行おきに小数点以下の座標値を切り上げ又は切り
捨てて整数化する必要がある。尚、行8に達するまで8
回処理を繰返すとX座標12が得られる。
2つの格子点間で辺の傾きが整数(0でも良い)と2進
分数との和になるとは限らない。辺BCの傾きは4/11で
ある。4/11が繰り返し始点BのX座標に加算されると
4/11,8/11,1 1/11,・・・が得られる。しかし、
4/11は2進分数として正確に表すことは出来ないの
で、座標値の加算をする以前に割り算及び切り捨てを実
行する必要がある。例えば、4/11が3/8で近似され
た場合、行4から行15に達するまでに11回の加算が必要
でその結果4 1/8が得られる。座標(4 1/8,1
5)は(4,15)に近似されるので、この場合には誤差は
生じない。しかし、場合によっては、座標値を求めるの
に100回以上も加算を繰返すこともあり、そのような場
合には、辺の傾きを繰り返し加算することによって最後
に得られた点の座標が所望の格子点からいくつも離れて
しまうということも起こり得る。この場合には、表示画
像は不正確なものになる。
最終点に達する為に開始点のX座標に辺の傾きを反復し
て加算したときに生じる誤差は、開始点のX座標に順次
加算する値を一定にせず、以前の加算の反復で生じた誤
差を考慮してその後反復加算される値(辺の傾き)を変
化させることにより除去することが出来る。
ジェー・イ−・ブレセンハムの「デジタル・プロッタの
コンピュータ制御の為のアルゴリズム」(IBMシステム
ズ・ジャーナル第4巻25号、1962年刊行)に記載された
アルゴリズムによれば、プロッタのプリント・ヘッドの
移動経路を選択する為に第1及び第2直交軸に沿って等
間隔の位置に記録媒体を送ることにより、プロッタが開
始点から最終点までの直線を高精度に近似出来る。実際
に得られる最終点は所望の最終点に一致する。このブレ
センハムのアルゴリズムには、近似される直線が3次元
直交座標系の第1象限(オクタント)内に限定されると
いう欠点がある。他の象限に存在する直線を近似する為
には、符号を変えたりアルゴリズムの座標軸を交換した
りする必要が生じる。
1987年7月30日出願の米国特許出願第79622号(特願昭6
3−186678号に対応)に記載された装置によれば、上記
ブレセンハムのアルゴリズムを修正している。即ち、3
次元直交座標系の第1象限以外の象限の直線を近似する
際に符号を変更したり、座標軸を交換したりする必要を
なくしている。
従って、本発明の目的は、更に簡単なアルゴリズムで高
速且つ正確に表示スクリーン上の直線に対応するメモリ
の適正な記憶位置をアドレス指定し得るアドレス発生方
法を提供することである。
〔課題を解決する為の手段及び作用〕
本発明の好適実施例は、アドレス可能な記憶位置の長方
形配列を有するメモリ装置に画像データをロード(即ち
アドレス指定)する方法である。このメモリ装置内のア
ドレス可能な各記憶位置はX座標及びY座標から成るア
ドレスによって唯1つ定義し得る。これら記憶位置は、
X方向にピッチdXで、Y方向にピッチdYで構成された格
子点に夫々対応している。この場合、点(XM0,Y0)から
点(XM0+pM*dX,Y0+q*dY)までの直線と、点(Xm0,
Y0)から点(Xm0+pm*dX,Y0+q*dY)までの直線の間
の略総ての格子点に対応する記憶位置をアドレス指定す
ることが望ましい。ここで、pM,,pm,qは、整数で、
「*」は乗算記号である。
本発明の方法では、 (a)先ず、初期設定として、 sM =floor(pM/q) PIncM =pM−sM*q−q NIncM =pM−sM*q AErrM0 =PIncM sm =floor(pm/q) PIncm =pm−sm*q−q NIncm =pm−sm*q AErrm =PIncm と設定する。ここで、フロア演算子(floor)は、その
数値を超えない最大の整数を表す。
(b)以下の変数の添字iが0からq−1までの各値を
とる場合、AErrMiが0以上ならば、XMi+1にXMi+sM+
1を代入し、且つ、AErrMi+1にAErrMi+PIncMを代入
し、AErrMiが0より小さいならば、AErrMi+1にXMi+s
Mを代入し、且つAErrMi+1にAErrMi+NIncMを代入す
る。このアルゴリズムは、以下のように書ける。
If AErrMi>=0 then XMi+1:=XMi+sM+1 AErrMi+1:=AErrMi+PIncM else XMi+1:=XMi+sM AErrMi+1:=AErrMi+NIncM end If また、同時に以下のアルゴリズムを実行する。
(上記と同様の書式) If AErrmi>=0 then Xmi+1:=Xmi+sm+1 AErrmi+1:=AErrmi+PIncm else Xmi+1:=Xmi+sm AErrmi+1:=AErrmi+NIncm end If (c)iの値を1増加し、Hrzi+1=Xmi+1−XMi+1
を設定し、記憶する。
(d)(i+1)番目の行(Yi+1)上の記憶位置(XM
i+1,Yi+1)を開始点として、これに隣接したHrzi+
1個の記憶位置のアドレスを順次発生する。
以上の説明において、X及びYは夫々水平方向及び垂直
方向の座標を表す場合に限定されるものではない。X及
びYは直交座標系の夫々一方及び他方の座標軸を表して
いることに留意されたい。
〔実施例〕
第2図は、コンピュータ・グラフィック・システムの簡
単なブロック図である。プロセッサ(1)又は、ホスト
・コンピュータ(1)は、表示リストを受け、多角形を
表す情報を出力し、これら多角形を定義する情報をXYア
ドレス発生器(2)に順次供給する。XYアドレス発生器
(2)は、長方形格子上の格子点に頂点がある一般の多
角形のタイリングをすることが出来る。この多角形は、
2つの互いに対向する側線(siding)を有し、これら2
本の側線は最小垂直座標Yminと最大垂直座標Ymaxとの間
に延びている。このような多角形の一例は、第4図に示
されており、側線ABCD及び側線AGFEDを有している。第
4図の多角形の場合、Yminの値は任意に0として示され
ている。各側線に沿ったYの値は単調増加しているの
で、各側線はYmin及びYmaxの間で各行と1回だけしか交
差しない。従って、各行には2本の辺のみしか交差して
いない。
この多角形の内部の格子点は、下から上に向かって1行
ずつタイリングされる。各行は、左から右方向或いは右
から左方向へタイリングされる。2つの側線の一方が
「主側線」として選択される。多角形のタイリング中
に、タイリング動作は主側線から反対側の「副側線」へ
と進行する。主側線としては、辺の数が少ない側線が選
択される。従って第4図の場合、側線ABCDが主側線にな
る。両方の側線が同数の辺を有する場合には、任意に一
方の側線(例えば、左側の側線)が主側線として選択さ
れる。
フレーム・バッファ(9)は、長方形配列の記憶位置を
有するフレーム・メモリ(ビットマップ・メモリ)(9
0)と、Xアドレス・カウンタ(92)と、Yアドレス・
カウンタ(94)と、1ビットの方向ビット・メモリ(9
6)を含んでいる。XYアドレス発生器(2)とフレーム
・バッファ(9)はローカル表示バスで接続されてい
る。第2図では、グラフィック・システムの機能を図示
する便宜上、ローカル表示バスは図示せずに、XYアドレ
ス発生器(2)とフレーム・バッファ(9)とを機能的
に別々に接続している。
ローカル表示バスは、アドレス/データのサイクル切替
え可能な32ビットのバスである。アドレス・サイクルで
は、上位4ビット31〜28は、次のデータ・サイクルを受
けるブロックを特定し、次のビット27は、ヘジテイト・
ビット(hesitate bit)であり、ビット26〜24は、現
在のベクトルが存在し、現在のベクトルの方向を大雑把
に示す象限(オクタント)を特定し、ビット23〜12は、
Yアドレスであり、ビット11〜0はXアドレスである。
タイリング動作の際に、2つの方向のみが可能であり、
ビット25及び24はタイリングの方向が変化しても変わら
ない。従って、ビット26の状態によって、タイリングが
右から左方向に行われる(セット状態)か、又は左から
右方向へ行われる(非セット状態)かが決まる。このバ
スの情報をアドレスとして受けるか、又はデータとして
受けるかは、制御ラインの状態によって決まる。
タイリングされる多角形の各行毎に、XYアドレス発生器
(2)は、多角形のその行の1格子点の座標(X,Y)を
表すアドレス・ワードを発生する。これらのアドレス・
ワードはフレーム・バッファ(9)に送られ、Xアドレ
ス・カウンタ(92)及びYアドレス・カウンタ(94)に
記憶される。方向ビット・メモリ(96)は、方向ビット
26のデータを受ける。
多角形をタイリングする為に、最初XYアドレス発生器
(2)は初期状態に設定されており、その後動作状態に
設定される。動作状態では第3図のステート・マシン
(12)の制御に従うが、ステート・マシン(12)は、マ
スタ・クロック発生器(14)からの一連のクロック信号
に応じて所定の状態を順に進めて行く。
第3図は、第2図のXYアドレス発生器(2)をより詳し
く表したブロック図である。XYアドレス発生器(2)
は、11個のレジスタ(202)〜(222)と、3個のカウン
タ(224)〜(228)と、一定値「1」を記憶している一
定レジスタ(230)と、1ビット・メモリ(232)と、加
算器(234)と、加減算器(236)とを含んでいる。カウ
ンタ(224)〜(222)は、レジスタ(202)〜(222)
は、プロセッサ(1)からマルチプレクサ(MUX)(24
0)を介して送られた値により初期化される。
XYアドレス発生器(2)を初期化する為に、プロセッサ
(1)は、多角形の頂点A〜Gの座標を計算し、どの頂
点がY座標の最小値Ymin及び最大値Ymaxを与え、どの頂
点がこれら最大及び最小値間の2つの側線上に存在する
かを判断する。プロセッサ(1)は、Yminの行から上に
向かって延びる2本の辺の相互の積も計算し、もし、こ
の相互積から副側線の右側に主側線があることが判れ
ば、プロセッサ(1)は、1ビット・メモリ(232)に
論理「1」(即ち、HES=「1」)を入力する。
点AのX座標と点BのX座標との差が値DXMを与え、点
AのY座標と点BのY座標との差が値DYMを与える。同
様に、点A及び点GのX座標及びY座標の夫々の差から
値DXm及び値DYmが計算される。(ここで、文字M及びm
は夫々主側線及び副側線に対応している。)プロセッサ
(1)は、値DYM及びDMmをカウンタ(224)及び(226)
に夫々ロードする。主側線の辺AB及び副側線の辺AGの夫
々に関して(DX/DY)の値(この書式は、DXM/DYMの値
とDXm/DYmの値をまとめて示していることに注意された
い。)が計算され、そして、floor(DX/DY)の値が主
側線及び副側線の辺に関して夫々計算される。ここで、
フロア演算子(floor)は、括弧内の数値を超えない最
大の整数を表し、例えば、floor1.2=1、floor2.0=
2、floor−1.2=−2となる。以上の結果得られた値sM
及びsmがレジスタ(202)及び(204)に夫々ロードされ
る。レジスタ(206)及び(208)には、主側線の辺及び
副側線の辺が夫々最下行Yminと交差する点のX座標、XM
0及びXm0が夫々入力される。第4図の多角形の場合、XM
0及びXm0の値はどちらも点AのX座標を表す。しかし、
本発明は、主側線と副側線が最下行か又は最上行のいず
れかで一致して1つの頂点を形成する場合のみに限定さ
れるわけではない。レジスタ(202)、(204)、(20
6)及び(208)と一定レジスタ(230)は、MUX(マルチ
プレクサ)(242)を介して加減算器(236)に接続して
いる。加減算器(236)の出力はMUX(244)に供給さ
れ、MUX(244)の出力端はレジスタ(206)及び(208)
とカウンタ(228)に接続している。
主側線の辺ABと副側線の辺AGについてのs、DX及びDYの
値(sはsMとsmを、DXはDXMとDXmを、DYはDYMとDYmをま
とめて表す。)を使用して、プロセッサ(1)はAErr0
(AErrM0とAErrm0)、PInc(PIncMとPIncm)及びNInc
(NIncMとNIncm)の値を次の式から計算する。
PInc=AErr=DX−s*DY−DY NInc=DX−s*DY (「*」は乗算記号) これらの値はレジスタ(210)〜(220)に夫々ロードさ
れる。Yminの値(第4図の場合には0)は、レジスタ
(222)にロードされる。レジスタ(210)、(212)及
び(222)は、MUX(246)を介して加算器(234)の1つ
の入力端に接続し、他方、レジスタ(214)〜(220)は
MUX(248)を介して加算器(234)の他方の入力端に接
続している。加算器(234)の出力はMUX(250)に入力
し、MUX(250)の出力は、レジスタ(210)、(212)及
び(222)に接続している。
XYアドレス発生器(2)が以上のように初期化される
と、ステート・マシン(12)はXYアドレス発生器を動作
状態に設定するので、XYアドレス発生器は計算ルーチン
と減算計数(カウント・ダウン)ルーチンを交互に実行
する。計算ルーチンが開始されると、ステート・マシン
(12)はAErrMiとAErrmiの符号ビットを検査する。ここ
で、iは0以上の整数であり、行の数値(Y座標)を表
す。計算ルーチンの第1クロック・サイクル期間中に、
加減算器(236)は、AErrMi<0か又はAErrMi>=0か
に応じて夫々sM又はsM+1をレジスタ(206)の値XMiに
加算して、XMi+1の値が得られる。ここで、XMi+1は
(i+1)番目の行と主側線の辺との正確な交点の値の
フロア値(その値を超えない最大の整数)である。同時
に、加算器(234)は、AErrM<0か又はAErrMi>=0か
に応じて、夫々NIncMか又はPIncMをレジスタ(210)の
値AErrMiに加算する。カウンタ(224)の計数値DYMがデ
クリメントされる。第2クロック・サイクル期間中に、
AErri、sm、PIncm及びNIncmの値に応じて、第1クロッ
ク・サイクルと同様の処理が実行され、Xmi+1及びAEr
rmi+1の値が求められ、計数値DYmの値がデクリメント
される。第3クロック・サイクル期間中に、レジスタ
(222)の値(現在のY座標)が加算器(234)によよっ
てインクリメントされ、値i+1が現在のYの値として
戻される。同時に、加減算器(236)によりXmi+1から
XMi+1が減算され、その差Hrzi+1がカウンタ(228)
にロードされる。Hrzi+1の値は、(i+1)番目の行
の上で、主側線の辺と副側線の辺の間にある格子点の数
か、或いはその数の補数を表す。どちらを表すかは、XM
i+1がXmi+1以下の値か又はXmi+1より大きいかに
よって決まる。レジスタ(206)及び(222)に記憶され
た値がラッチ(252)及び(254)にロードされる。こう
して計算ルーチンが完了し、XYアドレス発生器(2)
は、フレーム・バッファ(9)にアドレス・サイクルを
供給する。このアドレス・サイクルに於いて、ラッチ
(252)及び(254)内の値は、主側線ABCDと(i+1)
番目の行との正確な交点のフロア値の座標(XMi+1,i+
1)を表している。これらの値はビット0〜11及びビッ
ト12〜23のデータとしてローカル表示バスに供給され
る。1ビット・レジスタ(232)の値はビット27(ヘジ
テイト・ビット)の状態を決定し、カウンタ(228)の
符号ビットはビット26(方向ビット)の状態を決定す
る。その後、ステート・マシン(12)の制御によりXYア
ドレス発生器(2)は減算計数ルーチンを実行する。
減算計数ルーチン期間中では、カウンタ(228)の計数
値は、各クロック・サイクル毎にインクリメントされる
か又はデクリメントされる。そして、この計数値がイン
クリメントか又はデクリメントする毎にXYアドレス発生
器はデータ・サイクルを出力する。1つのデータ・サイ
クル中にローカル表示バス上に供給される輝度データの
値は、輝度信号発生器(図示せず)により決めることが
出来る。
フレーム・バッファ(9)にアドレス・サイクルが供給
されるということは、新しい行のタイリングが開始され
る直前を意味し、XMmin及び(i+1)の値がXアドレ
ス・カウンタ(92)及びYアドレス・カウンタ(94)に
夫々ロードされる。1ビット・レジスタ(232)によっ
て決まるビット27の値がステート・マシン(12)に供給
される。ビット26は1ビット・メモリ(96)にロードさ
れる。ビット26がセット状態ならば、タイリングが右か
ら左に向かって実行されている(即ち、XMi+1がXmi+
1より大きい。)ことを示している。そしてXアドレス
・カウンタ(92)は各データ・サイクル毎にデクリメン
トされる。ビット26がセット状態でなければ、タイリン
グが左から右方向に向かって実行されるので、Xアドレ
ス・カウンタ(92)は各データ・サイクル毎にインクリ
メントされる。ヘジテイト・ビット(ビット27)の値
は、第1データ・サイクル期間中に受けたデータ値がフ
レーム・メモリ(90)に書き込まれる前にXアドレス・
カウンタ(92)がインクリメント(又はデクリメント)
されるか否かを決定する。ビット27がセット状態でなけ
れば、フレーム・バッファ(9)がデータ・サイクル中
にXアドレス・カウンタ(92)の値はインクリメント
(デクリメント)される。そして、このデータ・サイク
ル上で入力されたデータ値が新しいアドレスの記憶位置
に書き込まれる。ビット27がセット状態ならば、フレー
ム・バッファ(9)が第1データ・サイクルの期間中に
Xアドレス・カウンタ(92)の値は変化せず、データ値
は元のアドレスの記憶位置に書き込まれる。これに続く
後のデータ・サイクル期間中にXアドレス・カウンタ
(92)はインクリメント(又はデクリメント)され、デ
ータ値は新しいアドレスの記憶位置に書き込まれる。第
4図の多角形の場合、ビット27はセット状態ではない。
Hrzi+1の数値は行(i+1)の中のタイリングされる
格子点の数であり、この場合タイリングは左から右方向
へ実行される。各クロック・サイクル毎にカウンタ(22
8)の計数値はデクリメントされる。
ビット27がセットされた場合、XMi+1がXmi+1の右側
あることになり、計数値Hrzi+1はタイリングされる格
子点の数の補数となり、タイリングは右から左方向へ実
行される。各クロック・サイクル毎にカウンタ(228)
の計数値がインクリメントされる。
カウンタ(228)が、減算計数期間に借り(borrow)状
態となるか、或いは加算計数期間に桁上げ(carry ou
t)状態になると、カウンタ(92)の計数値はXmi+1に
等しくなる。カウンタ(228)の計数値が、減算計数期
間に0に達するか、又は加算計数期間に−1に達する
と、行(i+1)のタイリングは完了し、何れの場合で
も、行(i+1)と左側線との正確な交点のフロア値に
1を加算した値から、同じ行と右側線との正確な交点の
フロア値までの格子点(両端の点を含む)がタイリング
される。その後、XYアドレス発生器(2)は、再び計算
ルーチンを実行し、XMi+1及びHrzi+1の値を戻して
カウンタ(222)の値(Y座標)がインクリメントされ
る。
レジスタ(224)及び(226)の内容DYM及びDYmは、計算
ルーチンの反復毎に第1及び第2クロック・サイクルで
夫々デクリメントされる。DYM及びDYmの値が0に達する
と、頂点に到達し、同じ側線上の次の辺に対応してDY、
PInc、NInc及びAErr0の値が新たに初期化される。その
後、XYアドレス発生器(2)は、 の行の処理に進む。
その後、XYアドレス発生器(2)は別の一連の計算ルー
チン及び減算計数ルーチンを交互に実行する。最後に、
Ymax−1の行に対応する各レジスタの値を用いて、XYア
ドレス発生器(2)は、Ymaxに対応するXM及びHrzの値
を発生する。このXMの値は、第4図の多角形の場合、頂
点DのX座標である。何故なら、頂点Dは格子点で、且
つ整数のフロア値はその整数値自身になるからである。
このHrzの値は、0になる。何故なら、2つの側線は行Y
max上で1つの頂点に結ばれているからである。多角形
が行Ymax上で辺を有する場合には、行Ymax上のHrzの値
は0にはならない。
各レジスタに順次設定される頂点の座標が単調増加であ
り、辺が交差しない限り、上記の動作手順を無制限に続
けても良い。
Hrzの値は、i=0に関して計算されないので、多角形
の最下端の行はタイリングされないことに留意すべきで
ある。しかし、多角形の最上端の行はタイリングされ
る。同様に、右側の側線(第4図ではAGFED)と各行と
の正確な交点の座標のフロア値に相当する格子点はタイ
リングされるが、左側の側線と各行との交点の座標のフ
ロア値に相当する格子点はタイリングされない。従っ
て、複数の多角形がモザイク状に隣接している場合に
は、2つの隣接する多角形の境界線上の格子点は唯1つ
の多角形の中にある点として処理される。
1本の走査線上に3本以上の辺を有する多角形をタイリ
ングするには、上記XYアドレス発生器を複数用いたり、
或いはレジスタ及びカウンタを追加して加算器及び加減
算器の時分割処理を行っても良い。例えば、第5図の多
角形ABCDEFGをタイリングする為には、第1のXYアドレ
ス発生器を用いて部分的多角形ABJGをタイリングする。
第1XYアドレス発生器によるタイリングが格子点Cを含
む行に達すると、第2XYアドレス発生器が部分的多角形C
HBのタイリングを開始し、他方第1XYアドレス発生器は
多角形ABJGのタイリングを継続すする。格子点Bを含む
行までタイリングが達すると、第1及び第2XYアドレス
発生器が夫々用いた辺GF及び辺CHに関するAErr、NInc及
びPIncの夫々の値を第1XYアドレス発生器が使用して、
第4図の場合と同様に残りの多角形HDEFJのタイリング
を続ける。
XYアドレス発生器(2)は、Z(深さ)アドレス発生器
及びI(輝度)アドレス発生器と共に使用しても良い。
これらZアドレス発生器及びIアドレス発生器は、本願
出願人による米国特許出願第113045号の明細書に詳細に
記載されている。
以上本発明の好適実施例について説明したが、本発明は
ここに説明した実施例のみに限定されるものではなく、
本発明の要旨を逸脱する事なく必要に応じて種々の変形
及び変更を実施し得る事は当業者には明らかである。特
に、本発明は、多角形の頂点が整数で表される格子点上
にある場合に限定されるものではない。多角形の頂点
は、任意の有理数で表される座標の点であっても構わな
い。
〔発明の効果〕
本発明のアドレス発生方法によれば、直線を表す各画素
に対応するアドレスを発生する際に、Xの変化量/Yの
変化量で表される直線の傾きのフロア値s及び(s+
1)の値を巧みに用い、AErriの各値に応じて、各Y座
標値に対応する行と上記直線との交点の正確なX座標の
フロア値を確実に求めることが出来る。また、1度求め
た傾きのフロア値(整数)を用いて計算しているので、
高速な演算が可能である。更に、このアルゴリズムを容
易に多角形のタイリング等の場合のアドレス発生方法に
応用し得る。
【図面の簡単な説明】
第1図は、長方形の格子配列と格子点を頂点とする四角
形を示す図、第2図は、コンピュータ・グラフィック・
システムの簡単なブロック図、第3図は、第2図のXYア
ドレス発生器の詳細なブロック図、第4図は、長方形格
子配列と格子点を頂点とする一般的な多角形を示す図、
第5図は、第4図に類似している別の多角形を示す図で
ある。 (1)はプロセッサ、(2)はXYアドレス発生器、
(9)はフレーム・バッファ・メモリ、(90)はフレー
ム・メモリ、(92)はXアドレス・カウンタ、(94)は
Yアドレス・カウンタである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ピータ・ビー・パーキンソン アメリカ合衆国 オレゴン州 97035 レ イク・オスウエゴ カー・パークウエイ・ アパートメント・シックスティワン 50

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】X座標(ピッチdX)及びY座標(ピッチd
    Y)で表される2次元画素配列のスクリーンを有する表
    示装置と、上記2次元画素配列に対応する2次元配列の
    アドレスを有するビットマップ・メモリとを備え、 初期値として上記2次元画素配列の上記X座標及び上記
    Y座標における基準位置を(X0,Y0)と定め、 上記基準位置(X0,Y0)に対して任意の第1変化分(e
    *dx,f*dy)だけ移動した第1位置(X0+e*dx,Y0+
    f*dy)を抽出し(ただし、e及びfは、有理数であ
    る。)、 上記基準位置(X0,Y0)に対して任意の第2変化分(p
    *dx,q*dy)だけ移動した第2位置(X0+p*dx,Y0+
    q*dy)を抽出し(ただし、p及びqは、有理数であ
    る。)、 上記有理数e,f,p及びqから、以下の式で定義される一
    定の初期値s,PInc及びNIncを求め、 s=floor〔(p−e)/(q−f)〕 PInc=(p−e)−s(q−f)−(q−f) NInc=(p−e)−s(q−f) (ただし、floor演算子はその値を越えない最大の整数
    を表す。) 上記初期値s,PInc及びNIncに基づいて以下の(イ)から
    (ニ)までの手順により上記第1位置及び上記第2位置
    間の画素に対応する上記メモリ手段のアドレスを順次発
    生するアドレス発生方法。 (イ)上記初期値PIncを、判断値AErriのうち添字iが
    0のAErr0に代入し、 (ロ)添字iが0からq−1までの各値に対して、上記
    判断値AErri≧0のとき、Xi+(s+1)dXを求めてXi
    +1に代入し、且つAErri+PIncを求めてAErri+1に代
    入し、 (ハ)上記判断値AErri<0のとき、Xi+sdXを求めてXi
    +1に代入し、且つAErri+NIncを求めてAErri+1に代
    入し、 (ニ)Yi+dYを求めてYi+1に代入し、上記画素におけ
    る座標位置(Xi+1+u*dX,Yi+1)に対応する上記
    メモリ手段のアドレス(但し、uは整数である。) を発生する。
  2. 【請求項2】X座標(ピッチdX)及びY座標(ピッチd
    Y)で表される2次元画素配列のスクリーンを有する表
    示装置と、上記2次元画素配列に対応する2次元配列の
    アドレスを有するメモリ手段とを備え、 初期値として上記2次元画素配列の上記X座標及び上記
    Y座標における第1基準位置を(XM0,Y0)、第2基準位
    置を(Xm0,Y0)と定め、 上記第1基準位置(XM0,Y0)に対する任意の第1変化分
    (eM*dx,f*dy)移動した第1位置(XM0+eM*dx,Y0+
    f*dy)を抽出した(ただし、eM及びfは、有理数であ
    る。)、 上記第1基準位置(XM0,Y0)に対する任意の第2変化分
    (pM*dx,q*dy)移動した第2位置(XM0+pM*dx,Y0+
    q*dy)を抽出し(ただし、pM及びqは、有理数であ
    る。)、 上記第2基準位置(Xm0,Y0)に対する上記第3変化分
    (em*dx,f*dy)移動した第3位置(Xm0+em*dx,Y0+
    f*dy)を抽出し(ただし、em及びfは、有理数であ
    る。)、 上記第2基準位置(Xm0,Y0)に対する上記第4変化分
    (pm*dx,q*dy)移動した第4位置(Xm0+pm*dx,Y0+
    q*dy)を抽出し(ただし、pm及びqは、有理数であ
    る。)、 上記第1位置及び第2位置を抽出したことより得られる
    値eM,f,pM及びqから、以下の式で定義れる一定の初期
    値sM,PIncM及びNIncMを求め、 sM=floor〔(pM−eM)/(q−f)〕 PIncM=(pM−eM)−sM(q−f)−(q−f) NIncM=(pM−eM)−sM(q−f) (ただし、floor演算子はその値を越えない最大の整数
    を表す。) 上記第3位置及び第4位置を抽出したことにより得られ
    る値em,f,pm及びqから、以下の式で定義される一定の
    初期値sm,PIncm及びNIncmを求め、 sm=floor〔(pm−em)/(q−f)〕 PIncm=(pm−em)−sm(q−f)−(q−f) NIncm=(pm−em)−sm(q−f) (ただし、floor演算子はその値を越えない最大の整数
    を表す。) 上記初期値sM,PIncM,NIncM,sm,PIncm及びNIncmに基づい
    て以下の(イ)から(ニ)までの手順により上記第1位
    置、上記第2位置、上記第3位置及び上記第4位置間の
    画素に対応する上記メモリ手段のアドレスを暫時発生す
    るアドレス発生方法。 (イ)上記初期値PIncMを、判断値AErrMiのうち添字i
    が0のAErrM0に代入し、上記初期値PIncmを、判断値AEr
    rmiのうち添字iが0のAErrm0に代入し、 (ロ)添字iが0からq−1までの各値に対して、上記
    判断値AErrMi≧0のとき、XMi+(sM+1)dXを求めてX
    Mi+1に代入し、且つAErrMi+PIncMを求めてAErrMi+
    1に代入し、上記判断値AErrMi<0のとき、XMi+sMdX
    を求めてXMi+1に代入し、且つAErrMi+NIncMを求めて
    AErrMi+1に代入し、 (ハ)添字iが0からq−1までの各値に対して、上記
    判断値AErrmi≧0のとき、Xmi+(sm+1)dXを求めてX
    mi+1に代入し、且つAErrmi+PIncmを求めてAErrmi+
    1に代入し、上記判断値AErrmi<0のとき、Xmi+smdX
    を求めてXmi+1に代入し、且つAErrmi+NIncmを求めて
    AErrmi+1に代入し、 (ニ)Yi+dYを求めてYi+1に代入し、発生するアドレ
    ス数Hrzi+1を以下の式により求め、 Hrzi+1=Xmi+1−XMi+1 座標位置(XMi+1+u*dX,Yi+1)から座標位置(Xm
    i+1+u*dX,Yi+1)までのアドレスを上記アドレス
    数Hrzi+1だけ順次発生する(但し、uは整数であ
    る。)。
JP26799288A 1987-10-26 1988-10-24 アドレス発生方法 Expired - Lifetime JPH0664617B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11303187A 1987-10-26 1987-10-26
US113,031 1987-10-26

Publications (2)

Publication Number Publication Date
JPH01147682A JPH01147682A (ja) 1989-06-09
JPH0664617B2 true JPH0664617B2 (ja) 1994-08-22

Family

ID=22347229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP26799288A Expired - Lifetime JPH0664617B2 (ja) 1987-10-26 1988-10-24 アドレス発生方法

Country Status (2)

Country Link
EP (1) EP0314367A3 (ja)
JP (1) JPH0664617B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667306A (en) * 1983-07-20 1987-05-19 Ramtek Corporation Method and apparatus for generating surface-fill vectors

Also Published As

Publication number Publication date
JPH01147682A (ja) 1989-06-09
EP0314367A2 (en) 1989-05-03
EP0314367A3 (en) 1991-01-23

Similar Documents

Publication Publication Date Title
JP2725062B2 (ja) 画像処理装置
KR910009101B1 (ko) 화상합성장치
US4967392A (en) Drawing processor for computer graphic system using a plurality of parallel processors which each handle a group of display screen scanlines
KR101349171B1 (ko) 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US5877769A (en) Image processing apparatus and method
JPH0724074B2 (ja) 画像シェーディング方法及び記憶装置ローディング方法
JPH03212775A (ja) アンチエイリアス多角形の描図方法及び装置
EP0995154A1 (en) Virtual address access to tiled surfaces
US4951230A (en) Method and apparatus for tiling an image
EP0314368B1 (en) Method and apparatus for hidden surface removal
JPH0935084A (ja) 画像情報処理装置及び画像情報処理方法
AU7802881A (en) Graphic and textual image generator for a raster scan display
JP3066596B2 (ja) アドレス変換装置
JPH0664617B2 (ja) アドレス発生方法
JP3501479B2 (ja) 画像処理装置
JP3701627B2 (ja) 描画処理プログラム、描画処理プログラムを記録した記録媒体、描画処理装置及び方法
JPH06223199A (ja) 画像合成装置
JPH07105404A (ja) 立体画像処理装置及びその処理方法
JP3688765B2 (ja) 描画方法およびグラフィックス装置
JP3129717B2 (ja) 画像処理装置および画像処理方法
JP3312560B2 (ja) テクスチャマッピング装置
JP3344675B2 (ja) 立体画像処理装置
JP3014395B2 (ja) 立体画像表示システム
JPH0350686A (ja) 図形処理方式
JP2766478B2 (ja) 画像処理システム