JP2001109457A - 画像処理方法および画像処理装置 - Google Patents
画像処理方法および画像処理装置Info
- Publication number
- JP2001109457A JP2001109457A JP29160899A JP29160899A JP2001109457A JP 2001109457 A JP2001109457 A JP 2001109457A JP 29160899 A JP29160899 A JP 29160899A JP 29160899 A JP29160899 A JP 29160899A JP 2001109457 A JP2001109457 A JP 2001109457A
- Authority
- JP
- Japan
- Prior art keywords
- coordinate value
- intersection
- deformation
- horizontal
- dda
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 105
- 230000008569 process Effects 0.000 claims description 100
- 238000004364 calculation method Methods 0.000 claims description 46
- 238000009825 accumulation Methods 0.000 claims description 16
- 238000003672 processing method Methods 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 4
- 230000001131 transforming effect Effects 0.000 claims description 4
- 230000002250 progressing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 15
- 238000009877 rendering Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
Abstract
の図形の各点に対応した変形前の図形上の点を求め、そ
の点に対応した画像データを用いて変形後の図形の描画
を行う。 【解決手段】 水平走査線を垂直方向に進めながら、い
わゆるDDAにより、変形後の図形の各辺との交点E、
Fの座標値を求め、これらの交点を結ぶ直線上の点Gに
対応した変形前の図形における点の座標値を求める。こ
の変形前の図形における点の座標値に対応した画像デー
タを画像メモリから読み出して、変形後の図形の点Gに
対応した画像データとしてフレームバッファに書き込
む。
Description
憶された図形の画像を変形して表示装置に表示するため
の画像処理方法および画像処理装置に関する。
リに記憶された各種の図形の画像データの中から1画面
を構成するのに必要な部品となる図形の画像データを読
み出し、これらの各画像データ毎に、各々の画面内での
位置に対応した書き込みアドレスを発生し、フレームバ
ッファにおける当該書き込みアドレスに対応したエリア
への書き込みを行うことにより画面の構成が行われる。
この画面構成の際に、画像メモリにおける当該図形の画
像データの読み出しアドレスやフレームバッファにおけ
る書き込みアドレスを制御することにより、画面内の図
形に回転、変形などを与えることが一般に行われてい
る。この種の技術は、2次元レンダリング技術と呼ばれ
ている。なお、この明細書では、説明の便宜上、「変
形」なる用語を通常の意味よりも広義に解し、通常の変
形の他に回転などをも含むものの総称として用いる。特
許請求の範囲における「変形」もこの広義の変形であ
る。
次元レンダリング技術は、変形後の図形の各位置を変形
前の図形の各位置に写像する変換用関数を求め、この変
換用関数を用いることにより、表示画面における変形後
の図形の各位置をこれに対応した変形前の図形の各位置
に変換し、これらの位置に対応した画像データを画像メ
モリから読み出すという手順により実施されるのが一般
的である。しかしながら、この2次元レンダリング技術
に用いる変換用関数は乗算や除算を含んでいる。従っ
て、2次元レンダリング技術に対応したVDPは、乗算
や除算を高速に実行する機能が求められ、VDP自体が
高価なものになってしまうという問題があった。
れたものであり、乗算処理や除算処理を行わずに図形を
変形した画像を生成することができる画像処理方法およ
びそのような画像処理方法を実施するための画像処理装
置を提供することを目的としている。
方法または画像処理装置は、画像メモリに記憶された図
形の画像データから当該図形を変形した図形の画像デー
タを生成してフレームバッファに格納する画像処理方法
において、水平走査線を垂直方向に単位量ずつ進めなが
ら、変形後の図形を囲む各辺のうちの2辺の各々につい
て、当該辺と前記水平走査線との交点の水平方向の座標
値をDDA処理により逐次求める変形後交点座標値算出
処理と、前記2辺の各々について、当該辺に対応した前
記変形前の図形の辺における前記交点に対応した点の水
平方向の座標値および垂直方向の座標値をDDA処理に
より逐次求める変形前交点座標値算出処理とを実行する
とともに、前記変形後交点座標値算出処理および前記変
形前交点座標値算出処理が1回実行されるのに合わせ
て、水平方向の座標値を前記変形後交点座標値算出処理
によって算出された一方の交点の水平方向の座標値から
他方の交点の水平方向の座標値に向けて単位量ずつ進め
ながら、前記一方の交点と他方の交点とを結ぶ水平線分
上における単位量ずつ離れた各点に対応した前記変形前
の図形上の各点の水平方向および垂直方向の座標値をD
DA処理により求める最終座標値算出処理と、前記変形
後交点座標値算出処理によって座標値が算出された前記
2つの交点間を結ぶ水平線分上の単位量ずつ離れた各点
について、前記変形前の図形の画像データのうち、前記
最終座標値算出処理によって算出された水平方向および
垂直方向の各座標値によって特定される位置の画像デー
タを前記画像メモリから読み出し、前記変形後の図形に
おける当該点に対応した画像データとして前記フレーム
バッファに書き込む画像データ転送処理とを実行するこ
とを特徴としている。
するため、実施の形態について説明する。かかる実施の
形態は、本発明の一態様を示すものであり、この発明を
限定するものではなく、本発明の範囲で任意に変更可能
である。 A.実施形態の構成 (1)動画表示システムの全体構成 図1はこの発明の一実施形態であるVDP100を用い
た動画表示システムの構成を示すブロック図である。
スプライトやパターンの画像データが格納されている。
ここで、スプライトとは、画面を移動するキャラクタな
どの画像である。本実施形態において用いられる各スプ
ライトはその外形が矩形である。これらの矩形のスプラ
イトの画像データが画像メモリ3に記憶されているので
ある。また、パターンは、これらのスプライトの背景と
して用いられる画像である。以上説明したスプライトお
よびパターンは、上述した画面の部品に相当するもので
ある。
プライトを配置したスプライト画面を作成するために使
用されるバッファである。VDP100は、画像メモリ
3内のスプライトやパターンの表示位置、表示態様、カ
ラー演算係数等の属性値を管理している。VDP100
は、フレーム毎に、これらのスプライトやパターンの属
性値を参照し、必要なスプライトやパターンを用いて1
画面分の画像データを構成し、この画像データを同期信
号に同期して表示装置2に供給する。また、VDP10
0は、CPU1からの要求に従い、スプライトやパター
ンの属性値を更新する。
メモリ3に記憶されたスプライトの画像データをそのま
まフレームバッファ4に書き込む他、このスプライトを
変形したものの画像データをフレームバッファ4に書き
込み、多様なスプライト画面を構成して表示することが
できる。
スプライトの表示例を示すものである。図2(a)にお
ける最も左上のスプライトは、画像メモリ3から読み出
され、何等回転や変形を加えることなく表示されたスプ
ライトである。図2(a)における他のスプライトは、
画像メモリ3に記憶された本来の画像を回転させた状態
で表示されている。図2(b)に示す例では、同一のス
プライトに対して異なった態様で変形を加え、各々を組
み合わせて表示することにより立体的な表現を行ってい
る。また、図2(c)に示す各例では、スプライトに対
して自由な変形が施されている。これらのスプライトの
変形は、VDP100がスプライトの画像データを画像
メモリ3からフレームバッファ4に移し替える際に行わ
れる。 (2)VDP100の構成 図3は、本実施形態に係るVDP100の構成を示すブ
ロック図である。なお、同図には、VDP100の構成
の理解を容易にするため、画像メモリ3およびフレーム
バッファ4が併せて図示されている。
るVDP100の構成について詳述する。
1から与えられる所定周波数のクロックを分周して水平
同期信号HSYNCおよび垂直同期信号VSYNCを生
成する回路である。これらの水平同期信号HSYNCお
よび垂直同期信号VSYNCは、VDP100の外部の
表示装置2に供給される。また、垂直同期信号VSYN
Cは、スプライト属性テーブルアドレスカウンタ103
にも供給される。
置2に表示すべき各スプライト毎に、スプライト名、表
示装置2における表示位置(X、Y座標値)など各種属
性値を記憶したテーブルである。これらの属性値の中に
は、スプライト画面を構成する際にスプライトに変形を
施す際に参照される各種の属性値がある。
し、このスプライトの変形に関連した各属性値について
説明する。
変形前のスプライトを例示するものである。また、図4
(b)は表示画面上における変形後のスプライトを例示
するものである。図4(a)および(b)に示すよう
に、スプライトは、4個の頂点を有する矩形である。以
下、これらの各頂点については、変形前のスプライトに
おいて左上の頂点から反時計廻りに頂点A、B、C、D
と呼ぶ。
挙すると次の通りである。 a.変形後のスプライトの4頂点の表示画面上での座標
値 図4(b)における頂点Aの座標値(DAX、DA
Y)、頂点Bの座標値(DBX、DBY)、頂点Cの座
標値(DCX、DCY)および頂点Dの座標値(DD
X、DDY)である。 b.変形後のスプライトを構成する各画素のY座標値の
最小値ymin 図4(b)に示す例では、頂点DのY座標値DDYがy
minとなる。 c.変形後のスプライトを構成する各画素のY座標値の
最大値ymax 図4(b)に示す例では、頂点BのY座標値DBYがy
maxとなる。 d.変形後のスプライトの4頂点のうち最も上方にある
頂点(すなわち、Y座標値が最も小さく、最初に描画対
象となる頂点)に対応した番号pn_min本実施形態
においてスプライトの頂点Aには頂点番号「0」、頂点
Bには頂点番号「1」、頂点Cには頂点番号「2」、頂
点Dには頂点番号「3」が各々付与されている。図4
(b)に示す例では、変形後のスプライトの各頂点のう
ち頂点Dが最も上の方(すなわち、Y座標値が最小)に
あるので、この頂点Dの頂点番号「3」がpn_min
として設定される。 e.変形後のスプライトの4頂点のうち最も下の方にあ
る頂点(すなわち、Y座標値が最も大きく、最後に描画
対象となる頂点)に対応した番号pn_max 図4(b)に示す例では、変形後のスプライトの頂点の
うち頂点Bが最も下の方にある(すなわち、Y座標値が
最大)ので、この頂点Bの頂点番号「1」がpn_ma
xとして設定される。f.変形前のスプライトのX方向
のサイズSZXおよびY方向のサイズSZYこれらの各
サイズの意味するところは、図4(a)から明らかであ
ろう。
である。
記憶内容は、CPU1が必要に応じて書き換える。
00が画像メモリ3から所望のスプライトまたはパター
ンの画像データを読み出す場合あるいはVDP100が
画像メモリ3に対してスプライトやパターンの画像を書
き込む場合に、VDP100と画像メモリ3との間の画
像データの引き渡しの制御を行う回路である。上述した
スプライト属性テーブル102から読み出されたスプラ
イト名は、このメモリインタフェース104を介するこ
とにより、アドレスデータとして画像メモリ3に供給さ
れる。この結果、当該スプライト名に対応したスプライ
トの画像データが画像メモリ3から読み出され、メモリ
インタフェース104を介してフレームバッファコント
ローラ105に供給される。
このようにして供給されるスプライトの画像データをフ
レームバッファ4に書き込み、1または複数のスプライ
トが配置された一画面分のスプライト画面の画像データ
をフレームバッファ4内に生成する。このスプライトの
画像データの書き込みの際、フレームバッファコントロ
ーラ105は、スプライト属性テーブル102から読み
出された属性値を参照し、必要に応じて特定の属性値を
自動生成し、このようにして得られる属性値に従ってス
プライトの画像データの書き込みアドレスの制御、画像
データそのものの加工を行う。なお、属性値の自動生成
の際には、関数テーブル106内に記憶された各種の周
期関数波形が参照される場合がある。
された属性値にスプライトの変形に関連する属性値が含
まれている場合、フレームバッファコントローラ105
は、2次元レンダリング処理を伴ったスプライト描画処
理を実行し、当該スプライトを変形したスプライトの画
像データをフレームバッファ4に格納する。
し、本実施形態における2次元レンダリング処理を伴っ
たスプライト描画処理の原理について説明する。
る水平線と、変形後のスプライトの左辺との交点Eの座
標値を(DEX、DEY)、右辺との交点Fの座標値を
(DFX、DFY)とすると、これらの各交点の座標値
は、以下の式により与えられる。 DEY=DGY ……(1) DEX=(DAX-DDX)×(DGY-DDY)/(DAY-DDY)+DDX ……(2) DFY=DGY ……(3) DFX=(DBX-DCX)×(DGY-DCY)/(DBY-DCY)+DCX ……(4) 一方、変形前のスプライトにおいて、変形後のスプライ
ト上の点E(DEX、DEY)およびF(DFX、DF
Y)に対応した点をeおよびfとすると、点eの座標値
(SEX、SEY)および点fの座標値(SFX、SF
Y)は、以下の式により与えられる。 SEY=0 ……(5) SEX=(0-SZX)×(DGY-DDY)/(DAY-DDY)+SZX ……(6) SFY=SZY ……(7) SFX=(0-SZX)×(DGY-DCY)/(DBY-DCY)+SZX ……(8) 次に、変形後のスプライトの上記水平線上の任意の点G
の座標値を(DGX、DGY)とし、この点Gに対応し
た変形前のスプライト上の点Gの座標値を(SGX、S
GY)とする。
EFと線分EGの長さの比は、変形後のスプライトにお
ける水平線分EFと水平線分EGの長さの比(DGX−
DEX)/(DFX−DEX)に等しい。このため、変
形前のスプライトにおいて、線分EGの長さは、線分E
Fの長さに比(DGX−DEX)/(DFX−DEX)
を乗じたものとなる。そして、変形前のスプライトにお
けるベクトルEFのY成分は(SFY−SEY)であ
り、ベクトルEGのY成分は(SGY−SEY)とな
る。変形前のスプライトにおいて、これらの各Y成分の
長さの比(SGY−SEY)/(SFY−SEY)は、
線分EGと線分EFの長さの比(DGX−DEX)/
(DFX−DEX)に等しい。また、変形前のスプライ
トにおけるベクトルEFのX成分は(SFX−SEX)
であり、ベクトルEGのX成分は(SGX−SEX)と
なる。これらの各X成分の長さの比(SGY−SEY)
/(SFY−SEY)も、上記各Y成分の長さの比と同
様、線分EGと線分EFの長さの比(DGX−DEX)
/(DFX−DEX)に等しくなる。
(1)〜(8)の演算を行って、各座標値DEX、DE
Y、DFX、DFY、SEX、SEY、SFXおよびS
FYを求め、これらの各座標値と、水平成分EF上の各
点GのX座標値DGXを式(9)および(10)に代入
すれば、これらの各点Gに対応した点gの座標値(SG
X、SGY)が得られることが分かる。
SGY)を求めるとすると、式(1)〜(10)から明
らかなように、乗算や除算を何回も繰り返さなければな
らず、演算処理能力の低いVDPだとそのような演算を
行うことは困難である。
ファコントローラ105は、いわゆるDDAアルゴリズ
ムに従い、乗算や除算を行うことなく、加減算のみを繰
り返すことにより上記DEX、DEY、DFX、DF
Y、SEX、SEY、SFX、SFY、SGXおよびS
GYを逐次求める。
(ここではxy座標系とする)において始点start
(xstart、ystart)から終点end(xe
nd、yend)に至る直線が与えられている場合に、
整数のx、y座標値に対応した複数の格子点であって、
この直線を近似する各格子点をystartからyen
dまで変化させながら逐次求めるアルゴリズムである。
ゴリズムは、始点startから終点endに至る直線
のx方向の変位とy方向の変位のどちらが大きいかによ
り異なっている。
し、始点startから終点endに至る直線のx方向
の変位がy方向の変位よりも大きい場合におけるDDA
アルゴリズムについて説明する。
start(xstart、ystart)から終点e
nd(xend、yend)に至る直線が描かれてい
る。この直線の勾配dx/dyは、 dx/dy =(|xend−xstart|+1)/(|yend
−ystart|+1) によって与えられる。
y座標値を「1」だけ変化させた場合におけるx座標の
変化量△xは次のようになる。
−ystart|+1) そこで、y座標値をystartから順次「1」ずつ増
加させつつ、その度に上記△xを順次累算し、累算結果
をx座標値とすると、始点startから終点endに
至る直線上の各点、すなわち、図5(a)においてプロ
ット“○”により表された各点のx、y座標値を求める
ことができる。
ものは、整数のx、y座標値に対応した格子点ではな
い。
△xを求める除算を行わなければならない。
(b)に示すようにy軸方向にmi=(|yend−y
start|+1)倍に引き伸ばす。
けるx軸方向の単位長「1」は、図5(b)ではmi=
(|yend−ystart|+1)の長さとなる。従
って、図5(b)では、x方向に沿って長さmi毎に、
図5(a)における格子点がある。
における△xは、図5(b)では次式により与えられる
mjとなる。
d−ystart|+1)}×(|yend−ysta
rt|+1) =|xend−xstart|+1 そして、DDAアルゴリズムでは、このようにx座標の
引き伸ばしが行われた図5(b)の2次元座標系におい
て、初期値x=xstart、y=ystartから以
下の操作を繰り返すことにより、始点startから終
点endに至る直線を近似する各格子点の位置を求め
る。 mjを累算する。 x座標値を「1」だけ増加させ、miの累算を行う。
これを、miの累算結果がmjの累算結果を越えるまで
繰り返す。 y座標値を「1」だけ増加させる。
y座標値に対応したmjの累算結果を表している。ま
た、図5(b)におけるプロット“×”は、各y座標値
において、上記の操作によりmiの累算結果がmjの
累算結果を越えたときのx座標値に対応した点である。
始点startから終点endに至る直線のx方向の変
位がy方向の変位よりも小さい場合におけるDDAアル
ゴリズムについて説明する。
start(xstart、ystart)から終点e
nd(xend、yend)に至る直線が描かれてい
る。この直線の勾配dy/dxは、 dy/dx =(|yend−ystart|+1)/(|xend
−xstart|+1) によって与えられる。
x座標値を「1」だけ変化させた場合におけるy座標値
の変化量△yは次のようになる。
−xstart|+1) そこで、x座標値をxstartから順次「1」ずつ増
加させつつ、その度に上記△yを順次累算し、累算結果
をy座標値とすると、始点startから終点endに
至る直線上の各点、すなわち、図6(a)においてプロ
ット“○”により表された各点のx、y座標値を求める
ことができる。
ものは、整数のx、y座標値に対応した格子点ではな
い。
△yを求める除算を行わなければならない。
(b)に示すようにy軸方向にmi=(|xend−x
start|+1)倍に引き伸ばす。
けるy軸方向の単位長「1」は、図6(b)ではmi=
(|xend−xstart|+1)の長さとなる。従
って、図6(b)では、y方向に沿って長さmi毎に、
図6(a)における格子点がある。
における△yは、図6(b)では次式により与えられる
mjとなる。
d−xstart|+1)}×(|xend−xsta
rt|+1) =|yend−ystart|+1 そして、DDAアルゴリズムでは、このようにy軸方向
の引き伸ばしが行われた図6(b)の2次元座標系にお
いて、初期値x=xstart、y=ystartから
以下の操作を繰り返すことにより、始点startから
終点endに至る直線を近似する各格子点の位置を求め
る。 mjを累算する。 miを累算する。 miの累算結果がmjの累算結果を越えたらx座標値
を「1」だけ増加させる。 y座標値を「1」だけ増加させる。
jの累算結果を越えたときのmiの累算結果を表してい
る。また、図6(b)におけるプロット“×”は、各x
座標値において、上記の操作によりmiの累算結果が
mjの累算結果を越えたときのy座標値に対応した点で
ある。
乗算や除算を実行することなく、加減算のみを繰り返す
ことにより、2次元座標系における始点start(x
start、ystart)から終点end(xen
d、yend)に至る直線を近似する各格子点の座標値
を求めることができる。
上記DEX、DEY、DFX、DFY、SEX、SE
Y、SFX、SFY、SGXおよびSGYの各点につい
て、それらの各点が属する直線の始点start(xs
tart、ystart)と終点end(xend、y
end)とを指定して上記DDAアルゴリズムを実行す
ることにより、それらの各点のx、y座標値を演算する
のである。
以上説明したDDAアルゴリズムを含むスプライト描画
処理により、変形後のスプライトの水平走査線上の各点
Gに対応した変形前のスプライト上の点gの座標値(S
GX、SGY)を求め、この座標値に対応した画像デー
タを画像メモリ3から読み出してフレームバッファ4に
格納する。このようになスプライト描画処理により、フ
レームバッファ4内に変形後のスプライトの画像データ
が格納されることとなる。
データが書き込まれると、フレームバッファコントロー
ラ105は、このスプライト画面の画像データをフレー
ムバッファ4から読み出して表示データコントローラ1
08に供給する。このフレームバッファコントローラ1
05による1画面分のスプライト画面の画像データの作
成および表示データコントローラ108への供給は、各
フレーム毎に行われる。
像メモリ3から背景画面を構成するためのパターンの画
像データを読み出すために、各画像データの読み出しア
ドレスを生成し、メモリインタフェース104に送る。
メモリインタフェース104は、読み出しアドレスを画
像メモリ3に供給し、これにより画像メモリ3から読み
出されるパターンの画像データを表示データコントロー
ラ108に供給する。
アドレスジェネレータ107によって画像メモリ3から
読み出されたパターンの画像データを用いて背景画面の
画像データを構成する。また、表示データコントローラ
108は、このようにして得られた背景画面の画像デー
タに対して、フレームバッファ4から読み出されるスプ
ライト画面の画像データを重ね書きし、表示用画面の画
像データを生成する。このようにして得られた画像デー
タは、そのままデジタル画像信号DRGBとして、ある
いはD/A変換器109によってアナログ画像信号RG
Bに変換されて、表示装置2に供給される。
とこのVDP100内の各部との間の情報の引き渡しの
制御をするための回路である。例えばCPU1は、この
CPUインタフェース110を介することにより、スプ
ライト属性テーブル102の任意のスプライトに対応し
た属性値を書き換えることができる。
細である。B.実施形態の動作以下、図4(b)に示す
ようにスプライトの表示を行う場合を例に挙げ、本実施
形態の動作を説明する。
ムバッファコントローラ105がスプライトの画像デー
タをフレームバッファ4に格納することによりスプライ
ト画面が構成されるが、その際にスプライトに変形を加
える場合には、フレームバッファコントローラ105に
より、図7にフローを示すスプライト描画処理が実行さ
れる。
ムバッファコントローラ105は、まず、当該スプライ
トの属性値をスプライト属性テーブル102から取得す
る(ステップS1)。
は、図8にフローを示すライン番号初期値取得処理ルー
チンを実行する(ステップS2)。このライン番号初期
値取得処理ルーチンは、水平走査線を下方に移動してい
った場合において、水平走査線が最初に交差することと
なる変形後のスプライトの2辺を求めるルーチンであ
る。
おいて、フレームバッファコントローラ105は、ま
ず、属性値pn_minの内容が「0」〜「3」のいず
れかか、すなわち、変形後のスプライトにおいて最も上
の方にある頂点がA〜Dのいずれかを判定する(ステッ
プS101)。図4(b)に示すように、変形後のスプ
ライトにおいて頂点Dが最も上の方にある場合には、p
n_min=「3」となっているため、このステップS
101からステップS140に進み、ステップS140
〜S144の処理を実行する。
テップS101において判定した最も上の方にある頂点
に対応したライン番号の設定処理を行う。このライン番
号の設定処理について詳述すると次の通りである。
に、スプライトの辺ABにはライン番号「0」、辺BC
にはライン番号「1」、辺CDには「2」、辺DAには
ライン番号「3」が各々付与されている。
上の方にある場合、通常は図10(d)に示すように、
頂点Dの左側には辺DA(ライン番号「3」)が、頂点
Dの右側には辺CD(ライン番号「2」)がある。従っ
て、水平走査線を上方から下方に移動した場合におい
て、この水平走査線は頂点Dを通過した後、これらの辺
DAおよび辺CDと最初に交差することとなる。
線が最初に交差する2辺のうち左側の辺のライン番号l
n_leftを「3」とし、右側の辺のライン番号ln
_rightを「2」とするのである。
変形後のスプライトの頂点Dと頂点Aとが同じ水平走査
線上に位置しており、DAY=DDYとなっている場合
があり得る。このような場合、水平走査線が頂点Dを通
過した後、最初に交差する2辺は、辺ABと辺CDにな
る。そこで、水平走査線が最初に交差する2辺のうち左
側の辺のライン番号ln_leftを「3」から「0」
に変更する(ステップS141、S142)。
後のスプライトの頂点Dと頂点Cとが同じ水平走査線上
に位置しており、DCY=DDYとなっている場合があ
り得る。このような場合、水平走査線が頂点Dを通過し
た後、最初に交差する2辺は、辺DAと辺BCになる。
そこで、水平走査線が最初に交差する2辺のうち右側の
辺のライン番号ln_rightを「2」から「1」に
変更する(ステップS143、S144)。
が最も上の方にある場合に実行されるライン番号設定処
理(ステップS140〜S144)の詳細である。
方にある頂点がAである場合にはステップS110〜S
114のライン番号設定処理が、Bである場合にはステ
ップS120〜S124のライン番号設定処理が、Cで
ある場合にはステップS130〜S134のライン番号
設定処理が実行されることとなる。これらの各場合にお
けるライン番号設定処理の内容は、図10(a)(a
1)(a2)〜(c)(c1)(c2)に示す通りであ
る。
おいて実行されるライン番号初期値取得処理ルーチンの
詳細である。
を行う。このDDA初期化処理では、DDAの実行に先
立つ初期設定を行う。
においてDDAによりDEX、DFX、SEX、SE
Y、SFXおよびSFYの各座標値を逐次演算し、後述
するステップS15においてDDAによりSGXおよび
SGYの各座標値を逐次演算する。
チンとして、DEX、DFX、SEX、SEY、SF
X、SFY、SGXおよびSGYの各座標値に対応した
8個のサブルーチンが用いられる。これらのサブルーチ
ンは、同一アルゴリズムによるものであるが、座標値の
逐次演算のために使用する各種の変数を各座標値毎に区
別する必要があるため、座標値の種類毎に設けられてい
る。なお、DDAを実行するためのサブルーチンについ
ては後述する。
テップS22において行われるDEX、DFX、SE
X、SEY、SFXおよびSFYの各座標値に対応した
6種類のDDAにおいて用いられる各変数が初期化の対
象となる。
DDA初期化ルーチンの処理内容を示すフローチャート
である。このDDA初期化ルーチンも、DDAを実行す
るためのルーチンと同様、DEX、DFX、SEX、S
EY、SFX、SFY、SGXおよびSGYの各座標値
に対応した8個のものが用意されている。ステップS3
では、これらのうち6個のDDA初期化ルーチンを実行
する。
は、引数として、始点startの座標値xstart
およびystartと、終点endの座標値xendお
よびyendとを与える必要がある。図12は、ステッ
プS3において座標値DEX、DFX、SEX、SE
X、SFXおよびSFYの各々に対応したDDA初期化
ルーチンを実行する際に、xstart、ystar
t、xendおよびyendとして与える各情報の一覧
を示すものである。この図12に示すように、各引数と
して与えられる情報は、いずれの座標値に対応したDD
A初期化ルーチンであるかと、ライン番号ln_lef
tおよびln_rightの内容により異なっている。
図4(b)に示す変形後のスプライトの描画を行う場
合、ライン番号ln_leftは「3」、ライン番号l
n_rightは「2」となる。従って、この場合に
は、図12におけるln_left=「3」に対応した
エリアに示される条件に従って、DEX、SEXおよび
SEYに対応した各DDA初期化ルーチンの引数の設定
が行われ、ln_rightは「2」に対応したエリア
に示される条件に従って、DFX、SFXおよびSFY
に対応した各DDA初期化ルーチンの引数の設定が行わ
れる。
す変形後のスプライトの描画を行う場合、ステップS3
において各DDA初期化ルーチンに引数として設定され
る始点startおよび終点endの各x、y座標値を
示すものであある。
X、DFX、SEX、SEX、SFXおよびSFYの各
々に対応したDDA初期化ルーチンを実行する際に、図
13(a)〜(f)に示す引数の設定を行う理由につい
ては、これらに対応したDDAを実行するステップS2
2の説明の際に併せて説明する。
を例に、図11のフローに示されるDDA初期化ルーチ
ンの処理内容を説明する。図4(b)に示す変形後のス
プライトの描画を行う場合、引数xstart、yst
art、xendおよびyendとして、DDX、DD
Y、DAXおよびDAYが設定される(図10において
ln_left=「3」におけるDEXに対応したエリ
アを参照)。
に従い、DEXに対応したDDA初期化処理が行われ
る。
rtの内容、すなわち、この場合においては図4(b)
における頂点DのX座標値DDXを変数dxに、DDA
の対象であるDEXの初期値として設定する。
−xstartの絶対値がyend−ystartの絶
対値よりも小さいか否かを判断する。このステップS2
02は、2次元座標系において始点(xstart、y
start)から終点(xend、yend)に至る線
分の勾配の絶対値が1より大きいか否かを判定するもの
である。
点Aに至る線分の勾配は「1」より大きく、xend−
xstart=DDX−DAXの絶対値は、yend−
ystart=DDY−DAYの絶対値よりも小さい。
「YES」となり、ステップS203に進む。そして、
ステップS203では、フラグmajに“1”を設定
し、yend−ystart(この例ではDDY−DA
Y)の絶対値に「1」を加えたものをmjに設定し、x
end−xstart(この例ではDDX−DAX)の
絶対値に「1」を加えたものをmiに設定する。これら
のmjおよびmiは、後述するステップS22において
DEXに対応したDDAを実行する際に用いられる変数
であり、その用途については既に図5を参照して概略説
明した通りである。
xstartが0より大きいか否か、すなわち、始点
(xstart、ystart)から見て終点(xen
d、yend)が右側(X座標値が大きくなる方向)に
あるか否かを判断する。
て終点Aは左側にあり、xend−xstart=DD
X−DAXは負である。従って、ステップS205の判
断結果は「NO」となり、ステップS207に進む。そ
して、ステップS207では、フラグdixに“1”を
設定する。
ystartが0より大きいか否か、すなわち、始点
(xstart、ystart)から見て終点(xen
d、yend)が下方(Y座標値が大きくなる方向)に
あるか否かを判断する。
て終点Aは下側にあり、yend−ystart=DA
Y−DDYは正である。従って、ステップS208の判
断結果は「YES」となり、ステップS209に進む。
そして、ステップS209では、フラグdiyに“0”
を設定する。
ジスタaccに設定し、図5に示すスプライト描画ルー
チンに戻る。
の実行例である。この実行例における初期設定の結果を
一覧にまとめると次のようになる。 dx=DDX(DDAの対象であるDEXの初期値) (ステップS201) maj=“1” (ステップS203) mj=|DAY−DDY|+1 (ステップS203) mi=|DAX−DDX|+1 (ステップS203) dix=“1” (ステップS207) diy=“0” (ステップS209) acc=−mj (ステップS211) なお、以上の実行例では説明しなかったが、図11に示
すフローにおいて、ステップS202の判断結果が「N
O」である場合には、maj=0、mj=|xend−
xstart|+1およびmi=|yend−ysta
rt|+1なる初期設定が行われ(ステップS20
4)、ステップS205の判断結果が「YES」である
場合にはdix=“0”なる初期設定が行われ(ステッ
プS206)、ステップS208の判断結果が「NO」
である場合にはdiy=“1”なる初期設定が行われる
(ステップS210)。
XおよびSFYに対応したDDA初期化ルーチンも同様
であり、図13(b)〜(f)に示すように各引数の設
定が行われてから実行される。
ることにより、後述するステップS22において実行さ
れるDEX、SEX、SEY、DFX、SFXおよびS
FYに対応した各DDAにおける変数dx、maj、m
i、mj、acc、dix、diyの初期設定が完了す
る。
Y、DFX、SFXおよびSFYの各初期値(DDA初
期化ルーチンにおける変数dx)は次のようになってい
る。 DEX=DDX SEX=SZX SEY=0 DFX=DDX SFX=SZX SFY=SZY これらの初期値は、引数xstartとしてDEX、S
EX、SEY、DFX、SFXおよびSFXに対応した
各DDA初期化ルーチンに引き渡され、DDA初期化ル
ーチンにおける変数dxに設定されたものである(図1
1におけるステップS201参照)。
むと、図14にフローを示すymin、ymax取得ル
ーチンを実行する。
の描画を開始するときの水平走査線のY座標値、yma
xは、変形後のスプライトの描画を終了するときの水平
走査線のY座標値である。すなわち、yminおよびy
maxは、変形後のスプライトのY軸方向における描画
範囲を定めるものである。
ax取得ルーチンでは、次のように、pn_minの値
に応じてyminを設定し(ステップS300〜S30
4)、pn_maxの値に応じてymaxを設定する
(ステップS310〜S314)。 pn_min=「0」 → ymin=DAY pn_min=「1」 → ymin=DBY pn_min=「2」 → ymin=DCY pn_min=「3」 → ymin=DDY pn_max=「0」 → ymax=DAY pn_max=「1」 → ymax=DBY pn_max=「2」 → ymax=DCY pn_max=「3」 → ymax=DDY このような設定が妥当であることは、図9を参照すれば
明らかである。
行が終了すると、図7におけるステップS5に進み、描
画(フレームバッファへの画像データの書き込み)を行
う水平走査線のY座標値をyminに設定する。そし
て、ステップS11〜S23の処理を、Yを「1」ずつ
インクリメントしながら(ステップS24)、Y=ym
axとなるまで実行する(ステップS23)。
数の設定を行って、座標値SGX、SGYに対応した各
DDA初期化ルーチンを実行する。 <SGXに対応したDDA初期化ルーチンへの引数の設
定> xstart=SEX ystart=DEX xend=SFX yend=DFX <SGYに対応したDDA初期化ルーチンへの引数の設
定> xstart=SEY ystart=DEX xend=SFY yend=DFX ここで、図4(b)に示す変形後のスプライトの描画を
行う場合、スプライト描画処理の開始後、最初にステッ
プS11に進んだときには、上記DEX等はステップS
3における初期化により次のような内容になっている。 DEX=DDX SEX=SZX SEY=0 DFX=DDX SFX=SZX SFY=SZY 従って、このときにおける各DDA初期化ルーチンの引
数は次のように設定される。 <SGXに対応したDDA初期化ルーチンへの第1回目
の引数設定> xstart=SEX=SZX ystart=DEX=DDX xend=SFX=SZX yend=DFX=DDX <SGYに対応したDDA初期化ルーチンへの第1回目
の引数設定> xstart=SEY=0 ystart=DEX=DDX xend=SFY=SZY yend=DFX=DDX 次にステップS12に進み、描画位置のX座標値とし
て、その時点におけるDEXを設定する。ここで、図4
(b)に示すスプライトの描画を行う場合において最初
にステップS12に進んだときには、上記ステップS3
における初期化により、DEX=DDXとなっている。
従って、最初はDDXがXに設定されることとなる。
スプライトにおける座標値SGXおよびSGYに対応し
た部分の画像データを画像メモリ3から読み出す。ここ
で、図4(b)に示すスプライトの描画を行う場合にお
いて最初にステップS13に進んだときには、SGX=
SZX、SGY=0となっている。
13において読み出した座標値SGXおよびSGYに対
応した部分の画像データを座標値X、Yに対応した画像
データとしてフレームバッファ4に書き込む。ここで、
図4(b)に示すスプライトの描画を行う場合において
最初にステップS14に進んだときには、SGX=SZ
X、SGY=0に対応した点、すなわち、図4(a)に
おける頂点Dに対応した画像データが、X=DEX=D
DX、Y=ymin=DDYに対応した点、すなわち、
図4(b)における頂点Dの画像データとしてフレーム
バッファ4に書き込まれることとなる。
応したDDAおよびSGYに対応したDDAを実行す
る。ここで、図4(b)に示すスプライトの描画を行う
場合において最初にステップS15に進んだときには、
SGXおよびSGYは、いずれもxstartとxen
dおよびystartとyendが一致しているため、
SGXおよびSGYについてのDDAは行われない。
か否かを判断する。ここで、図4(b)に示すスプライ
トの描画を行う場合において最初にステップS14に進
んだときには、X=DEX=DFXとなっている。従っ
て、この場合にはステップS16の判断結果が「YE
S」となってステップS18に進む。
行により頂点Dの左側の辺に沿って進む点Eが、その辺
の終点である頂点(図4(b)の例では頂点A)に到達
したか否かを判断する。この判断結果が「NO」である
場合にはステップS20に進む。
行により頂点Dの右側の辺に沿って進む点Fが、その辺
の終点である頂点(図4(b)の例では頂点C)に到達
したか否かを判断する。この判断結果が「NO」である
場合にはステップS22に進む。
X、SEX、SEY、SFXおよびSFYについて各々
DDAを実行する。このDDAを実行するためのルーチ
ンのフローは図15に示す通りである。
順次インクリメント(ステップS24)して点Eを始点
D(DDX、DDY)から終点A(DAX、DAY)に
向けて移動させたときの当該点EのX座標値DEXを求
める。このDDAを行うために、既に説明したステップ
S3では、始点D(DDX、DDY)および終点A(D
AX、DAY)の各x、y座標値を引数xstart、
ystart、xendおよびyendとして設定し、
DEXに対応したDDA初期化ルーチンを実行した(図
13(a)参照)。このDDA初期化ルーチンの実行に
より、DDAにおいて用いられる各変数は次のように初
期設定されている。 dx=DDX(DDAの対象であるDEXの初期値) maj=“1” mj=|DAY−DDY|+1 mi=|DAX−DDX|+1 dix=“1” diy=“0” acc=−mj 以下、図15を参照し、この初期設定の下で実行される
DEXについてのDDAの処理内容を説明する。
“0”か否かを判断する。
ことから、ステップS401の判断結果は「NO」とな
って、ステップS402に進む。
miを加えたものをaccに格納する。すなわち、mi
の累算を行う。
0であるか否かを判断する。
処理ルーチンを終了し、図7に示すスプライト描画処理
に戻る。
と、Y座標値が「1」だけインクリメントされ(ステッ
プS24)、ステップS11〜S20を経た後、ステッ
プS22において、再びDEXについてのDDAが実行
される。
ら、ステップS401からステップS402に進み、a
ccにmiを加えたものをaccに格納する。
(ステップS403)、この判断結果が「NO」である
場合にはスプライト描画処理に戻る。
ついてのDDAが実行される毎に、DEXに対応したd
xを変化させずにaccに対するmiの加算が行われ、
その都度、Y座標値が「1」ずつインクリメントされ
る。
時、acc≧0となると、ステップS403の判断結果
が「YES」となり、ステップS404に進む。
らmjを減算したものをaccに格納する。すなわち、
−mjの累算を行うのである。
ップS405に進み、dix=“0”か否かを判断す
る。
ことから、ステップS405の判断結果は「NO」とな
って、ステップS406に進む。
対応したdxの内容を「1」だけ減らす。
に示すスプライト描画処理に戻る。そして、スプライト
描画処理に戻ると、Y座標値が「1」だけインクリメン
トされ(ステップS24)、ステップS11〜S20を
経た後、ステップS22において、再びDEXについて
のDDAが実行されるのである。
を行いつつDEXについてのDDAが実行され、このD
DAでは、accに対するmiの加算が行われ、acc
<0である間はDEXに対応したdxを変化させず、a
cc≧0となったときには、accからmjが減じられ
るのである。
DDAが実行されたときのacc、dxの内容の推移を
例示したものである。この例では、次のような処理が行
われている。 まず、ステップS3における初期設定により、acc
には−mjが設定されている。 その後、最初にステップS22に進んだとき、DEX
についてのDDAでは、accにmiが加算されるが
(ステップS402)、加算後のaccは0より小さい
ので、dxは変化しない。 次にステップS22に進んだとき、DEXについての
DDAでは、accにmiが加算されるが(ステップS
402)、加算後のaccは0より小さいので、dxは
変化しない。 次にステップS22に進んだとき、DEXについての
DDAにおいてaccにmiが加算された結果、加算後
のaccが0以上になる。 この結果、accに対し、−mjが加算される。 また、dxが「1」だけ減じられる(ステップS40
6)。
(b)を参照して説明したDDAが進められ、Y座標値
のインクリメントに伴って、始点D(DDX、DDY)
から終点A(DAX、DAY)に向かって移動する点E
のX座標値DEXが逐次求められるのである。
FXについてのDDAについて説明する。このDFXに
ついてのDDAでは、Y座標値を順次インクリメント
(ステップS24)して点Fを始点D(DDX、DD
Y)から終点C(DCX、DCY)に向けて移動させた
ときの当該点FのX座標値DFXを求める。このDDA
を行うために、既に説明したステップS3では、始点D
(DDX、DDY)および終点C(DCX、DCY)の
各x、y座標値を引数xstart、ystart、x
endおよびyendとして設定し、DFXに対応した
DDA初期化ルーチンを実行した(図13(c)参
照)。このDDA初期化ルーチンの実行により、DDA
において用いられる各変数は次のように初期設定されて
いる。 dx=DDX(DDAの対象であるDFXの初期値) maj=“0” mi=|DCY−DDY|+1 mj=|DCX−DDX|+1 dix=“0” diy=“0” acc=−mj 以下、図15を参照し、この初期設定の下で実行される
DFXについてのDDAの処理内容を説明する。
“0”か否かを判断する。
ことから、ステップS401の判断結果は「YES」と
なって、ステップS411に進む。
“0”か否かを判断する。この場合、dix=“0”で
あることからステップS411の判断結果は「YES」
となってステップS412に進む。次にステップS41
2に進むと、DFXに対応したdxを「1」だけ増加さ
せる。このステップS412が終了すると、ステップS
414に進み、accにmiを加えて、その結果をac
cに格納する。すなわち、miの累算を行うのである。
このステップS414が終了すると、ステップS415
に進み、acc≧0となったか否かを判断する。この判
断結果が「NO」である場合には、ステップS411に
戻り、dxのインクリメント(ステップS412)、a
ccによるmiの累算(ステップS414)を繰り返
す。
15の判断結果が「YES」になると、ステップS41
6に進み、accからmjを減じる。そして、図7に示
すスプライト描画処理に戻る。このようにしてスプライ
ト描画処理に戻ると、Y座標値が「1」だけインクリメ
ントされ(ステップS24)、ステップS11〜S20
を経た後、ステップS22において、再びDFXについ
てのDDAが実行される。
を行いつつDFXについてのDDAが実行され、このD
DAでは、acc≧0となるまで、dxのインクリメン
ト(ステップS412)およびaccに対するmiの加
算(ステップS414)が行われ、acc≧0となった
ときには、accからmjが減じられるのである(ステ
ップS416)。
DDAが実行されたときのacc、dxの内容の推移を
例示したものである。この例では、次のような処理が行
われている。 まず、ステップS3における初期設定により、acc
には−mjが設定されている。 その後、最初にステップS22に進んだとき、DFX
についてのDDAでは、DFXに対応したdxのインク
リメント(ステップS412)およびaccに対するm
iの加算(ステップS414)が、acc≧0となるま
で繰り返される。 そして、acc≧0となると、accに対して−mj
が加算され(ステップS416)、スプライト描画処理
に戻ってY座標値がインクリメントされる(ステップS
24)。
(b)を参照して説明したDDAが進められ、Y座標値
のインクリメントに伴って、始点D(DDX、DDY)
から終点C(DCX、DCY)に向かって移動する点F
のX座標値DFXが逐次求められるのである。
行例では説明しなかったが、図15に示すフローにおい
て、ステップS402の判断結果が「YES」である場
合には、dxを「1」だけインクリメントし(ステップ
S407)、スプライト描画処理に戻る。ステップS4
05の判断結果が「NO」である場合、終点は始点から
みて右側、すなわち、X座標値が大きい側にあるからで
ある。また、ステップS411の判断結果が「NO」で
ある場合には、dxを「1」だけデクリメントし(ステ
ップS413)、ステップS415に進む。ステップS
412の判断結果が「NO」である場合、終点は始点か
らみて左側、すなわち、X座標値が小さい側にあるから
である。
以上説明したDEX、DFXについてのDDAの他、S
EX、SEY、SFXおよびSFYについて各々DDA
を実行する。これらのDDAの実行態様は、DEX、D
FXについてのDDAと同様であるので、その具体的な
処理内容の説明は省略する。ここでは、図4(a)およ
び(b)、図13(a)〜(f)を参照し、これらのD
DAによって何が求められるかを説明する。
では、図4(a)において変形前のスプライトの頂点D
から頂点Aに向けて移動する点EのX座標値SEXを求
める。ここで、変形前のスプライトにおける点Eは、変
形後のスプライトの点Eに対応している。従って、変形
後のスプライトにおいて点Eが頂点Dから頂点Aに移動
する間、変形前のスプライトにおいても点Eが頂点Dか
ら頂点Aに移動する。そこで、本実施形態では、変形後
のスプライトの頂点Dから頂点Aに向けて点Eを移動さ
せたときの当該点EのX座標値DEXをDDAにより逐
次演算する間、これと同期して、変形前のスプライトの
頂点Dから頂点Aに向けて点Eを移動させたときの当該
点Eの座標値SEXおよびSEYをDDAにより逐次演
算する。
は、ステップS3により次のような初期設定がなされて
いる(図13(b)参照)。 xstart=SZX ystart=DDY xend=0 yend=DAY このため、SEXについてのDDAは、Y座標値がys
tart=DDYからyend=DAYまで移動する期
間を要して、dx=SEXがSZXから「0」まで直線
的に変化することとなる(厳密には、dxは整数値しか
とらないので、時間経過(ステップS22の実行回数)
に対して階段状に変化する)。
からyend=DAYまで移動する期間、上述したDE
XについてのDDAにより、変形後のスプライトの頂点
Dから頂点Aに向かって進む点EのX座標値DEXが求
められる。
ついてのDDAと同じ期間を要し、同じY座標値の範囲
内において行われる。
て、変形後のスプライトの頂点EのX座標値が求められ
るとき、SEXについてのDDAでは、変形後のスプラ
イトの頂点Eに対応した変形前のスプライトの頂点Eの
X座標値SEXが求められるのである。
は、ステップS3により次のような初期設定がなされて
いる(図13(c)参照)。 xstart=0 ystart=DDY xend=0 yend=DAY このため、SEYについてのDDAでは、Y座標値がy
start=DDYからyend=DAYまで移動する
期間、dx=SEYについては変化させず「0」に保
つ。
XについてのDDAと同じ期間を要し、同じY座標値の
範囲内において行われる。
て、変形後のスプライトの頂点EのX座標値が求められ
るとき、SEXについてのDDAでは、変形後のスプラ
イトの頂点Eに対応した変形前のスプライトの頂点Eの
X座標値SEY=0が常に求められることとなる。
では、図4(a)において変形前のスプライトの頂点D
から頂点Cに向けて移動する点FのX座標値SFXを求
める。ここで、変形前のスプライトにおける点Fは、変
形後のスプライトの点Fに対応している。従って、変形
後のスプライトにおいて点Fが頂点Dから頂点Cに移動
する間、変形前のスプライトにおいても点Eが頂点Dか
ら頂点Cに移動する。そこで、本実施形態では、変形後
のスプライトの頂点Dから頂点Cに向けて点Fを移動さ
せたときの当該点Fの座標値DFXをDDAにより逐次
演算する間、これと同期して、変形前のスプライトの頂
点Dから頂点Cに向けて点Fを移動させたときの当該点
Fの座標値SFXおよびSFYをDDAにより逐次演算
する。
は、ステップS3により次のような初期設定がなされて
いる(図13(e)参照)。 xstart=SZX ystart=DDY xend=SZX yend=DCY このため、SFXについてのDDAでは、Y座標値がy
start=DDYからyend=DCYまで移動する
期間、dx=SFYについては変化させずSZXに保
つ。
XについてのDDAと同じ期間を要し、同じY座標値の
範囲内において行われる。
て、変形後のスプライトの点FのX座標値が求められる
とき、SFXについてのDDAでは、当該点Fに対応し
た変形前のスプライトの点FのX座標値SFX=SZX
が常に求められることとなる。
は、ステップS3により次のような初期設定がなされて
いる(図13(f)参照)。 xstart=0 ystart=DDY xend=SZY yend=DCY このため、SFYについてのDDAは、Y座標値がys
tart=DDYからyend=DCYまで移動する期
間を要して、dx=SFYが「0」からSZYまで直線
的に変化することとなる(厳密には、dxは整数値しか
とらないので、時間経過(ステップS22の実行回数)
に対して階段状に変化する)。
からyend=DCYまで移動する期間、上述したDF
XについてのDDAにより、変形後のスプライトの頂点
Dから頂点Aに向かって進む点FのX座標値DFXが求
められる。
ついてのDDAと同じ期間を要し、同じY座標値の範囲
内において行われる。
て、変形後のスプライトの頂点FのX座標値が求められ
るとき、SFYについてのDDAでは、当該点Fに対応
した変形前のスプライトの点EのY座標値SFYが求め
られるのである。
DEX、DFX、SEX、SEY、SFXおよびSFY
についての各DDAの処理内容である。
このステップS22のDDAが繰り返されることによ
り、図4(b)において水平線をY=yminから下方
に移動させたときの変形後のスプライトの2辺との交点
E(DEX、DEY)およびF(DFX、DFY)の各
X座標値が求められ、これらの2点に対応した変形前の
スプライトにおける点E(SEX、SEY)およびF
(SFX、SFY)の各座標値が求められる。
ップS11では、このようにして求められた各座標値に
基づいて、以下のような引数の設定が行われ、SGXお
よびSGYについての各DDAの初期化が行われる。 <SGXに対応したDDA初期化ルーチンの引数の設定
> xstart=SEX ystart=DEX xend=SFX yend=DFX <SGYに対応したDDA初期化ルーチンへの引数の設
定> xstart=SEY ystart=DEX xend=SFY yend=DFX そして、ストライプ描画処理におけるステップS15で
は、この初期設定の下で、SGXおよびSGYについて
の各DDAが実行される。
標値をystart=DEXからyend=DFXまで
「1」ずつ移動させ(ステップS16およびS17)、
これと同じ期間を要して、変形前のスプライトの点Gの
X座標値dx=SGXをxstart=SEXからxe
nd=SFXまで移動させ、点GのX座標値SGXを逐
次求める。
標値をystart=DEXからyend=DFXまで
「1」ずつ移動させ(ステップS16およびS17)、
これと同じ期間を要して、変形前のスプライトの点Gの
Y座標値dx=SGYをxstart=SEYからxe
nd=SFYまで移動させ、点GのX座標値SGXを逐
次求める。
求められた変形前のスプライトの点G(SGX、SG
Y)に対応した画像データが画像メモリ3から読み出さ
れ(ステップS13)、変形後のスプライトにおける点
Gに対応した画像データとしてフレームバッファ4に格
納されるのである(ステップS14)。
座標値のインクリメント(ステップS24)が進み、Y
=DCYになると、ステップS13〜S17からなる処
理の実行が終了した時点においてX座標値は、X=DF
X=DCXとなる。
18を介してステップS20に進んだとき、ステップS
20の判断結果が「YES」となってステップS21に
進む。何故ならば、その時点におけるX座標値DCXが
頂点Dの右側の辺DC上の頂点Cのものだからである。
ln_rightから「1」を減算し、図12に示す各
条件のうち減算後のライン番号ln_rightに対応
した条件に従ってDFX、SFX、SFYについてのD
DAの初期設定を行い、ステップS22に進む。
ライン番号ln_rightは「2」となっていた。従
って、ステップS21ではこのライン番号が「1」とさ
れ、変形後のスプライトにおける辺BCに対応したもの
となる。
す各条件のうちライン番号ln_right=「1」に
対応した条件に従ってDFX、SFX、SFYについて
のDDAの初期設定が行われる。
後、ステップS22では、Y座標値のインクリメントに
伴って頂点Cから頂点Bに移動する点FのX座標値DF
XがこのDFXに対応したDDAにより逐次演算され、
当該点Fに対応した変形前のスプライトにおける点Fの
座標値SFXおよびSFYが各々に対応したDDAによ
り演算される。
値のインクリメント(ステップS24)がさらに進み、
Y=DAYになると、ステップS22におけるDEXに
対応したDDAにおいて、図4(b)に示す変形後のス
プライトの頂点AのX座標値DAXがDEXとして求め
られる。従って、その後、ステップS18に進んだと
き、ステップS18の判断結果が「YES」となってス
テップS19に進む。何故ならば、その時点におけるD
EXが頂点Dの左側の辺DA上の頂点Aのものだからで
ある。
ln_leftを「1」だけ進め、図12に示す各条件
のうち減算後のライン番号ln_leftに対応した条
件に従ってDEX、SEX、SEYについてのDDAの
初期設定を行い、ステップS20に進む。
ライン番号ln_leftは「3」となっていた。従っ
て、ステップS21ではこのライン番号が「0」とされ
(ライン番号の上限は「3」であり、この「3」の次は
「0」となる)、変形後のスプライトにおける辺ABに
対応したものとなる。
す各条件のうちライン番号ln_left=「0」に対
応した条件に従ってDEX、SEX、SEYについての
DDAの初期設定が行われる。
後、ステップS22では、Y座標値のインクリメントに
伴って頂点Aから頂点Bに移動する点EのX座標値DE
XがこのDEXに対応したDDAにより逐次演算され、
当該点Eに対応した変形前のスプライトにおける点Eの
座標値SEXおよびSEYが各々に対応したDDAによ
り演算される。
ントさせつつ進められ、変形後のスプライト上の各点
(X、Y)に対応した変形前のスプライト上の点G(S
GX、SGY)が求められ、この点に対応した画像デー
タが画像メモリ3から読み出され、変形後のスプライト
上の点G(X、Y)に対応した画像データとしてフレー
ムバッファ4に書き込まれる。
プS23の判断結果が「YES」となり、スプライト描
画処理が終了する。
ば、乗算処理や除算処理を一切用いずに、変形後の図形
の各点に対応した変形前の図形上の点を求め、その点に
対応した画像データを用いて変形後の図形の描画を行う
ので、VDPの演算処理能力が乏しい場合であっても、
図形を変形させて描画を行うことができるという効果が
ある。
動画表示システムの全体構成を示すブロック図である。
画される各種のスプライト画面を例示する図である。
ク図である。
描画処理が行われる場合の変形前のスプライトと変形後
のスプライトを例示する図である。
を説明する図である。
を説明する図である。
画処理の処理内容を示すフローチャートである。
得処理ルーチンの処理内容を示すフローチャートであ
る。
図である。
ーチンの処理内容を示す図である。
化ルーチンの処理内容を示すフローチャートである。
の条件を示す図である。
の条件のうち図4に対応したものを示す図である。
ymax取得ルーチンの処理内容を示すフローチャート
である。
ルーチンの処理内容を示すフローチャートである。
ある。
ある。
ントローラ、102……スプライト属性テーブル、10
3……スプライト属性テーブルアドレスカウンタ、10
4……メモリインタフェース、105……フレームバッ
ファコントローラ、106……関数テーブル、107…
…メモリアドレスジェネレータ、108……表示データ
コントローラ、109……D/A変換器、110……C
PUインタフェース、1……CPU、2……表示装置、
3……画像メモリ、4……フレームバッファ。
Claims (3)
- 【請求項1】 画像メモリに記憶された図形の画像デー
タから当該図形を変形した図形の画像データを生成して
フレームバッファに格納する画像処理方法において、 水平走査線を垂直方向に単位量ずつ進めながら、変形後
の図形を囲む各辺のうちの2辺の各々について、当該辺
と前記水平走査線との交点の水平方向の座標値をDDA
処理により逐次求める変形後交点座標値算出処理と、 前記2辺の各々について、当該辺に対応した前記変形前
の図形の辺における前記交点に対応した点の水平方向の
座標値および垂直方向の座標値をDDA処理により逐次
求める変形前交点座標値算出処理とを実行するととも
に、 前記変形後交点座標値算出処理および前記変形前交点座
標値算出処理が1回実行されるのに合わせて、 水平方向の座標値を前記変形後交点座標値算出処理によ
って算出された一方の交点の水平方向の座標値から他方
の交点の水平方向の座標値に向けて単位量ずつ進めなが
ら、前記一方の交点と他方の交点とを結ぶ水平線分上に
おける単位量ずつ離れた各点に対応した前記変形前の図
形上の各点の水平方向および垂直方向の座標値をDDA
処理により求める最終座標値算出処理と、 前記変形後交点座標値算出処理によって座標値が算出さ
れた前記2つの交点間を結ぶ水平線分上の単位量ずつ離
れた各点について、前記変形前の図形の画像データのう
ち、前記最終座標値算出処理によって算出された水平方
向および垂直方向の各座標値によって特定される位置の
画像データを前記画像メモリから読み出し、前記変形後
の図形における当該点に対応した画像データとして前記
フレームバッファに書き込む画像データ転送処理とを実
行することを特徴とする画像処理方法。 - 【請求項2】 画像メモリに記憶された図形の画像デー
タから当該図形を変形した図形の画像データを生成して
フレームバッファに格納する画像処理方法において、 第1の座標値を定める第1の座標軸と第2の座標値を定
める第2の座標軸とを有する2次元座標系に配置された
直線について、各々整数である第1の座標値および第2
の座標値によって特定される当該2次元座標系の各格子
点のうち前記直線を近似するものの第1の整数座標値を
逐次求める処理であって、起動される毎に、前記直線の
第1の座標軸方向の長さに対応した第1の数値が前記直
線の第2の座標軸方向の長さに対応した第2の数値より
も大きいまたは前記第2の数値以上である場合には、前
記第1の数値の累算を行い、累算結果が前記第1の数値
の累算結果以上になるまで前記第2の数値の累算を行う
とともに前記第1の整数座標値を前記始点に対応した第
1の整数座標値から前記終点に対応した第1の整数座標
値に向けて単位量だけ進める処理を繰り返し、前記第1
の数値が前記第2の数値以下または前記第2の数値未満
である場合には、前記第2の数値の累算を行うととも
に、累算結果が前記第2の数値の累算結果以上になるま
で前記第1の数値の累算を繰り返して前記第1の整数座
標値を前記始点に対応した第1の整数座標値から前記終
点に対応した第1の整数座標値に向けて単位量だけ進め
るDDA処理を含み、 変形後の図形を囲む各辺のうち水平走査線を垂直方向に
移動させたときに通過する2辺の各々について、当該辺
の両端点のうち最初に前記水平走査線が通過するものの
端点を始点とし、他の端点を終点とし、当該始点の水平
方向の座標値を前記DDA処理における前記第1の整数
座標値の初期値とし、当該終点の水平方向の座標値を前
記DDA処理における前記終点に対応した第1の整数座
標値として、当該辺の始点に対応した垂直方向の座標値
から終点に対応した垂直方向の座標値まで垂直方向の座
標値を単位量ずつ進めながら、前記DDA処理を逐次実
行し、前記DDA処理の実行時における垂直方向の座標
値を前記水平走査線と当該辺との交点の垂直方向の座標
値として求め、前記DDA処理の実行により得られる第
1の整数座標値を当該交点の水平方向の座標値として求
める変形後交点座標値算出処理と、 前記変形後の図形を囲む各辺のうち前記水平走査線を垂
直方向に移動させたときに通過する2辺の各々につい
て、当該辺に対応した前記変形前の図形の辺における前
記始点に対応した端点の水平方向の座標値を前記DDA
処理における第1の整数座標値の初期値とし、当該辺に
対応した前記変形前の図形の辺における前記終点に対応
した端点の水平方向の座標値を前記DDA処理における
前記終点に対応した第1の整数座標値とし、垂直方向の
座標値を当該辺の両端点のうち最初に前記水平走査線が
通過するものの端点の垂直方向の座標値から他の端点の
垂直方向の座標値に向けて単位量ずつ進めながら、前記
DDA処理を実行し、前記DDA処理の実行により得ら
れる第1の整数座標値を前記変形後交点座標値算出処理
によって水平方向の座標値が算出された前記交点に対応
した前記変形前の図形上の交点の水平方向の座標値とし
て求める第1の変形前交点座標値算出処理と、 前記変形後の図形を囲む各辺のうち前記水平走査線を垂
直方向に移動させたときに通過する2辺の各々につい
て、当該辺に対応した前記変形前の図形の辺における前
記始点に対応した端点の垂直方向の座標値を前記DDA
処理における第1の整数座標値の初期値とし、当該辺に
対応した前記変形前の図形の辺における前記終点に対応
した端点の垂直方向の座標値を前記DDA処理における
前記終点に対応した第1の整数座標値とし、垂直方向の
座標値を当該辺の両端点のうち最初に前記水平走査線が
通過するものの端点の垂直方向の座標値から他の端点の
垂直方向の座標値に向けて単位量ずつ進めながら、前記
DDA処理を実行し、前記DDA処理の実行により得ら
れる第1の整数座標値を前記変形後交点座標値算出処理
によって水平方向の座標値が算出された前記交点に対応
した前記変形前の図形上の交点の垂直方向の座標値とし
て求める第2の変形前交点座標値算出処理とを実行する
とともに、 前記変形後交点座標値算出処理、前記第1の変形前交点
座標値算出処理および前記第2の変形前交点座標値算出
処理が1回実行されるのに合わせて、 前記第1の変形前交点座標値算出処理によって水平方向
の座標値が算出された変形前の図形を囲むいずれかの辺
上の2つの交点のうち一方の交点の水平方向の座標値を
前記DDA処理における第1の整数座標値の初期値と
し、他方の交点の水平方向の座標値を前記DDA処理に
おける終点に対応した第2の整数座標値とし、水平方向
の座標値を前記変形後交点座標値算出処理によって算出
された前記一方の交点に対応した変形後の図形を囲む辺
上の交点の水平方向の座標値から前記他方の交点に対応
した変形後の図形を囲む辺上の交点の水平方向の座標値
に向けて単位量ずつ進めながら、前記DDA処理を繰り
返し、前記DDA処理の繰り返し実行により順次得られ
る第1の整数座標値を、前記変形後交点座標値算出処理
によって算出された前記2辺に対応した2つの交点間を
結ぶ水平線分上における単位量ずつ離れた各点に対応し
た前記変形前の図形上の各点の水平方向の座標値として
求める水平座標値算出処理と、 前記第2の変形前交点座標値算出処理によって垂直方向
の座標値が算出された変形前の図形を囲むいずれかの辺
上の2つの交点のうち一方の交点の垂直方向の座標値を
前記DDA処理における第1の整数座標値の初期値と
し、他方の交点の垂直方向の座標値を前記DDA処理に
おける終点に対応した第2の整数座標値とし、水平方向
の座標値を前記変形後交点座標値算出処理によって算出
された前記一方の交点に対応した変形後の図形を囲む辺
上の交点の水平方向の座標値から前記他方の交点に対応
した変形後の図形を囲む辺上の交点の水平方向の座標値
に向けて単位量ずつ進めながら、前記DDA処理を繰り
返し、前記DDA処理の繰り返し実行により順次得られ
る第1の整数座標値を、前記変形後交点座標値算出処理
によって算出された座標値が求められた2つの交点間を
結ぶ水平線分上における単位量ずつ離れた各点に対応し
た前記変形前の図形上の各点の水平方向の座標値として
求める水平座標値算出処理と、 前記変形後交点座標値算出処理によって座標値が算出さ
れた前記2つの交点間を結ぶ水平線分上の単位量ずつ離
れた各点について、前記変形前の図形の画像データのう
ち、前記水平座標値算出処理によって算出された水平方
向の座標値および前記垂直座標値算出処理によって算出
された垂直方向の座標値によって特定される位置の画像
データを前記画像メモリから読み出し、前記変形後の図
形における当該点に対応した画像データとして前記フレ
ームバッファに書き込む画像データ転送処理とを実行す
ることを特徴とする画像処理方法。 - 【請求項3】 画像メモリに記憶された図形の画像デー
タから当該図形を変形した図形の画像データを生成して
フレームバッファに格納する画像処理装置において、 水平走査線を垂直方向に単位量ずつ進めながら、変形後
の図形を囲む各辺のうちの2辺の各々について、当該辺
と前記水平走査線との交点の水平方向の座標値をDDA
処理により逐次求める変形後交点座標値算出処理と、 前記2辺の各々について、当該辺に対応した前記変形前
の図形の辺における前記交点に対応した点の水平方向の
座標値および垂直方向の座標値をDDA処理により逐次
求める変形前交点座標値算出処理とを実行するととも
に、 前記変形後交点座標値算出処理および前記変形前交点座
標値算出処理が1回実行されるのに合わせて、 水平方向の座標値を前記変形後交点座標値算出処理によ
って算出された一方の交点の水平方向の座標値から他方
の交点の水平方向の座標値に向けて単位量ずつ進めなが
ら、前記一方の交点と他方の交点とを結ぶ水平線分上に
おける単位量ずつ離れた各点に対応した前記変形前の図
形上の各点の水平方向および垂直方向の座標値をDDA
処理により求める最終座標値算出処理と、 前記変形後交点座標値算出処理によって座標値が算出さ
れた前記2つの交点間を結ぶ水平線分上の単位量ずつ離
れた各点について、前記変形前の図形の画像データのう
ち、前記最終座標値算出処理によって算出された水平方
向および垂直方向の各座標値によって特定される位置の
画像データを前記画像メモリから読み出し、前記変形後
の図形における当該点に対応した画像データとして前記
フレームバッファに書き込む画像データ転送処理とを実
行することを特徴とする画像処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29160899A JP2001109457A (ja) | 1999-10-13 | 1999-10-13 | 画像処理方法および画像処理装置 |
TW089121315A TW499667B (en) | 1999-10-13 | 2000-10-12 | Image processing method and device, and storage medium storing a program therefor |
US09/689,580 US6697081B1 (en) | 1999-10-13 | 2000-10-12 | Image processing method and device, and storage medium storing a program therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP29160899A JP2001109457A (ja) | 1999-10-13 | 1999-10-13 | 画像処理方法および画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001109457A true JP2001109457A (ja) | 2001-04-20 |
Family
ID=17771160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP29160899A Pending JP2001109457A (ja) | 1999-10-13 | 1999-10-13 | 画像処理方法および画像処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6697081B1 (ja) |
JP (1) | JP2001109457A (ja) |
TW (1) | TW499667B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011186786A (ja) * | 2010-03-09 | 2011-09-22 | Fujitsu Ltd | 図形描画装置および方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376894B2 (en) * | 2004-11-18 | 2008-05-20 | Microsoft Corporation | Vector path merging into gradient elements |
JP2006157580A (ja) * | 2004-11-30 | 2006-06-15 | Ricoh Co Ltd | 画像処理装置、画像形成装置、画像処理方法、コンピュータプログラム及び記録媒体 |
JP2006268787A (ja) * | 2005-03-25 | 2006-10-05 | Fuji Xerox Co Ltd | 統計量表示装置および方法 |
US7742063B2 (en) * | 2005-07-07 | 2010-06-22 | Lsi Corporation | Efficient and high speed 2D data transpose engine for SOC application |
JP2007025862A (ja) * | 2005-07-13 | 2007-02-01 | Sony Computer Entertainment Inc | 画像処理装置 |
US20080163052A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Method and system for multi-modal fusion of physical and virtual information channels |
US20080159328A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Method and system for in-context assembly of interactive actionable insights and modalities in physical spaces |
US20080158223A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Method and system for dynamic adaptability of content and channels |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2845946B2 (ja) * | 1989-06-14 | 1999-01-13 | 株式会社日立製作所 | 画像データ変換装置 |
US5307449A (en) * | 1991-12-20 | 1994-04-26 | Apple Computer, Inc. | Method and apparatus for simultaneously rendering multiple scanlines |
US6014125A (en) * | 1994-12-08 | 2000-01-11 | Hyundai Electronics America | Image processing apparatus including horizontal and vertical scaling for a computer display |
-
1999
- 1999-10-13 JP JP29160899A patent/JP2001109457A/ja active Pending
-
2000
- 2000-10-12 TW TW089121315A patent/TW499667B/zh active
- 2000-10-12 US US09/689,580 patent/US6697081B1/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011186786A (ja) * | 2010-03-09 | 2011-09-22 | Fujitsu Ltd | 図形描画装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
TW499667B (en) | 2002-08-21 |
US6697081B1 (en) | 2004-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7898549B1 (en) | Faster clears for three-dimensional modeling applications | |
JPH03250272A (ja) | 図形描画方法およびその装置 | |
JPH09161100A (ja) | 表示方法及び装置 | |
WO2019163129A1 (ja) | 仮想物体表示制御装置、仮想物体表示システム、仮想物体表示制御方法、及び仮想物体表示制御プログラム | |
JPH10334273A (ja) | 3次元画像処理装置及び3次元画像処理方法 | |
JP2001109457A (ja) | 画像処理方法および画像処理装置 | |
JP2000011204A (ja) | 画像処理方法及び画像処理プログラムを記録した記録媒体 | |
KR101227155B1 (ko) | 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법 | |
KR20050112111A (ko) | 화상표시장치, 화상표시방법 및 화상표시시스템 | |
JP3872056B2 (ja) | 描画方法 | |
JP3165094B2 (ja) | 画像処理装置及び画像処理方法 | |
JP3324580B2 (ja) | 画像処理装置 | |
JP2768370B2 (ja) | 図形描画方法 | |
JP7124621B2 (ja) | 情報処理装置、画像表示方法、および画像表示プログラム | |
JP3014395B2 (ja) | 立体画像表示システム | |
JP2003187260A (ja) | 描画処理プログラム、描画処理プログラムを記録した記録媒体、描画処理装置及び方法 | |
JP2009009428A (ja) | ベクター画像描画回路およびベクター画像描画方法 | |
JP2011044022A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JPH01200481A (ja) | 三次元図形のピック方法 | |
JP4461965B2 (ja) | 文字画像生成装置、文字画像生成プログラムおよび文字画像生成方法 | |
WO2015083279A1 (ja) | 情報処理装置 | |
JP3776416B2 (ja) | 画像生成装置及び画像生成方法 | |
KR101360592B1 (ko) | 애니메이션 생성방법 및 장치 | |
JPH09166975A (ja) | 画像生成装置及び画像生成方法 | |
JP2000035781A (ja) | 画像表示制御方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051025 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070925 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071126 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080325 |