JPH0789381B2 - ピクセル値補間表示方法 - Google Patents
ピクセル値補間表示方法Info
- Publication number
- JPH0789381B2 JPH0789381B2 JP62202976A JP20297687A JPH0789381B2 JP H0789381 B2 JPH0789381 B2 JP H0789381B2 JP 62202976 A JP62202976 A JP 62202976A JP 20297687 A JP20297687 A JP 20297687A JP H0789381 B2 JPH0789381 B2 JP H0789381B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- pixel
- interpolation
- machine
- integer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three-dimensional [3D] modelling for computer graphics
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】 〔発明の技術分野〕 本発明はコンピュータ・グラフィクス等に用いることが
できる補間方法に関する。
できる補間方法に関する。
コンピュータ支援エンジニアリング(CAE)ワークステ
ーションの図形処理端末装置は技術者が設計を行なう際
に適切に支援しようとすれば物体の性質に合わせて目に
見える正確な指示を発生しなければならない。代表的な
性質には構造、形状、外観、温度勾配、および応力勾配
がある。これらの映像を理解しやすく処理しやすい形で
発生するのがCAEワークステーションの図形処理サブシ
ステムの機能である。
ーションの図形処理端末装置は技術者が設計を行なう際
に適切に支援しようとすれば物体の性質に合わせて目に
見える正確な指示を発生しなければならない。代表的な
性質には構造、形状、外観、温度勾配、および応力勾配
がある。これらの映像を理解しやすく処理しやすい形で
発生するのがCAEワークステーションの図形処理サブシ
ステムの機能である。
映像合成の大部分の方法では、映像は物体の表面を多角
形に細分し、各項点の色と明度(intensity)の値を計
算し、結果をフレーム・バッファに入れ、一方色の値を
多角形全体に補間する(グーロー・シェイディングGour
aud shading)ことによって作られる。色の情報は光源
データから計算するか、あるいは選択された性質を解析
することによって計算することができる。
形に細分し、各項点の色と明度(intensity)の値を計
算し、結果をフレーム・バッファに入れ、一方色の値を
多角形全体に補間する(グーロー・シェイディングGour
aud shading)ことによって作られる。色の情報は光源
データから計算するか、あるいは選択された性質を解析
することによって計算することができる。
各多角形上での座標および色(または明度)の値の補間
は迅速に且つ正確に行わなければならない。この操作は
多角形の辺の各量子化点(ピクセル)の座標値および色
値を補間し、それに続いて辺から辺への補間を行なうこ
とによって塗りつぶし線(fill line)を作る。Zバッ
ファを用いて隠面消去を行なわなければならない場合に
は、各ピクセルの深さの値(Z)も計算しなければなら
ない。更に、各色の成分は表面または一組の表面上で独
立に変化し得るから、赤、緑、および青の強さに対する
値は独立に補間しなければならない。したがって、汎用
図形処理システムでは、グーロー・シェイディングおよ
び補間されたZ値を用いて多角形を描くとき、最小6つ
の異なるピクセル値(X、Y、Z、赤、緑、および青)
を独立に計算しなければならない。
は迅速に且つ正確に行わなければならない。この操作は
多角形の辺の各量子化点(ピクセル)の座標値および色
値を補間し、それに続いて辺から辺への補間を行なうこ
とによって塗りつぶし線(fill line)を作る。Zバッ
ファを用いて隠面消去を行なわなければならない場合に
は、各ピクセルの深さの値(Z)も計算しなければなら
ない。更に、各色の成分は表面または一組の表面上で独
立に変化し得るから、赤、緑、および青の強さに対する
値は独立に補間しなければならない。したがって、汎用
図形処理システムでは、グーロー・シェイディングおよ
び補間されたZ値を用いて多角形を描くとき、最小6つ
の異なるピクセル値(X、Y、Z、赤、緑、および青)
を独立に計算しなければならない。
ピクセルとその値を発生することは昔から映像発生の隘
路であった。何故なら対話的処理用の速さで映像を作る
には毎秒数百万ピクセルを描かなければならないからで
ある。隘路を緩和するにはハードウェアで実現でき且つ
6個のパラメータを含むように拡張できる補間アルゴリ
ムズが必要である。プロセスのオーバーラップを最大に
して費用を最小にするには、パイプラインをなす多角形
のすべての要素を単一のチップに入れることが望まし
い。
路であった。何故なら対話的処理用の速さで映像を作る
には毎秒数百万ピクセルを描かなければならないからで
ある。隘路を緩和するにはハードウェアで実現でき且つ
6個のパラメータを含むように拡張できる補間アルゴリ
ムズが必要である。プロセスのオーバーラップを最大に
して費用を最小にするには、パイプラインをなす多角形
のすべての要素を単一のチップに入れることが望まし
い。
次に記す開示は最大毎秒2000万ピクセルの割合で6個の
パラメータに関して補間による多角形塗りつぶしを行な
うことができる補間装置のシングル・チップVLSI構成
(多角形描画チップ(Polygon Rendering Chip)、また
はPRCと呼ぶ)の一部について述べる。PRCの入力は多角
形項点データ(16ビットの整数の形でX、Y、Z、R、
G、B)と外部のデュアル・ポートRAMから取り出した
辺接続情報から構成される。その出力は各ピクセルに対
するX、Y、Z、R、G、Bのデータである。PRCは200
0を越える凸辺、凹辺、および/または交差辺を持つシ
ェイディング多角形の塗りつぶしを行なうことができ、
215×215ピクセルのアドレス空間を備えている。PRCに
使用する補間アルゴリズムはIBM Systems Journal、vo
l.4 No.1、1965でBresenhamが説明している描線(line
−drawing)アルゴリズムに関係している。残念ながらB
resenhamのアルゴリズムには補間されるべき線の傾斜に
関して制限がある。このような制限が無く、また速さと
ハードウェアの実現しやすさのため、整数計算を使用し
ていることが、そのVLSI構成とともに、ここに述べる新
しいアルゴリズムのとりわけ顕著な特徴である。
パラメータに関して補間による多角形塗りつぶしを行な
うことができる補間装置のシングル・チップVLSI構成
(多角形描画チップ(Polygon Rendering Chip)、また
はPRCと呼ぶ)の一部について述べる。PRCの入力は多角
形項点データ(16ビットの整数の形でX、Y、Z、R、
G、B)と外部のデュアル・ポートRAMから取り出した
辺接続情報から構成される。その出力は各ピクセルに対
するX、Y、Z、R、G、Bのデータである。PRCは200
0を越える凸辺、凹辺、および/または交差辺を持つシ
ェイディング多角形の塗りつぶしを行なうことができ、
215×215ピクセルのアドレス空間を備えている。PRCに
使用する補間アルゴリズムはIBM Systems Journal、vo
l.4 No.1、1965でBresenhamが説明している描線(line
−drawing)アルゴリズムに関係している。残念ながらB
resenhamのアルゴリズムには補間されるべき線の傾斜に
関して制限がある。このような制限が無く、また速さと
ハードウェアの実現しやすさのため、整数計算を使用し
ていることが、そのVLSI構成とともに、ここに述べる新
しいアルゴリズムのとりわけ顕著な特徴である。
或る初期のいくつかの描線補間アルゴリズムについて簡
単に考察しよう。各々のアルゴリズムをPascal風のプロ
グラムとして示すことにする。他に特に注記しないかぎ
り、Xは主軸であり且つその値は増加すると仮定する。
(X、Yを交換することにより、および/またはX軸お
よび/またはY軸について鏡像をとることにより、ベク
トルはすべてこの仮定内で描くことができることがわか
る。)XsおよびYsはXおよびYの始めの値である。Xeお
よびYeはXおよびYの終りの値である。
単に考察しよう。各々のアルゴリズムをPascal風のプロ
グラムとして示すことにする。他に特に注記しないかぎ
り、Xは主軸であり且つその値は増加すると仮定する。
(X、Yを交換することにより、および/またはX軸お
よび/またはY軸について鏡像をとることにより、ベク
トルはすべてこの仮定内で描くことができることがわか
る。)XsおよびYsはXおよびYの始めの値である。Xeお
よびYeはXおよびYの終りの値である。
ディジタル微分解析機 従来技術の一つはディジタル微分解析(DDA)である。D
DAはXの各値に対して式Y=M×X+C(乗算が必要)
を解かずに線のY値を計算することができる。これは線
の微分、すなわち傾斜(M)を、定数(Ye−Ys)/(Xe
−Xs)として計算することにより行われる。一旦Mが計
算されると、(X,Y)の点列を、Xを1だけ増しMをY
に加えることを繰返して次々発生することができる。Y
値については、すべて更に最も近い整数に丸める必要が
あるが、これは始めのY値に0.5を加え、得られたYに
切捨てを施すことにより容易に達成される。線の終りを
検出するため、Xe−Xsを初期値にとるダウン・カウンタ
も必要である。上記をプログラムの形で要約すれば次の
ようになる。
DAはXの各値に対して式Y=M×X+C(乗算が必要)
を解かずに線のY値を計算することができる。これは線
の微分、すなわち傾斜(M)を、定数(Ye−Ys)/(Xe
−Xs)として計算することにより行われる。一旦Mが計
算されると、(X,Y)の点列を、Xを1だけ増しMをY
に加えることを繰返して次々発生することができる。Y
値については、すべて更に最も近い整数に丸める必要が
あるが、これは始めのY値に0.5を加え、得られたYに
切捨てを施すことにより容易に達成される。線の終りを
検出するため、Xe−Xsを初期値にとるダウン・カウンタ
も必要である。上記をプログラムの形で要約すれば次の
ようになる。
PROCEDURE DDA1(Xs,Xe,Ys,Ye:INTEGER); VAR M,Y:REAL; N,X:INTEGER; BEGIN (*設定*) X:=Xs; Y:=Ys+0.5; M:=(Ye−Ys)/(Xe−Xs); N:=((Xe−Xs); (*補間*) PLOT(X,INT(Y)); WHILE N<>0 DO BEGIN X:=X+1; Y:=Y+M; N:=N−1; PLOT(X,INT(Y)); END; END; DDAを使用するにあたっての主な困難はMを得るために
最初に割算を行なうことと、MおよびYに対して実数つ
まり小数の2進数を使用しなければならないことであ
る。割算が一般に遅いばかりでなく、このやり方では切
捨て誤差を生じやすい。MおよびYの小数部の精度は、
引かれる線が終点に正しくぶつかることを保証するため
少なくとも画面精度に等しくなければならず、或る経験
的データによれば、両端点間にすべての点を正しく描く
のに必要な精度は画面精度の少なくとも2倍でなければ
ならないことがわかっている。
最初に割算を行なうことと、MおよびYに対して実数つ
まり小数の2進数を使用しなければならないことであ
る。割算が一般に遅いばかりでなく、このやり方では切
捨て誤差を生じやすい。MおよびYの小数部の精度は、
引かれる線が終点に正しくぶつかることを保証するため
少なくとも画面精度に等しくなければならず、或る経験
的データによれば、両端点間にすべての点を正しく描く
のに必要な精度は画面精度の少なくとも2倍でなければ
ならないことがわかっている。
Bresenhamのアルゴリズム DDAは整数部と小数部に分割することができる。整数部
には、カウント値N、Xの値、およびYの値の整数部が
含まれる。小数部にはYの値の小数部だけ、および傾斜
Mの値全体が含まれる。最初にXを主軸と仮定したの
で、傾斜(Ye−Ys)/(Xe−Xs)は常に1以下である。
には、カウント値N、Xの値、およびYの値の整数部が
含まれる。小数部にはYの値の小数部だけ、および傾斜
Mの値全体が含まれる。最初にXを主軸と仮定したの
で、傾斜(Ye−Ys)/(Xe−Xs)は常に1以下である。
小数値と整数値とを連絡する唯一のものはY小数部から
Y整数部への桁上げである。傾斜MをY小数部に加える
ことにより生じた整数値がY整数部に移されるかぎり、
整数部と分数部とは独立に取扱うことができる。これは
Y小数部から1を引き、Y小数部が1以上のときはY整
数部に1を加えることにより行うことができる。0以上
という条件が成立するか否かについての比較をすること
(つまり符号ビットのチェック)は通常、1以上という
条件が成立するか否かについての比較をすることにより
容易であるから、始めのY小数部から1を引いておい
て、0との比較を行うことができる。YfがY小数部を表
し、YiがY整数部を表わすものとすれば、プログラムは
次のようになる。
Y整数部への桁上げである。傾斜MをY小数部に加える
ことにより生じた整数値がY整数部に移されるかぎり、
整数部と分数部とは独立に取扱うことができる。これは
Y小数部から1を引き、Y小数部が1以上のときはY整
数部に1を加えることにより行うことができる。0以上
という条件が成立するか否かについての比較をすること
(つまり符号ビットのチェック)は通常、1以上という
条件が成立するか否かについての比較をすることにより
容易であるから、始めのY小数部から1を引いておい
て、0との比較を行うことができる。YfがY小数部を表
し、YiがY整数部を表わすものとすれば、プログラムは
次のようになる。
PROCEDURE DDA2(Xs,Xe,Ys,Ye:INTEGER); VAR M,Yf:REAL; N,X,Yi:INTEGER; BEGIN (*設定*) X:=Xs; Yi:=Ys; Yf:=−0.5; M:=(Ye−Ys)/(Xe−Xs); N:=(Xe−Xs); (*補間*) PLOT(X,Yi); WHILE N<>0 DO BEGIN X:X+1; Yf:=Yf+M; IF Yf>=0 THEN BEGIN Yf:=Yf−1; Yi:=Yi+1; END; N:=N−1; PLOT(X,Yi); END; END; 小数部の値はそれ自身の方程式系の外では全く使用され
ないから、これらの値はすべて定数2*(Xe−Xs)倍し
て整数化することができる。0以上の状態であるか否か
についての比較の理論値としての結果だけが送り出され
る。この結果最初の割算が無くなり、すべての小数変数
が整数に変換される。これは2を掛ける以外の乗算を追
加することなく行うことができ、2の乗算は左シフトに
より簡単に行うことができる。これでプログラムは次の
ようになる。
ないから、これらの値はすべて定数2*(Xe−Xs)倍し
て整数化することができる。0以上の状態であるか否か
についての比較の理論値としての結果だけが送り出され
る。この結果最初の割算が無くなり、すべての小数変数
が整数に変換される。これは2を掛ける以外の乗算を追
加することなく行うことができ、2の乗算は左シフトに
より簡単に行うことができる。これでプログラムは次の
ようになる。
PROCEDURE BRESENHAM(Xs,Xe,Ys,Ye:INTEGER); VAR M,Yf, N,X,Yi:INTEGER; BEGIN (*設定*) X:=Xs; Yi:=Ys; Yf:=−(Xe−Xs); M:=2*(Ye−Ys); N:(Xe−Xs); (*補間*) PLOT(X,Yi); WHILE N<>0 DO BEGIN X:=X+1; Yf:=Yf+M; IF Yf>=0 THEN BEGIN Yf:=Yf−2*(Xe−Xs); Yi:=Yi+1; END; N:=N−1; PLOT(X,Yi); END; END; 上のプログラムはBresenhamの原論文に提示された規則
と実質的に同じである。
と実質的に同じである。
BresenhamのアルゴリズムをXとYとだけに使用すると
きは、主軸は常に最大変化分(dalta)を持つ軸と定義
すべきであり、こうすれば主軸に沿う各ピクセルに対し
て点が確実にプロットされることになる。Z、赤、緑ま
たは青の軸に沿って補間するときは、X(またはY)軸
をたとえその変化分がΔZ、Δ赤、Δ緑、あるいはΔ青
より小さくても、主軸のままにしておくべきである。こ
れは緑がX−Y平面に投影されているからである。たと
えば、数ピクセルだけを描くときにZ軸に沿って数千の
ステップを行なうのは馬鹿げたことになる。このこと
は、たとえば、X−Z平面内の線の傾斜が1より大きく
なることがあり、この状態ではBresenhamのアルゴリズ
ムが使用できないことを意味している。
きは、主軸は常に最大変化分(dalta)を持つ軸と定義
すべきであり、こうすれば主軸に沿う各ピクセルに対し
て点が確実にプロットされることになる。Z、赤、緑ま
たは青の軸に沿って補間するときは、X(またはY)軸
をたとえその変化分がΔZ、Δ赤、Δ緑、あるいはΔ青
より小さくても、主軸のままにしておくべきである。こ
れは緑がX−Y平面に投影されているからである。たと
えば、数ピクセルだけを描くときにZ軸に沿って数千の
ステップを行なうのは馬鹿げたことになる。このこと
は、たとえば、X−Z平面内の線の傾斜が1より大きく
なることがあり、この状態ではBresenhamのアルゴリズ
ムが使用できないことを意味している。
多くの人々がZ、赤、緑、および青の補間を実現するの
に使用した手法はDDAに戻ることであり、DDAでは傾斜が
0と1との間にあることは必要ではない。彼等はDDAか
ら生ずるZ、赤、緑、および青の値のわずかな誤差はX
およびYの誤差ほど重大ではないと主張している。
に使用した手法はDDAに戻ることであり、DDAでは傾斜が
0と1との間にあることは必要ではない。彼等はDDAか
ら生ずるZ、赤、緑、および青の値のわずかな誤差はX
およびYの誤差ほど重大ではないと主張している。
本発明は上述した従来技術の問題点を解消し、高速かつ
汎用性のある補間方法を提供することを目的とする。
汎用性のある補間方法を提供することを目的とする。
本発明の一実施例によれば、補間される関数の傾斜の整
数部と小数部をともにあらかじ計算しておく。インクリ
メントすべき従属変数の出発値の小数部とインクリメン
トを生じさせる傾斜の小数値は各々整数演算ができる大
きさになるように定数倍しておく。従属変数の出発値の
この定数倍された小数部はある定数だけオフセットされ
て「0以上であるか」の比較で検出されるキャリーの発
生が起るようにされる。キャリーが発生すれば従属変数
の(定数倍されていない)整数部が傾斜の(定数倍され
ていない)整数部の大きさだけインクリメントされる。
数部と小数部をともにあらかじ計算しておく。インクリ
メントすべき従属変数の出発値の小数部とインクリメン
トを生じさせる傾斜の小数値は各々整数演算ができる大
きさになるように定数倍しておく。従属変数の出発値の
この定数倍された小数部はある定数だけオフセットされ
て「0以上であるか」の比較で検出されるキャリーの発
生が起るようにされる。キャリーが発生すれば従属変数
の(定数倍されていない)整数部が傾斜の(定数倍され
ていない)整数部の大きさだけインクリメントされる。
更に、従属変数の整数部と定数倍した小数部の組につい
ての2対の同時整数加算のうちの一方が選択されて行わ
れる。これらの対の一方は定数倍した小数部からのキャ
リーが生じなかったときに選択される。他方の対はキャ
リーが生じたときに選択される。選択された加算対によ
って生じた値はパイプライン内の次の段に送られ、従属
変数の整数と定数倍した小数部を実際に更新する。
ての2対の同時整数加算のうちの一方が選択されて行わ
れる。これらの対の一方は定数倍した小数部からのキャ
リーが生じなかったときに選択される。他方の対はキャ
リーが生じたときに選択される。選択された加算対によ
って生じた値はパイプライン内の次の段に送られ、従属
変数の整数と定数倍した小数部を実際に更新する。
Bresenhamの変換と同様であって、傾斜を0と1との間
にする必要のない変換を見つけることができる。傾斜が
制限されなければ、傾斜は丁度前述のY値の場合のよう
に分けて処理しなければならない整数部と小数部とを備
えることになる。DDA1を修正して、次のようにする。
にする必要のない変換を見つけることができる。傾斜が
制限されなければ、傾斜は丁度前述のY値の場合のよう
に分けて処理しなければならない整数部と小数部とを備
えることになる。DDA1を修正して、次のようにする。
PROCEDURE DDA3(Xs,Xe,Zs,Ze:INTEGER) VAR Mf,Zf,:REAL; N,Mi,X,Zi:INTEGER; BEGIN (*設定*) X:=Xs; Zi:=Zs; Zf:=−0.5; Mi:=(Ze−Zs)DIV(Xe−Xs); Mf:=FRACT((Ze−Zs)/(Xe−Xs)); N:=(Xe−Xs); (*補間*) PLOT(X,Zi); WHILE N<>0 DO BEGIN X:=X+1; Zi:=Zi+Mi; Zf:=Zf+Mf; IF Zf>=0 THEN BEGIN Zf:Zf−1; Zi:Zi+1; END; N:=N−1; PLOT(X,Zi); END; END; DDA2の場合のように、小数部はすべて定数2×(Xe−X
s)倍することによって整数に変えることができる。下
に示す複数軸補間(Multiple−Axis Interpolator)は
Xが主軸を表わし、Zが他の軸を表わすと仮定してい
る。
s)倍することによって整数に変えることができる。下
に示す複数軸補間(Multiple−Axis Interpolator)は
Xが主軸を表わし、Zが他の軸を表わすと仮定してい
る。
B MOD A=A*FRACT(B/A)であることに注意するこ
と。
と。
PROCEDURE MAI1(Xs,Xe,Zs,Ze:INTEGER) VAR Mf,Zf, N,Mi,X,Zi:INTEGER; BEGIN (*設定*) X:=Xs; Zi:=Zs; Zf:=−(Xe−Xs); Mi:=(Ze−Zs)DIV(Xe−Xs); Mf:=2*((Ze−Zs)MOD(Xe−Xs)); N:=(Xe−Xs); (*補間*) PLOT(X,Zi); WHILE N<>0 DO BEGIN X:X+1; Zi:=Zi+Mi; Zf:=Zf+Mf; IF Zf>=0 THEN BEGIN Zf:=Zf−2*(Xe−Xs); Zi:=Zi+1; END; N:=N−1; PLOT(X,Zi); END; END; 一見して、MAIはDDAに劣っているかのように見える。MA
IはDIVとMOD関数があるが、DDAには一つの加算があるだ
けである。しかしながら、MAIのDIVはDDAの実数割算よ
りはるかに簡単な整数割算である。MOD関数について
は、この値の上の行で行われたDIVから得られる単なる
剰余であるから、そのために余分なコストはかからな
い。整数剰余は捨てられないから、DDAの場合のような
切捨て誤差は存在しない。ハードウェア構成において
は、ZiおよびZfの加算に必要な加算器が必要とするビッ
ト数はDDAでの実数値Zに必要なビット数と同じか、少
い。
IはDIVとMOD関数があるが、DDAには一つの加算があるだ
けである。しかしながら、MAIのDIVはDDAの実数割算よ
りはるかに簡単な整数割算である。MOD関数について
は、この値の上の行で行われたDIVから得られる単なる
剰余であるから、そのために余分なコストはかからな
い。整数剰余は捨てられないから、DDAの場合のような
切捨て誤差は存在しない。ハードウェア構成において
は、ZiおよびZfの加算に必要な加算器が必要とするビッ
ト数はDDAでの実数値Zに必要なビット数と同じか、少
い。
演算はすべて簡単な整数算術を使用するから、必要な分
解能を精密に指定することができる。必要な分解能は変
化分項(Xe−XsとZe−Zs)の分解能により決まるが、X
またはZの範囲のビット数より1ビット多く必要であ
る。たとえば、所要のXまたはZの範囲が0から32767
までであれば、情報の損失が無いようにするため16ビッ
トの分解能が必要である。上のアルゴリズムMAI1は設定
セグメントの部分と補間ループの計算の部分を再構成し
て、定数Mf2をあらかじめ計算することにより、ハード
ウェアで構成した場合、1クロック時間あたり1ピクセ
ルをプロットするように変更することができる。
解能を精密に指定することができる。必要な分解能は変
化分項(Xe−XsとZe−Zs)の分解能により決まるが、X
またはZの範囲のビット数より1ビット多く必要であ
る。たとえば、所要のXまたはZの範囲が0から32767
までであれば、情報の損失が無いようにするため16ビッ
トの分解能が必要である。上のアルゴリズムMAI1は設定
セグメントの部分と補間ループの計算の部分を再構成し
て、定数Mf2をあらかじめ計算することにより、ハード
ウェアで構成した場合、1クロック時間あたり1ピクセ
ルをプロットするように変更することができる。
PROCEDURE MAI2(Xs,Xe,Zs,Ze:INTEGER); VAR Mf,Zf, N,Mi,X,Zi:INTEGER; BEGIN (*設定*) X:=Xs; Zi:=Zs; Mi:=(Ze−Zs)DIV(Xe−Xs); Mf:=2*((Ze−Zs)MOD(Xe−Xs)); Mf2:=Mf−2*(Xe−Xs); Zf:=−(Xe−Xs)+Mf; N:=(Xe−Xs); (*補間*) PLOT(X,Zi); WHILE N<>0 DO BEGIN X:X+1; IF Zf>=0 THEN BEGIN Zf:=Zf+Mf2; Zi:=Zi+Mi+1; END ELSE BEGIN Zf:=Zf+Mf; Zi:=Zi+Mi; END; N:=N−1; PLOT(X,Zi); END; END; これにより補間ループは1軸あたり、一つはZf用、一つ
はZi用の二つの加算器を使用すれば、1クロックにつき
1ピクセルの割合で数値を発生することができる。設定
から補間ループまでのデータ・フローは一方向であるか
ら、別々の回路群を用いることにより二つのルーチンを
容易にパイプライン化することができる。設定手順全体
は、パラメータあたり一つの加算器を用いシフト・アン
ド・アド形式の除算を行うことによって20〜34クロック
で行うことができる。各種データによれば、典型的な塗
りつぶし(fill)ベクトル長は約30ピクセルであるか
ら、セットアップとピクセル描画との速さは良くつり合
っている。したがって特別な除算ハードウェアの必要性
はほとんど無い。補間に必要なある関係の数値(「短期
定数」)はPRCの設定機械で計算される。ピクセル描画
は補間機械で行われる。
はZi用の二つの加算器を使用すれば、1クロックにつき
1ピクセルの割合で数値を発生することができる。設定
から補間ループまでのデータ・フローは一方向であるか
ら、別々の回路群を用いることにより二つのルーチンを
容易にパイプライン化することができる。設定手順全体
は、パラメータあたり一つの加算器を用いシフト・アン
ド・アド形式の除算を行うことによって20〜34クロック
で行うことができる。各種データによれば、典型的な塗
りつぶし(fill)ベクトル長は約30ピクセルであるか
ら、セットアップとピクセル描画との速さは良くつり合
っている。したがって特別な除算ハードウェアの必要性
はほとんど無い。補間に必要なある関係の数値(「短期
定数」)はPRCの設定機械で計算される。ピクセル描画
は補間機械で行われる。
PRCでは6個の補間機械が使用される。XまたはYの一
つは常にアップダウン・カウンタを用いて処理すること
ができるが、どのパラメータがどこにあるかを常に知っ
ておくのに余分の情報記録が必要となり、チップのルー
ティングが一層複雑になる。他の軸と平行して走る補間
機械のコピーをもう一つ追加するのがはるかに簡単な解
決策である。
つは常にアップダウン・カウンタを用いて処理すること
ができるが、どのパラメータがどこにあるかを常に知っ
ておくのに余分の情報記録が必要となり、チップのルー
ティングが一層複雑になる。他の軸と平行して走る補間
機械のコピーをもう一つ追加するのがはるかに簡単な解
決策である。
多角形塗りつぶし機能 今度は第1図を参照すると、PRCは外部のデュアル重ポ
ートRAM1からの指令とポインタを読み取って多角形塗り
つぶし(fill)プロセスを始める。指令はどんな形式の
図形(多角形またはベクトル)を描くべきか、およびラ
インタイプ・パターン(linetype pattern)を使用すべ
きかを指示する。ポインタは多角形の最初の辺データ・
パケットのロケーションを指示する。各パケットには次
のパケットを指すポインタが含まれている。
ートRAM1からの指令とポインタを読み取って多角形塗り
つぶし(fill)プロセスを始める。指令はどんな形式の
図形(多角形またはベクトル)を描くべきか、およびラ
インタイプ・パターン(linetype pattern)を使用すべ
きかを指示する。ポインタは多角形の最初の辺データ・
パケットのロケーションを指示する。各パケットには次
のパケットを指すポインタが含まれている。
最初のポインタは辺機械2に送られる。辺機械2は有効
(active edge)の順序リストを(使用する順序で)作
り上げ、描くべき最初の二つの辺のデータ・パケットを
読み取る。これらは読み取られて、設定機械3に送ら
れ、次いで補間機械4に送られる。補間機械4が各辺の
1走査線を終了すると、パケットは辺機械2に送り返さ
れる。
(active edge)の順序リストを(使用する順序で)作
り上げ、描くべき最初の二つの辺のデータ・パケットを
読み取る。これらは読み取られて、設定機械3に送ら
れ、次いで補間機械4に送られる。補間機械4が各辺の
1走査線を終了すると、パケットは辺機械2に送り返さ
れる。
有効辺が二つしか存在しない場合には、二つとも辺機械
内のレジスタに格納される。二つよりも多くの有効辺が
存在する場合には、辺機械は外部のデュアルポートRAM
と適切な辺をスワッピングする。辺機械はまた有効辺リ
ストを動的に維持する。つまり現走査線が新たな辺に到
達するとこれらを追加し、ある辺について完了するとこ
れらを削除する。辺機械はまた二つの辺が交差するとき
は有効辺の順序を再びソースする。これにより穴があい
ていることがある非平面の、くぼんだ、よじれた多角形
を描くことができる。
内のレジスタに格納される。二つよりも多くの有効辺が
存在する場合には、辺機械は外部のデュアルポートRAM
と適切な辺をスワッピングする。辺機械はまた有効辺リ
ストを動的に維持する。つまり現走査線が新たな辺に到
達するとこれらを追加し、ある辺について完了するとこ
れらを削除する。辺機械はまた二つの辺が交差するとき
は有効辺の順序を再びソースする。これにより穴があい
ていることがある非平面の、くぼんだ、よじれた多角形
を描くことができる。
補間機械4が各辺に沿ってステップ動作を行なうにつれ
て、その出力が塗りつぶし機械5によってサンプルされ
る。塗りつぶし機械は各辺の走査線への寄与の始まりの
点と終りの点をセーブする。これらから、塗りつぶしベ
クトルを作り、設定機械に送る。塗りつぶし機械はまた
頂点を適切に処理するため、各辺が丁度始まったところ
なのかそれとも終りであるかを常に把握している必要が
ある。辺機械、塗りつぶし機械、補間機械および設定機
械はすべてパイプラインになっているから、塗りつぶし
ベクトルの設定は次の辺セグメントの補間と平行して行
われることになる。
て、その出力が塗りつぶし機械5によってサンプルされ
る。塗りつぶし機械は各辺の走査線への寄与の始まりの
点と終りの点をセーブする。これらから、塗りつぶしベ
クトルを作り、設定機械に送る。塗りつぶし機械はまた
頂点を適切に処理するため、各辺が丁度始まったところ
なのかそれとも終りであるかを常に把握している必要が
ある。辺機械、塗りつぶし機械、補間機械および設定機
械はすべてパイプラインになっているから、塗りつぶし
ベクトルの設定は次の辺セグメントの補間と平行して行
われることになる。
ピクセルの補間 第1図のブロック図はPRC内で行われる幾つかの下位機
能の間の関係を示している。本発明の方法は主として設
定機械3と補間機械4に入っている。実際の一つの具体
例では、PRCは各機械ごとに、X、Y、Z、赤、緑、お
よび青のそれぞれに対して1個ずつ、計6個設けられて
いる。動作時、PRCは主軸を決めるにあたり(Xe−Xs)
と(Ye−Ys)のうちの大きい方を選ぶ。説明のため、今
は主軸としてXが選ばれたと仮定する。PRCの6個の補
間機械とこれらに関連した設定機械は次に、XsからXeへ
と増加あるいは減少するXの値に対して残りのパラメー
タを補間する。これからこれらのパラメータがXの関数
としてどう変化するかがわかる。これらのパラメータの
中にYがある。Xの系列およびその各々の値から得られ
たYの系列は最終的にはZの補間値と色の補間値を格納
するフレーム・バッファのアドレスとして使用される。
XとXの組合せも使用されるが、これは実効的には、主
軸(Xであると仮定している)方向に横切るのに使用さ
れるカウンタになっている。(Yが主軸であれば、Yと
Yとの組合せがY方向に横切るカウンタとして役立
つ。)次の説明を更に簡単にすることができるように、
Z値をXの関数として見つける設定機械と補間機械に我
々の注意を限定する。他のパラメータ用の対応する機械
はそれぞれの動作が同じである。
能の間の関係を示している。本発明の方法は主として設
定機械3と補間機械4に入っている。実際の一つの具体
例では、PRCは各機械ごとに、X、Y、Z、赤、緑、お
よび青のそれぞれに対して1個ずつ、計6個設けられて
いる。動作時、PRCは主軸を決めるにあたり(Xe−Xs)
と(Ye−Ys)のうちの大きい方を選ぶ。説明のため、今
は主軸としてXが選ばれたと仮定する。PRCの6個の補
間機械とこれらに関連した設定機械は次に、XsからXeへ
と増加あるいは減少するXの値に対して残りのパラメー
タを補間する。これからこれらのパラメータがXの関数
としてどう変化するかがわかる。これらのパラメータの
中にYがある。Xの系列およびその各々の値から得られ
たYの系列は最終的にはZの補間値と色の補間値を格納
するフレーム・バッファのアドレスとして使用される。
XとXの組合せも使用されるが、これは実効的には、主
軸(Xであると仮定している)方向に横切るのに使用さ
れるカウンタになっている。(Yが主軸であれば、Yと
Yとの組合せがY方向に横切るカウンタとして役立
つ。)次の説明を更に簡単にすることができるように、
Z値をXの関数として見つける設定機械と補間機械に我
々の注意を限定する。他のパラメータ用の対応する機械
はそれぞれの動作が同じである。
要約すれば、XとYとの組合せはXの値をインクリメン
トまたはデクリメントして主軸方向に横切る。得られた
Xの新しい値のそれぞれについて関連するZ(および
Y、および赤など)を見つけたいわけである。Z設定機
械はZ補間機械とともに動作して必要な一連のZ値を発
生する。各種パラメータ用の機械はすべてX機と同期し
て動作し、以後の同時対(X,Z)、(X,Y)、(X,赤)等
々を与える。ZがXの関数としてどのように補間されて
いるかを調べるには、従って幾つかの「X−Z」機械で
はなく、Z機械を調べるだけでよい。
トまたはデクリメントして主軸方向に横切る。得られた
Xの新しい値のそれぞれについて関連するZ(および
Y、および赤など)を見つけたいわけである。Z設定機
械はZ補間機械とともに動作して必要な一連のZ値を発
生する。各種パラメータ用の機械はすべてX機と同期し
て動作し、以後の同時対(X,Z)、(X,Y)、(X,赤)等
々を与える。ZがXの関数としてどのように補間されて
いるかを調べるには、従って幾つかの「X−Z」機械で
はなく、Z機械を調べるだけでよい。
今度は第2図を参照すると、第1図の設定機械3の簡略
ブロック図が示されている。以下に説明する第2図のブ
ロック図は上に示した手順MAI2の(*設定*)部分を構
成している。この目的で、第2図はレジスタSEV6、SEP
7、SEM8、SEE9、およびCOUNT10を備えている。またアキ
ュムレータADDS11およびシフトレジスタSEI12を備えて
いる。
ブロック図が示されている。以下に説明する第2図のブ
ロック図は上に示した手順MAI2の(*設定*)部分を構
成している。この目的で、第2図はレジスタSEV6、SEP
7、SEM8、SEE9、およびCOUNT10を備えている。またアキ
ュムレータADDS11およびシフトレジスタSEI12を備えて
いる。
設定機械が行うべき機能全体を示す目的で図の各種要素
間の幾つかの接続を簡略化して示してある。多数の指令
や相互接続のバスが関与しているが、全部は示していな
い。これらの厳密な性質については以下に更に詳しく説
明することにする。
間の幾つかの接続を簡略化して示してある。多数の指令
や相互接続のバスが関与しているが、全部は示していな
い。これらの厳密な性質については以下に更に詳しく説
明することにする。
ここでは設定機械のZ用のものへの入力はZ辺機械から
到来し、次のように処理されるということを述べること
で充分である。値Zs(Zの出発値)はSEVにロードさ
れ、ZsとZe(Zの出発値と最終値)は各々アキュムレー
タADDS11に送られ、ここでその差が求められる。設定機
械から得られる出力は図に示されているとうりである。
到来し、次のように処理されるということを述べること
で充分である。値Zs(Zの出発値)はSEVにロードさ
れ、ZsとZe(Zの出発値と最終値)は各々アキュムレー
タADDS11に送られ、ここでその差が求められる。設定機
械から得られる出力は図に示されているとうりである。
レジスタSEI12とCOUNTS10は、アキュムレータADDS11と
ともに、すべてDIVと記した他の中に示してあるが、MAI
2中の(*設定*)と記されたセグメントのDIVとMODの
演算を行う。これは従来のシフト・アンド・アド(また
は減算)形式の除算アルゴリズムを用いて行われる。
ともに、すべてDIVと記した他の中に示してあるが、MAI
2中の(*設定*)と記されたセグメントのDIVとMODの
演算を行う。これは従来のシフト・アンド・アド(また
は減算)形式の除算アルゴリズムを用いて行われる。
今度は第3図を参照すると、Z設定機械を通るデータの
正確なデータ・フローを示してある。この図は第6図に
示す状態機構の状態を参照しているとともに、本発明の
方法のMAI2の記述に使用する各種の名称を参照してい
る。なお同図で丸かっこ内はコメントであるが、A
〔B〕という記法は「Bを有しているA」という意味で
ある。
正確なデータ・フローを示してある。この図は第6図に
示す状態機構の状態を参照しているとともに、本発明の
方法のMAI2の記述に使用する各種の名称を参照してい
る。なお同図で丸かっこ内はコメントであるが、A
〔B〕という記法は「Bを有しているA」という意味で
ある。
今度は第4図を参照すると、第1図の補間機械4が第2
図の設定機械の出力に基いてどのように動作し、手順MA
I2中の(*補間*)と記されたセグメントを実行してい
るかがわかる。第2図の場合のように、簡単な相互接続
と指令の情報だけを示してある。これらの論題に関する
一層の詳細は第7図に示してある。第7図では補間機械
を制御する状態機械自身について記してある。
図の設定機械の出力に基いてどのように動作し、手順MA
I2中の(*補間*)と記されたセグメントを実行してい
るかがわかる。第2図の場合のように、簡単な相互接続
と指令の情報だけを示してある。これらの論題に関する
一層の詳細は第7図に示してある。第7図では補間機械
を制御する状態機械自身について記してある。
特に、コード行「Zf:=Zf+Mf2」と「Zf:=Zf+Mf」
は、アキュムレータBRE14、レジスタBRP15、およびBRM1
6により、アキュムレータBRE14の最上位ビット(MSB)
を表わす信号SELECT18により制御されるセレクタ17と協
同で、実行される。これらコード行はTHENおよびELSE節
の一部として現われるので、一度に一方の行だけが実行
されることになる。どちらの行が実行されるかはアキュ
ムレータBRE14のMSBによって決まる。これに留意すれ
ば、図を調べることにより、BRE14は自身の内容をBRM16
またはBRP15の内容に加算し、その和を次のこのような
加算のために自身の内部に残すことがわかる。BREのMSB
はMAI2の「IF Zf>=0」に対応する。MSBが1であれ
ば「ELSE」側を行い、MSBが0であれば「THEN」側を行
う。
は、アキュムレータBRE14、レジスタBRP15、およびBRM1
6により、アキュムレータBRE14の最上位ビット(MSB)
を表わす信号SELECT18により制御されるセレクタ17と協
同で、実行される。これらコード行はTHENおよびELSE節
の一部として現われるので、一度に一方の行だけが実行
されることになる。どちらの行が実行されるかはアキュ
ムレータBRE14のMSBによって決まる。これに留意すれ
ば、図を調べることにより、BRE14は自身の内容をBRM16
またはBRP15の内容に加算し、その和を次のこのような
加算のために自身の内部に残すことがわかる。BREのMSB
はMAI2の「IF Zf>=0」に対応する。MSBが1であれ
ば「ELSE」側を行い、MSBが0であれば「THEN」側を行
う。
これら一連の加算に対してZf、Mf、およびMf2は補間す
べき各ベクトルにつき1回ロードされる初期値である。
これに関連するNの値も各ベクトルの補間の始めにCOUN
T B19に初期ロードされる。COUNT BはアキュムレータBR
E14が新しい和を発生するごとに1回その値をデクリメ
ントする。上記の加算動作はCOUNT B19のカウントが0
に等しくなるまで、これらの初期値に基づいて繰返し続
く。
べき各ベクトルにつき1回ロードされる初期値である。
これに関連するNの値も各ベクトルの補間の始めにCOUN
T B19に初期ロードされる。COUNT BはアキュムレータBR
E14が新しい和を発生するごとに1回その値をデクリメ
ントする。上記の加算動作はCOUNT B19のカウントが0
に等しくなるまで、これらの初期値に基づいて繰返し続
く。
MAI2を調べることにより、Mf2がZfに加えられる際には
「Zi:=Zi+Mi+1」も実行しなければならないし、そ
うでなければ「Zi:=Zi+Mi」だけを実行しなければな
らないことがわかる。これはその内容(Mi)をアキュム
レータBRV20(その初期内容はZsつまりZiの出発値であ
った)に結合しているレジスタBRI21により行われる。
二つの場合の相違はBRVアキュムレータ20へのキャリー
があるか無いかによって生ずるものであり、これはアキ
ュムレータBRE14のMSB18によって制御される。MSB18の
値は「IF Zf>=0」の条件に対応し、これは「+1」
を追加すべきか否かを選択するものであることを思い出
して欲しい。前のように、これら繰返し加算はCOUNT B1
9の内容が0になるまで続く。
「Zi:=Zi+Mi+1」も実行しなければならないし、そ
うでなければ「Zi:=Zi+Mi」だけを実行しなければな
らないことがわかる。これはその内容(Mi)をアキュム
レータBRV20(その初期内容はZsつまりZiの出発値であ
った)に結合しているレジスタBRI21により行われる。
二つの場合の相違はBRVアキュムレータ20へのキャリー
があるか無いかによって生ずるものであり、これはアキ
ュムレータBRE14のMSB18によって制御される。MSB18の
値は「IF Zf>=0」の条件に対応し、これは「+1」
を追加すべきか否かを選択するものであることを思い出
して欲しい。前のように、これら繰返し加算はCOUNT B1
9の内容が0になるまで続く。
上述の一連の事象はまた第5図のデータ・フロー図に一
層記号化した形で示されている。
層記号化した形で示されている。
今度は第8A図ないし第8C図、第9A図および第9B図を参照
する。いくらか様式化されているが、それにもかかわら
ず、これは第2図および第4図の各種レジスタおよびア
キュムレータがこの方法の好ましい一実施例において実
際にどのように接続されているかの完全な説明である。
する。いくらか様式化されているが、それにもかかわら
ず、これは第2図および第4図の各種レジスタおよびア
キュムレータがこの方法の好ましい一実施例において実
際にどのように接続されているかの完全な説明である。
第8A図ないし第8C図、第9A図および第9B図は可能なデー
タ・フローの経路を記すハードウェア接続図である。こ
れらの図はどんな命令が存在するかを示していないし、
命令が発せられる順序も示していない。しかし、非常に
多くの事例では、命令の存在は接続の性質から容易に推
論することができる。たとえば、レジスタSEMがバスNSE
TUP9によりセットすることができるとすれば、「Set SE
M from NSETUP(NSETUPからSEMをセットせよ)」なる命
令が存在しなければならない。
タ・フローの経路を記すハードウェア接続図である。こ
れらの図はどんな命令が存在するかを示していないし、
命令が発せられる順序も示していない。しかし、非常に
多くの事例では、命令の存在は接続の性質から容易に推
論することができる。たとえば、レジスタSEMがバスNSE
TUP9によりセットすることができるとすれば、「Set SE
M from NSETUP(NSETUPからSEMをセットせよ)」なる命
令が存在しなければならない。
第8A図ないし第8C図は6組の辺機械、設定機械、補間機
械、塗りつぶし機械、およびラインタイプ/フォーマッ
ト機械の内部の内部接続を記している。すなわち、第8
図で説明した接続あるいは能力は6つ、つまりリスト:
X、Y、Z、赤、緑、および青、のハードウェアの各組
について一つずつ存在するものとして理解すべきであ
る。対照的に、第9A図および第9B図はほとんど全体の制
御と帳薄づけに関係しており、1つだけ存在している。
械、塗りつぶし機械、およびラインタイプ/フォーマッ
ト機械の内部の内部接続を記している。すなわち、第8
図で説明した接続あるいは能力は6つ、つまりリスト:
X、Y、Z、赤、緑、および青、のハードウェアの各組
について一つずつ存在するものとして理解すべきであ
る。対照的に、第9A図および第9B図はほとんど全体の制
御と帳薄づけに関係しており、1つだけ存在している。
本開示をしめくくるにあたり、第6A図ないし第6K図はPR
C中の6個の設定機械を制御する状態機械(図示せず)
の詳細な状態図である。一つの状態機械は6個の設定機
械すべてを制御する。第7A図ないし第7I図はPRC中の6
個の補間機械に対する同様な状態図である。これらの図
は本方法の開示の周辺的な動作について多くの細目を含
んでいるが、その方法とそのハードウェア構成はこれら
の状態図で完全に説明されている。使用した記号は第2
図〜第5図、第8図および第9図の記号と一貫してい
る。たとえば、第6A図の状態STSIDLEの「LD_SETUP_ADD
S」は「load ADDS from the bus NSETUP(バスNSETUPか
らADDSをロードせよ)」を意味している。バスの名称は
省略したこともあるが、レジスタの名称は省略していな
い。
C中の6個の設定機械を制御する状態機械(図示せず)
の詳細な状態図である。一つの状態機械は6個の設定機
械すべてを制御する。第7A図ないし第7I図はPRC中の6
個の補間機械に対する同様な状態図である。これらの図
は本方法の開示の周辺的な動作について多くの細目を含
んでいるが、その方法とそのハードウェア構成はこれら
の状態図で完全に説明されている。使用した記号は第2
図〜第5図、第8図および第9図の記号と一貫してい
る。たとえば、第6A図の状態STSIDLEの「LD_SETUP_ADD
S」は「load ADDS from the bus NSETUP(バスNSETUPか
らADDSをロードせよ)」を意味している。バスの名称は
省略したこともあるが、レジスタの名称は省略していな
い。
以上説明したように、本発明によれば高速、高精度の補
間を行うことができ、コンピュータ・グラフィクス分野
等に用いるのに好適である。
間を行うことができ、コンピュータ・グラフィクス分野
等に用いるのに好適である。
第1図は本発明の一実施例を実行するためのハードウェ
ア構成例を示すブロック図、第2図は第1図中で用いら
れている設定機械のブロック図、第3図は第2図の設定
機械のデータ・フローを説明する図、第4図は第1図中
で用いられる補間機械のブロック図、第5図は第4図の
補間機械のデータ・フローを説明する図、第6A図ないし
第6K図は第2図の設定機械の動作を制御する状態機械の
状態図、第6図は第6A図ないし第6K図の接続関係を示す
図、第7A図ないし第7I図は第4図の補間機械の動作を制
御する状態機械の状態図、第7図は第7A図ないし第7I図
の接続関係を示す図、第8A図ないし第8C図、第9A図およ
び第9B図は可能なデータ・フローの経路を示すハード・
ウェア接続図である。 1:デュアルポートRAM、 2:辺機械、 3:設定機械、 4:補間機械、 5:塗りつぶし機械。
ア構成例を示すブロック図、第2図は第1図中で用いら
れている設定機械のブロック図、第3図は第2図の設定
機械のデータ・フローを説明する図、第4図は第1図中
で用いられる補間機械のブロック図、第5図は第4図の
補間機械のデータ・フローを説明する図、第6A図ないし
第6K図は第2図の設定機械の動作を制御する状態機械の
状態図、第6図は第6A図ないし第6K図の接続関係を示す
図、第7A図ないし第7I図は第4図の補間機械の動作を制
御する状態機械の状態図、第7図は第7A図ないし第7I図
の接続関係を示す図、第8A図ないし第8C図、第9A図およ
び第9B図は可能なデータ・フローの経路を示すハード・
ウェア接続図である。 1:デュアルポートRAM、 2:辺機械、 3:設定機械、 4:補間機械、 5:塗りつぶし機械。
Claims (2)
- 【請求項1】下記の(a)ないし(q)のステップを有
し、ピクセルの第1のピクセル値を表す独立変数Xが走
査線に沿ってXsで始まりXeで終わる整数の順序付けられ
た系列に従って変化するにつれて、所与の出発値Zsから
所与の終了値Zeまでの範囲をとる前記ピクセルの第2の
ピクセル値を表す従属変数の整数値Zを線型補間し、も
って対(X,Z)の系列に応じて前記ピクセルを表示する
ピクセル値補間表示方法: (a)差ΔZ=Ze−ZsおよびΔX=Xe−Xsを求める; (b)ΔZをΔXで除算することにより整数の商Miおよ
び剰余Rを求める; (c)剰余Rの値に2を乗算することによりスケーリン
グされた少数部Mfをもとめる; (d)Mf−ΔXの値を項Zfに、かつZsを項Ziに割り当て
る; (e)Xsの値を項Xに割り当てる; (f)(Xs,Zs)を対(X,Z)の系列中の最初のものとす
る; (g)項Xの値を前記整数の順序付けられた系列中の次
の値で置換える; (h)Zfの値が0以上か否か判定する; (i)ステップ(h)の結果、Zfの値が0以上であった
なら、下記のステップ(j)および(k)を行う; (j)Mi+1をZiに加算する;および (k)Mf−2ΔXをZfに加算する; (l)ステップ(h)の結果、Zfの値が0未満であった
なら、下記のステップ(m)および(n)を行う; (m)MiをZiに加算する;および (n)MfをZfに加算する; (o)(X,Zi)を対(X,Z)の系列中の次のものとす
る; (p)ステップ(g)ないし(o)を、これらステップ
がX=Xeについて行われるまで繰り返す;および (q)前記対(X,Z)で定められるピクセル値を有する
ピクセルからなる走査線を発生する。 - 【請求項2】前記第1のピクセル値がピクセルの位置を
表し、前記第2のピクセル値がピクセルの深さを表す特
許請求の範囲第1項記載のピクセル値補間表示方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US89718286A | 1986-08-15 | 1986-08-15 | |
| US897182 | 1986-08-15 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS6347876A JPS6347876A (ja) | 1988-02-29 |
| JPH0789381B2 true JPH0789381B2 (ja) | 1995-09-27 |
Family
ID=25407478
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP62202976A Expired - Lifetime JPH0789381B2 (ja) | 1986-08-15 | 1987-08-13 | ピクセル値補間表示方法 |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0256488B1 (ja) |
| JP (1) | JPH0789381B2 (ja) |
| DE (1) | DE3751057T2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105467641B (zh) * | 2015-11-30 | 2018-10-12 | 信利(惠州)智能显示有限公司 | 像素排列方法 |
-
1987
- 1987-08-11 EP EP87111593A patent/EP0256488B1/en not_active Expired - Lifetime
- 1987-08-11 DE DE3751057T patent/DE3751057T2/de not_active Expired - Fee Related
- 1987-08-13 JP JP62202976A patent/JPH0789381B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0256488A2 (en) | 1988-02-24 |
| EP0256488B1 (en) | 1995-02-15 |
| DE3751057T2 (de) | 1995-10-12 |
| EP0256488A3 (en) | 1990-02-21 |
| DE3751057D1 (de) | 1995-03-23 |
| JPS6347876A (ja) | 1988-02-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5025405A (en) | Method of interpolating pixel values | |
| US20030016221A1 (en) | Processing graphic objects for fast rasterised rendering | |
| JP4399910B2 (ja) | ブレンディング処理を含む画像処理装置及びその方法 | |
| EP1025558B1 (en) | A method and apparatus for performing chroma key, transparency and fog operations | |
| JP2618951B2 (ja) | 三次元図形処理装置 | |
| JPH05307610A (ja) | テクスチャマッピング方法およびその装置 | |
| JPH0916806A (ja) | 立体画像処理装置 | |
| US4970499A (en) | Apparatus and method for performing depth buffering in a three dimensional display | |
| JPH08329261A (ja) | パラメータ曲線発生器 | |
| GB2187368A (en) | Graphics display processors | |
| US6784895B1 (en) | Programmable multiple texture combine circuit for a graphics processing system and method for use thereof | |
| JPH0789381B2 (ja) | ピクセル値補間表示方法 | |
| JP3593016B2 (ja) | 直線描画装置、直線描画方法及び座標生成装置 | |
| EP0389890A2 (en) | Method and apparatus for generating figures with three degrees of freedom | |
| JPH11185052A (ja) | 3次元コンピュータグラフィックスのテクスチャマッピング座標計算装置および方法 | |
| JPH02190983A (ja) | アドレス変換装置 | |
| US6859205B1 (en) | Apparatus and method for drawing lines | |
| JPH0350686A (ja) | 図形処理方式 | |
| JP2804028B2 (ja) | レンダリングプロセツサ | |
| JP2602492B2 (ja) | 曲面表示方法 | |
| JPH0248780A (ja) | 直線発生装置 | |
| KR0171156B1 (ko) | 3차원 영상데이타 연산처리방법 및 장치 | |
| JPS60134290A (ja) | カラー表示装置 | |
| KR950007531B1 (ko) | 도형처리시스템 및 도형처리방법 | |
| JPH0357087A (ja) | 多角形ぬりつぶし装置 |