JP3139008B2 - 線分画素発生器 - Google Patents
線分画素発生器Info
- Publication number
- JP3139008B2 JP3139008B2 JP22728790A JP22728790A JP3139008B2 JP 3139008 B2 JP3139008 B2 JP 3139008B2 JP 22728790 A JP22728790 A JP 22728790A JP 22728790 A JP22728790 A JP 22728790A JP 3139008 B2 JP3139008 B2 JP 3139008B2
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- coordinate
- point
- coordinates
- unit
- 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 - Fee Related
Links
Landscapes
- Image Generation (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] 本発明はラスタ出力装置に描画する図形のビットマッ
プデータを作成する図形描画装置に関し、特に、線分の
近似画素列の座標値を算出する線分画素発生器に関す
る。
プデータを作成する図形描画装置に関し、特に、線分の
近似画素列の座標値を算出する線分画素発生器に関す
る。
[従来の技術] ラスタ出力装置の画面は、個々に明暗や色を指定でき
る画素が縦及び横方向に一定間隔に並んだものであり、
画像はこれらの画素の明暗や色を指定することで作成さ
れる。また画面上の位置を表すため、各画素の位置が整
数座標点(X・Y座標が共に整数である点)となるよう
に込められたX・Y座標系が使用される。線分は始点及
び終点の座標値によって指定され、画面上では、その線
分に近い一連の画素(以後、近似画素列と呼ぶ)で近似
される。線分画素発生処理とは、この近似画素列の各画
素の座標値を算出することである。ラスタ出力装置で描
画しようとする線分および多角形の座標データは、任意
倍率の拡大縮小や、回軸などを施し作成されることが多
いため、座標データ作成の段階では、線分の始点終点お
よび多角形の各頂点の座標値は実数として処理され、2
進浮動小数点データまたは2進固定小数点データとして
表されている場合が多い。従来の線分画素発生装置は入
力される線分の始点及び終点の座標値を整数に制限して
いたため、本来実数データである始点と終点の座標値を
前処理として整数データに変換を行った後に、線分画素
発生装置に入力する必要があった。
る画素が縦及び横方向に一定間隔に並んだものであり、
画像はこれらの画素の明暗や色を指定することで作成さ
れる。また画面上の位置を表すため、各画素の位置が整
数座標点(X・Y座標が共に整数である点)となるよう
に込められたX・Y座標系が使用される。線分は始点及
び終点の座標値によって指定され、画面上では、その線
分に近い一連の画素(以後、近似画素列と呼ぶ)で近似
される。線分画素発生処理とは、この近似画素列の各画
素の座標値を算出することである。ラスタ出力装置で描
画しようとする線分および多角形の座標データは、任意
倍率の拡大縮小や、回軸などを施し作成されることが多
いため、座標データ作成の段階では、線分の始点終点お
よび多角形の各頂点の座標値は実数として処理され、2
進浮動小数点データまたは2進固定小数点データとして
表されている場合が多い。従来の線分画素発生装置は入
力される線分の始点及び終点の座標値を整数に制限して
いたため、本来実数データである始点と終点の座標値を
前処理として整数データに変換を行った後に、線分画素
発生装置に入力する必要があった。
線分画素発生処理は、基本的には一定間隔になぶ線分
上の点について、それらの点に最も近い画素を近似画素
として算出する方法が採用されている。
上の点について、それらの点に最も近い画素を近似画素
として算出する方法が採用されている。
ソフトウェアで線分画素発生処理を行う場合は、線分
の始点と終点の座標を実数データとして入力し、実数演
算によってその入力された始点と終点の座標に忠実に、
近似画素を求めることは可能である。簡単な例では始点
をS(xS,yS)、終点をE(xe,ye)とし、線分SEの方
程式(y=ax+b)とする。ここでa,bはa=ye−yS/
xe−xS、b=xSye−xeyS/xe−xSのように求められ、こ
の方程式よりxSからxeまでの範囲の整数値に対し、そ
れをX座標としたときのY座標を求め、それを整数に丸
めることで、近似画素のY座標値とする。このままでは
傾きが急な時に、得られる近似画素が線分上まだらある
いは不連続になるため、|a|>1の時は、X座標とY座
標を置き換えて処理する。
の始点と終点の座標を実数データとして入力し、実数演
算によってその入力された始点と終点の座標に忠実に、
近似画素を求めることは可能である。簡単な例では始点
をS(xS,yS)、終点をE(xe,ye)とし、線分SEの方
程式(y=ax+b)とする。ここでa,bはa=ye−yS/
xe−xS、b=xSye−xeyS/xe−xSのように求められ、こ
の方程式よりxSからxeまでの範囲の整数値に対し、そ
れをX座標としたときのY座標を求め、それを整数に丸
めることで、近似画素のY座標値とする。このままでは
傾きが急な時に、得られる近似画素が線分上まだらある
いは不連続になるため、|a|>1の時は、X座標とY座
標を置き換えて処理する。
しかしながら、このようなソフトウェアによる方法で
は、元来ハードウェアによる方法と比べ処理時間が長か
った上に、実数演算によるオーバーヘッドが大きくな
り、処理時間がかなり長くなるという問題がある。
は、元来ハードウェアによる方法と比べ処理時間が長か
った上に、実数演算によるオーバーヘッドが大きくな
り、処理時間がかなり長くなるという問題がある。
従来の線分画素発生装置では、整数演算のみにより線
分の近似画素列が算出できるブレゼンハム(Bresenha
m)のアルゴリズムが、ハードウェア化が容易で高速で
実行可能であることから使用されていた。
分の近似画素列が算出できるブレゼンハム(Bresenha
m)のアルゴリズムが、ハードウェア化が容易で高速で
実行可能であることから使用されていた。
Bresenhamアルゴリズムは、要するに線分の始点と終
点のX座標およびY座標の差(ΔX,ΔY)のうち長い方
を長軸、短い方を短軸とし長軸の値を始点座標値から終
点座標値に向けて1座標値(+1または−1)ずつ変え
たとき、短軸の座標値を変えないか、1座標値(+1ま
たは−1)変えるかを選択することによって近似画素を
発生するものであり、上の選択を実際の線分上の点と、
近似画素との差(誤差)を代表する誤差項と呼ばれる整
数パラメータを使用して行っている。ここで誤差項を整
数にするために、線分の始点及び終点の座標値が整数で
あることが前提として要求されている。
点のX座標およびY座標の差(ΔX,ΔY)のうち長い方
を長軸、短い方を短軸とし長軸の値を始点座標値から終
点座標値に向けて1座標値(+1または−1)ずつ変え
たとき、短軸の座標値を変えないか、1座標値(+1ま
たは−1)変えるかを選択することによって近似画素を
発生するものであり、上の選択を実際の線分上の点と、
近似画素との差(誤差)を代表する誤差項と呼ばれる整
数パラメータを使用して行っている。ここで誤差項を整
数にするために、線分の始点及び終点の座標値が整数で
あることが前提として要求されている。
Bresenhamアルゴリズムについて、第5図(a)〜
(c)を用いて詳しく説明する。
(c)を用いて詳しく説明する。
今、整数座標値を持つ2点S(xS,yS)、E(xe,y
e)を取り、S(xS,yS)を始点、E(xe,ye)を終点と
する線分SEの近似画素列を求めるとする。前述した始点
と終点の座標の差(Δx,Δy)は、 ΔX=xe−xS,ΔY=ye−yS ・・・・(式1) である。
e)を取り、S(xS,yS)を始点、E(xe,ye)を終点と
する線分SEの近似画素列を求めるとする。前述した始点
と終点の座標の差(Δx,Δy)は、 ΔX=xe−xS,ΔY=ye−yS ・・・・(式1) である。
Bresenhamアルゴリズムでは、始点から終点へと線分
に沿って、近似画素を逐次求めていく。ここでi番目に
求まる近似画素をPiと表し、その座標を(xi,yi)と表
すとする。
に沿って、近似画素を逐次求めていく。ここでi番目に
求まる近似画素をPiと表し、その座標を(xi,yi)と表
すとする。
最初の画素P0(初期画素と呼ぶ)は始点Sである。つ
まり、 P0(x0,y0)=S(xS,yS) ・・・(式2) ここで、便宜上、長軸の座標をL座標、短軸の座標をS
座標と表す。つまりX座標が長軸(|ΔY|<|ΔX|)の
時、L座標はX座標、S座標はY座標を表し、Y座標が
長軸(|ΔX|<|Y|)の時、L座標はY座標,S座標はX
座標を表している。
まり、 P0(x0,y0)=S(xS,yS) ・・・(式2) ここで、便宜上、長軸の座標をL座標、短軸の座標をS
座標と表す。つまりX座標が長軸(|ΔY|<|ΔX|)の
時、L座標はX座標、S座標はY座標を表し、Y座標が
長軸(|ΔX|<|Y|)の時、L座標はY座標,S座標はX
座標を表している。
また、近似画素PiのL座標をli、S座標をSiと表しP
iのXY座標(xi,yi)の替わりにli,siで画素Piの位置
を示すものとする。また同様にΔX,ΔYの変わりにΔL,
ΔSを用いる。
iのXY座標(xi,yi)の替わりにli,siで画素Piの位置
を示すものとする。また同様にΔX,ΔYの変わりにΔL,
ΔSを用いる。
Bresenhamアルゴリズムでは 第5図(A)で示すよ
うに、長軸つまりL座標を1座標値(+1または−1)
変化させたときに、短軸つまりS座標を変化させない
か、1座標値(+1または−1)変えるかを選択する。
うに、長軸つまりL座標を1座標値(+1または−1)
変化させたときに、短軸つまりS座標を変化させない
か、1座標値(+1または−1)変えるかを選択する。
この時のL座標の1座標値というのは、始点から終点
へl座標が増加(ΔL>0)の時、「+1」、減少(Δ
L<0)の時「−1」である。つまりL座標の1座標値
と言うのはsgn(ΔL)である(ここで、関数sgnは次式
で表される関数である)。
へl座標が増加(ΔL>0)の時、「+1」、減少(Δ
L<0)の時「−1」である。つまりL座標の1座標値
と言うのはsgn(ΔL)である(ここで、関数sgnは次式
で表される関数である)。
sgn (a)= 1(a>0の時) 0(a=0の時) −1(a<0の時) また同様にS座標の1座標値というのはsgn(ΔS)で
ある。
ある。
画素Pi+1と画素Piの関係を考えると、 li+1=li+sgn(ΔL) si+1=siまたはsi+sgn(ΔS) ・・・(式3) となる。
第5図(B)に示すように、直線L=liと、線分SE
との交点を点Qiとし、そのS座標をSiと表すとする。交
点Qiと画素Piとのy座標の差Si−siを誤差と呼びEiと
表す。画素Pi+1は1つ前の画素Piと誤差Eiを使って次
のように定まる。
との交点を点Qiとし、そのS座標をSiと表すとする。交
点Qiと画素Piとのy座標の差Si−siを誤差と呼びEiと
表す。画素Pi+1は1つ前の画素Piと誤差Eiを使って次
のように定まる。
(式3)より、第5図(C)で示すように、画素Pi+
1は、A(li+1,si)またはB(li+1,si+sgn(Δ
S))のいずれかである。
1は、A(li+1,si)またはB(li+1,si+sgn(Δ
S))のいずれかである。
点Qi+1と画素AとのS座標の差をE′i+1とおく
と、 E′i+1=Ei+|ΔS|/|ΔL| ・・・(式4) となる。
と、 E′i+1=Ei+|ΔS|/|ΔL| ・・・(式4) となる。
第5図(C)よりわかるように、 (式3),(式4),(式5)より画素Pi+1は次のよ
うに求まることがわかる。
うに求まることがわかる。
また初期条件は式2とP0での誤差E0=0より l0=始点SのL座標 s0=始点SのS座標 E′1=|ΔS|/|ΔL| ・・・(式7) 以上より(式7)を初期条件として、漸化式(式6)
を使って逐次近似画素Piを求められる。PiのL座標li
が終点EのL座標と一致した時点で、終点までの画素を
求め終わったこととなり、処理を終了すればよい。
を使って逐次近似画素Piを求められる。PiのL座標li
が終点EのL座標と一致した時点で、終点までの画素を
求め終わったこととなり、処理を終了すればよい。
実際のBresenhamアルゴリズムでは、処理を整数化す
るために、E′iの替わりに誤差項と呼ばれる整数パラ
メータeiを と定義して、使用している。
るために、E′iの替わりに誤差項と呼ばれる整数パラ
メータeiを と定義して、使用している。
漸化式(式6)のE′iに対する処理は、eiに対す
る整数演算のみの処理に置き換えられる。
る整数演算のみの処理に置き換えられる。
第4図はBresenhamアルゴリズムを適用した線分画素
発生器のブロック図である。座標入力部41は外部から近
似画素列を得ようとする線分の始点Sと終点Eの座標値
を入力し、そのまま制御信号発生部42に出力する。ここ
で入力される座標値は整数データでなくてはならない。
制御信号発生部42は、入力した座標値から、X・Y座標
の変位ΔX,ΔYの符号sgn(ΔX),sgn(ΔY)と絶対
値|ΔX|,|ΔY|を算出し、|ΔX|と|ΔY|の大小関係よ
り、長軸がX座標かY座標を判定し、その判定結果を示
す長軸X/Y信号を出力すると共に長軸がX座標かY座標
かに従って始点のLS座標,終点のL座標値、|ΔL|,|Δ
S|,sgn(ΔL),sgn(ΔS)を出力する。初期設定部44
は入力した始点のLS座標をそのまま初期画素P0のLS座標
として、また入力した|ΔL|,|ΔS|から初期誤差項e1
(=2|ΔS|−|ΔL|)を算出して画素座標算出部45に出
力する。画素座標算出部45は、|ΔL|,|ΔS|,sgn(Δ
L),sgn(ΔS),初期画素P0のLS座標,初期誤差項e1
によって、近似画素PiのLS座標を逐次算出し、そのL座
標liと終点座標leを比較し、終了判定すると同時に、
長軸X/Y信号に従ってPiのLS座標をX・Y座標(xi,y
i)として外部に出力する。
発生器のブロック図である。座標入力部41は外部から近
似画素列を得ようとする線分の始点Sと終点Eの座標値
を入力し、そのまま制御信号発生部42に出力する。ここ
で入力される座標値は整数データでなくてはならない。
制御信号発生部42は、入力した座標値から、X・Y座標
の変位ΔX,ΔYの符号sgn(ΔX),sgn(ΔY)と絶対
値|ΔX|,|ΔY|を算出し、|ΔX|と|ΔY|の大小関係よ
り、長軸がX座標かY座標を判定し、その判定結果を示
す長軸X/Y信号を出力すると共に長軸がX座標かY座標
かに従って始点のLS座標,終点のL座標値、|ΔL|,|Δ
S|,sgn(ΔL),sgn(ΔS)を出力する。初期設定部44
は入力した始点のLS座標をそのまま初期画素P0のLS座標
として、また入力した|ΔL|,|ΔS|から初期誤差項e1
(=2|ΔS|−|ΔL|)を算出して画素座標算出部45に出
力する。画素座標算出部45は、|ΔL|,|ΔS|,sgn(Δ
L),sgn(ΔS),初期画素P0のLS座標,初期誤差項e1
によって、近似画素PiのLS座標を逐次算出し、そのL座
標liと終点座標leを比較し、終了判定すると同時に、
長軸X/Y信号に従ってPiのLS座標をX・Y座標(xi,y
i)として外部に出力する。
以上のような動作によって入力された線分の近似画素
列のX・Y座標が算出され出力される。
列のX・Y座標が算出され出力される。
[発明が解決しようとする課題] 前述したように、ラスタ出力装置で描画しようとする
線分および多角形の座標データは、データ作成の段階で
は実数データとして扱われている場合が多く、従来の線
分画素発生装置では、線分の両端点の座標値が整数デー
タに制限されていたため、本来実数データで与えられた
座標値を前処理として整数データに変換を行った後に線
分画素発生装置に入力する必要があった。この変換によ
って、本来描画しようとした線分および多角形を歪める
ことになるという欠点を有する。
線分および多角形の座標データは、データ作成の段階で
は実数データとして扱われている場合が多く、従来の線
分画素発生装置では、線分の両端点の座標値が整数デー
タに制限されていたため、本来実数データで与えられた
座標値を前処理として整数データに変換を行った後に線
分画素発生装置に入力する必要があった。この変換によ
って、本来描画しようとした線分および多角形を歪める
ことになるという欠点を有する。
第3図は線分の両端点を整数値に制限することにより
生じる歪みの一例を示す図である。前処理前の線分UV
は、前処理の座標値の整数値への変換により、点Uは点
S、点Vは点Eに変換され、線分画素発生装置では線分
SEの近似画素を発生する。そのためピクセルAとBとで
は、ピクセルAがより本来の線分UVに近いにも変わら
ず、ピクセルBの方が近似画素として選択されている。
生じる歪みの一例を示す図である。前処理前の線分UV
は、前処理の座標値の整数値への変換により、点Uは点
S、点Vは点Eに変換され、線分画素発生装置では線分
SEの近似画素を発生する。そのためピクセルAとBとで
は、ピクセルAがより本来の線分UVに近いにも変わら
ず、ピクセルBの方が近似画素として選択されている。
一方、ソフトウェアによる線分画素発生処理では、実
数演算を行うことで、始点と終点の座標値が実数データ
である線分に対して忠実に近似画素列を算出できるよう
にアルゴリズムが考えられるが処理時間が長くなるとい
う問題がある。
数演算を行うことで、始点と終点の座標値が実数データ
である線分に対して忠実に近似画素列を算出できるよう
にアルゴリズムが考えられるが処理時間が長くなるとい
う問題がある。
[課題を解決するための手段] 本願発明の要旨は、座標データを入力する座標入力部
と、該座標入力部に接続された制御信号発生部と、制御
信号発生部に接続された初期設定部と、上記制御信号発
生部と上記初期設定部とに接続された画素座標算出部と
を備えブレゼンハムのアルゴリズムで始点と終点を結ぶ
線分に近似した画素列を算出する線分画素発生器におい
て、上記画素入力部と上記制御信号発生部と上記初期設
定部と上記画素座標算出部とに接続された始点終点画素
算出部を設け、上記座標入力部(1)は外部から近似画
素列を得ようとする線分(SE)の始点(S)と終点
(E)の上記X−Y座標におけるそれぞれのXY座標値
(xS,yS),(xe,ye)を、2進固定小数点データとして
入力し、上記XY座標値を上記制御信号発生部(2)およ
び始点終点画素算出部(3)に出力し、上記制御信号発
生部(2)は上記座標入力部(1)から入力した始点
(S)と終点(E)の上記XY座標値(xS,yS),(xe,
ye)から、XY座標の変位(ΔX),(ΔY)の絶対値
(|ΔX|),(|ΔY|)と符号(sgn(ΔX)),(sgn
(ΔY))を算出し、上記絶対値|ΔX|,|ΔY|の大小関
係より長軸がX座標かY座標かを判定し、その判定結果
を示す長軸信号(X/Y)を上記始点終点画素算出部
(3)と上記画素座標算出部(5)に出力し、判定した
長軸がX座標かY座標かにしたがってLS座標の変位の絶
対値(|ΔL|),(|ΔS|)と符号(sgn(ΔL)),
(sgn(ΔS))を上記初期設定部4と上記画素座標算
出部5に出力し、上記始点終点画素算出部(3)は上記
座標入力部(1)から上記始点と上記終点のXY座標値
(xS,yS),(xe,ye)を入力して始点画素の座標値と終
点画素の座標値と上記始点画素と上記始点画素との差を
算出し、上記制御信号発生部(2)から入力した上記長
軸信号に従って上記始点画素のLS座標値(i・S,isS)
と、上記始点画素と上記始点画素のLS座標の差を(d・
S,dsS)を上記初期設定部4に供給し、上記始点画素の
L座標(PS)と上記終点画素(Pe)のL座標(i・e)
を上記画素座標算出部(5)に出力し、上記始点画素の
XY座標と上記終点画素のXY座標を線分上の画素として外
部に出力し、上記初期設定部(4)は上記制御信号発生
部(2)から入力される上記LS座標上の上記変位の上記
絶対値|ΔL|,|ΔS|と上記符号(sgn(ΔL)),(sgn
(ΔS))と上記始点終点画素算出部(3)から入力さ
れる上始点画素(PS)のLS座標値(i・S,isS)および
上記始点画素と上記始点画素のLS座標上の差(d・S,ds
S)から初期画素(PO)と初期誤差項(e1)を算出して
上記画素座標算出部(5)に出力し、上記画素座標算出
部(5)は上記初期設定部(4)から入力された上記初
期画素(PO)と上記初期誤差項(e1)を初期条件とし、
上記制御信号発生部(2)から入力された上記変位の絶
対値(|ΔL|,|ΔS|)と上記符号(sgn(ΔL),sgn
(ΔS))に従って逐次、上記ブレゼンハイムのアルゴ
リズムで近似画素(Pi)のLS座標値(・i,si)を算出
し、該座標値(・i)と上記始点終点画素算出部(3)
から入力した上記終点画素(Pe)のL座標(・e)を比
較して終了判定を行い、上記制御信号発生部2から入力
した上記長軸信号にしたがって、近似画素(Pi)のXY座
標(xi,yi)を外部に出力することを特徴とする。
と、該座標入力部に接続された制御信号発生部と、制御
信号発生部に接続された初期設定部と、上記制御信号発
生部と上記初期設定部とに接続された画素座標算出部と
を備えブレゼンハムのアルゴリズムで始点と終点を結ぶ
線分に近似した画素列を算出する線分画素発生器におい
て、上記画素入力部と上記制御信号発生部と上記初期設
定部と上記画素座標算出部とに接続された始点終点画素
算出部を設け、上記座標入力部(1)は外部から近似画
素列を得ようとする線分(SE)の始点(S)と終点
(E)の上記X−Y座標におけるそれぞれのXY座標値
(xS,yS),(xe,ye)を、2進固定小数点データとして
入力し、上記XY座標値を上記制御信号発生部(2)およ
び始点終点画素算出部(3)に出力し、上記制御信号発
生部(2)は上記座標入力部(1)から入力した始点
(S)と終点(E)の上記XY座標値(xS,yS),(xe,
ye)から、XY座標の変位(ΔX),(ΔY)の絶対値
(|ΔX|),(|ΔY|)と符号(sgn(ΔX)),(sgn
(ΔY))を算出し、上記絶対値|ΔX|,|ΔY|の大小関
係より長軸がX座標かY座標かを判定し、その判定結果
を示す長軸信号(X/Y)を上記始点終点画素算出部
(3)と上記画素座標算出部(5)に出力し、判定した
長軸がX座標かY座標かにしたがってLS座標の変位の絶
対値(|ΔL|),(|ΔS|)と符号(sgn(ΔL)),
(sgn(ΔS))を上記初期設定部4と上記画素座標算
出部5に出力し、上記始点終点画素算出部(3)は上記
座標入力部(1)から上記始点と上記終点のXY座標値
(xS,yS),(xe,ye)を入力して始点画素の座標値と終
点画素の座標値と上記始点画素と上記始点画素との差を
算出し、上記制御信号発生部(2)から入力した上記長
軸信号に従って上記始点画素のLS座標値(i・S,isS)
と、上記始点画素と上記始点画素のLS座標の差を(d・
S,dsS)を上記初期設定部4に供給し、上記始点画素の
L座標(PS)と上記終点画素(Pe)のL座標(i・e)
を上記画素座標算出部(5)に出力し、上記始点画素の
XY座標と上記終点画素のXY座標を線分上の画素として外
部に出力し、上記初期設定部(4)は上記制御信号発生
部(2)から入力される上記LS座標上の上記変位の上記
絶対値|ΔL|,|ΔS|と上記符号(sgn(ΔL)),(sgn
(ΔS))と上記始点終点画素算出部(3)から入力さ
れる上始点画素(PS)のLS座標値(i・S,isS)および
上記始点画素と上記始点画素のLS座標上の差(d・S,ds
S)から初期画素(PO)と初期誤差項(e1)を算出して
上記画素座標算出部(5)に出力し、上記画素座標算出
部(5)は上記初期設定部(4)から入力された上記初
期画素(PO)と上記初期誤差項(e1)を初期条件とし、
上記制御信号発生部(2)から入力された上記変位の絶
対値(|ΔL|,|ΔS|)と上記符号(sgn(ΔL),sgn
(ΔS))に従って逐次、上記ブレゼンハイムのアルゴ
リズムで近似画素(Pi)のLS座標値(・i,si)を算出
し、該座標値(・i)と上記始点終点画素算出部(3)
から入力した上記終点画素(Pe)のL座標(・e)を比
較して終了判定を行い、上記制御信号発生部2から入力
した上記長軸信号にしたがって、近似画素(Pi)のXY座
標(xi,yi)を外部に出力することを特徴とする。
本発明の線分画素発生器での、線分画素発生方法はBr
esenhamアルゴリズムを改良したものであり、2進固定
小数点の座標値を持つ線分の始点及び終点に対しても、
誤差項が整数となるように、誤差項の定義変更および始
点の整数座標点からのずれに応じて初期設定するため
に、初期設定処理を変更したものである。
esenhamアルゴリズムを改良したものであり、2進固定
小数点の座標値を持つ線分の始点及び終点に対しても、
誤差項が整数となるように、誤差項の定義変更および始
点の整数座標点からのずれに応じて初期設定するため
に、初期設定処理を変更したものである。
[実施例] 次に本発明の実施例について図面を参照して説明す
る。
る。
最初に本実施例の線分画素発生器の画素発生方法につ
いて説明する。
いて説明する。
本発明で使われる画素発生方法は、Bresenhamアルゴ
リズムを改良したものであり、Bresenhamアルゴリズム
の説明で示した漸化式(式6)の考え方はそのまま利用
している。異なる点は線分の始点及び終点の座標値が2
進固定小数点に対しても、誤差項が整数データとなるよ
うに、誤差項の定義を変更していることと、始点が整数
座標点からずれていることを考慮して初期設定処理が大
幅に変更されている点である。
リズムを改良したものであり、Bresenhamアルゴリズム
の説明で示した漸化式(式6)の考え方はそのまま利用
している。異なる点は線分の始点及び終点の座標値が2
進固定小数点に対しても、誤差項が整数データとなるよ
うに、誤差項の定義を変更していることと、始点が整数
座標点からずれていることを考慮して初期設定処理が大
幅に変更されている点である。
まず、初期設定処理について述べる。今、小数点以下
N桁の2進固定小数点データを座標値に持つ2点S(x
S,yS),E(xe,ye)を取り、S(xS,yS)を始点、E
(xe,ye)を終点とする線分SEの近似画素列を求めると
する。
N桁の2進固定小数点データを座標値に持つ2点S(x
S,yS),E(xe,ye)を取り、S(xS,yS)を始点、E
(xe,ye)を終点とする線分SEの近似画素列を求めると
する。
Bresenhamアルゴリズムと同様に、始点と終点のX座
標とY座標の差ΔX,ΔYを求め、長い方を長軸とし、L
座標と短い方を短軸としS座標と表し、ΔL,ΔS,PiのLS
座標li,siを使う。
標とY座標の差ΔX,ΔYを求め、長い方を長軸とし、L
座標と短い方を短軸としS座標と表し、ΔL,ΔS,PiのLS
座標li,siを使う。
また、始点のLS座標をlS,sS、終点のLS座標をle,se
と表す。
と表す。
次に、始点Sに最も近い点PE(LS座標(ilS,ieS)、
始点画素と呼ぶ)と終点Eに最も近い点PE(LS座標(i
le,ise)、終点画素と呼ぶ)を求める。また、始点と始
点画素のL座標とS座標の差dlS,dsSを求める。この時d
lS,dsSはL座標の増/減,S座標の増/減に対応させるた
め、 dlS=Sgn(ΔL){lS−ilS} dsS=sgn(ΔS){sS−isS} となる。
始点画素と呼ぶ)と終点Eに最も近い点PE(LS座標(i
le,ise)、終点画素と呼ぶ)を求める。また、始点と始
点画素のL座標とS座標の差dlS,dsSを求める。この時d
lS,dsSはL座標の増/減,S座標の増/減に対応させるた
め、 dlS=Sgn(ΔL){lS−ilS} dsS=sgn(ΔS){sS−isS} となる。
第2図(A)〜(C)に示すように、直線SEと直線L
=ilSとの交点をQとし、画素PSとのS座標との差をF
とおくと、 となり、この時のFの取り得る範囲は、−1<F<1で
ある。漸化式(式6)の初期条件となる初期画素P0は、
交点Qに一番近い画素であり、初期誤差E0は交点Qと初
期画素P0とのS座標の差とすべきである。
=ilSとの交点をQとし、画素PSとのS座標との差をF
とおくと、 となり、この時のFの取り得る範囲は、−1<F<1で
ある。漸化式(式6)の初期条件となる初期画素P0は、
交点Qに一番近い画素であり、初期誤差E0は交点Qと初
期画素P0とのS座標の差とすべきである。
初期画素P0と初期誤差E0は、Fの値により次のように
決定できる。
決定できる。
第2図(B)で示すように、 P0は画素C(LS座標(ilS,isS−sgn(ΔS))) E0=F+1 P0は画素PS(LS座標ilS,isS)) E0=F 第2図(C)で示すように、 P0は画素D (LS座標(ilS,isS+sgn(ΔS))) E0=F−1 以上により初期ピクセルP0と初期誤差E0が求まる。
誤差の整数化には、誤差項eiを と定義することにより実現される(ここで実数αに対す
る整数部とは0≦α−n<1となる整数nを言う)。
る整数部とは0≦α−n<1となる整数nを言う)。
この時、eiを求める漸化式は整数演算となり、整数
部を求める処理は、e0を求める最初に一度のみ行えばよ
いことになり、またこの処理は算術右シフトにより実行
できる。
部を求める処理は、e0を求める最初に一度のみ行えばよ
いことになり、またこの処理は算術右シフトにより実行
できる。
以上により、初期画素P0と初期誤差e0から(式9)の
誤差項の定義にしたがって漸化式(式6)変形された整
数演算の身からなる漸化式によって、初期画素から逐次
近似画素を算出できる。
誤差項の定義にしたがって漸化式(式6)変形された整
数演算の身からなる漸化式によって、初期画素から逐次
近似画素を算出できる。
第1図は本発明の一実施例の線分画素発生器のブロッ
ク図である。
ク図である。
次に第1図を用いて本実施例の線分画素発生について
説明する。
説明する。
本実施例の線分画素発生器は座標入力部1と、制御信
号発生部2と始点終点画素算出部3と初期設定部4と画
素座標算出部5を有している。
号発生部2と始点終点画素算出部3と初期設定部4と画
素座標算出部5を有している。
座標入力部1は外部から近似画素列を得ようとする線
分SEの始点Sと終点EのXY座標値xS,yS,xe,yeを、2進
固定小数点データとして入力し、そのまま制御信号発生
部2および始点終点画素算出部3に出力する。制御信号
発生部2では、座標入力部1から入力した始点Sと終点
EのX・Y座標値xS,yS,xe,yeから、X・Y座標の変位
ΔX,ΔYの絶対値|ΔX|,|ΔY|と符号sgn(ΔX),sgn
(ΔY)を算出し、また|ΔX|,|ΔY|の大小関係より長
軸がX座標かY座標か判定し、その判定を示す長軸X/Y
信号を始点,終点画素算出部3と画素座標算出部5に出
力する。また、長軸がX座標かY座標かにしたがって、
LS座標の変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),
sgn(ΔS)を初期設定部4と、画素座標算出部5に出
力する。
分SEの始点Sと終点EのXY座標値xS,yS,xe,yeを、2進
固定小数点データとして入力し、そのまま制御信号発生
部2および始点終点画素算出部3に出力する。制御信号
発生部2では、座標入力部1から入力した始点Sと終点
EのX・Y座標値xS,yS,xe,yeから、X・Y座標の変位
ΔX,ΔYの絶対値|ΔX|,|ΔY|と符号sgn(ΔX),sgn
(ΔY)を算出し、また|ΔX|,|ΔY|の大小関係より長
軸がX座標かY座標か判定し、その判定を示す長軸X/Y
信号を始点,終点画素算出部3と画素座標算出部5に出
力する。また、長軸がX座標かY座標かにしたがって、
LS座標の変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),
sgn(ΔS)を初期設定部4と、画素座標算出部5に出
力する。
始点終点画素算出部3は座標入力部1から始点と終点
のX・Y座標値xS,yS,Xe,yeを入力して、始点画素の座
標値と終点画素の座標値と、始点と始点画素の差を算出
し、制御信号発生部2から入力した長軸X/Y信号に従っ
て始点画素のLS座標値ilS,isSと、始点と始点画素のLS
座標の差をdlS,dsSを初期設定部4に、終点画素PeのL
座標ileを画素座標算出部5に出力する。また、始点終
点画素のX・Y座標を線分上の画素として外部に出力す
る。初期設定部4では制御信号発生部2から入力される
変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),sgn(Δ
S)と、始点終点画素算出部3から入力される始点画素
PSのLS座標値ilS,isSおよび、始点と始点画素のLS座標
の差ldS,dsSを使って、初期画素P0と初期誤差項e1を算
出し画像座標算出部5に出力する。画像座標算出部で
は、初期設定部4から入力された、初期画素P0と初期誤
差項e1を初期条件とし、制御信号発生部2から入力され
た変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),sgn
(ΔS)に従って逐次、近似画素PiのLS座標値(li,s
i)を算出し、liと始点終点画素算出部3から入力した
終点画素PeのL座標leを比較して終了判定を行うと共に
制御信号発生部2から入力した長軸X/Y信号にしたがっ
て、近似画素PiのX・Y座標(xi,yi)を外部に出力す
る。
のX・Y座標値xS,yS,Xe,yeを入力して、始点画素の座
標値と終点画素の座標値と、始点と始点画素の差を算出
し、制御信号発生部2から入力した長軸X/Y信号に従っ
て始点画素のLS座標値ilS,isSと、始点と始点画素のLS
座標の差をdlS,dsSを初期設定部4に、終点画素PeのL
座標ileを画素座標算出部5に出力する。また、始点終
点画素のX・Y座標を線分上の画素として外部に出力す
る。初期設定部4では制御信号発生部2から入力される
変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),sgn(Δ
S)と、始点終点画素算出部3から入力される始点画素
PSのLS座標値ilS,isSおよび、始点と始点画素のLS座標
の差ldS,dsSを使って、初期画素P0と初期誤差項e1を算
出し画像座標算出部5に出力する。画像座標算出部で
は、初期設定部4から入力された、初期画素P0と初期誤
差項e1を初期条件とし、制御信号発生部2から入力され
た変位の絶対値|ΔL|,|ΔS|と符号sgn(ΔL),sgn
(ΔS)に従って逐次、近似画素PiのLS座標値(li,s
i)を算出し、liと始点終点画素算出部3から入力した
終点画素PeのL座標leを比較して終了判定を行うと共に
制御信号発生部2から入力した長軸X/Y信号にしたがっ
て、近似画素PiのX・Y座標(xi,yi)を外部に出力す
る。
[発明の効果] 以上説明したように本発明は、Bresenhamアルゴリズ
ムの誤差項の定義変更と、初期設定変更により、始点と
終点の座標値が2進固定小数点データである線分に忠実
に近似画素列が算出可能とした。これにより本来描画し
たい線分や多角形の座標データが実数データであった場
合、従来の線分画素発生装置では、座標データを実数デ
ータに変換する前処理を行う必要があり、それによる歪
が生じるのに対し、本発明では座標データを実数データ
から2進固定小数点データに変換すればよく、そのため
の歪を低減できるという効果を有する。
ムの誤差項の定義変更と、初期設定変更により、始点と
終点の座標値が2進固定小数点データである線分に忠実
に近似画素列が算出可能とした。これにより本来描画し
たい線分や多角形の座標データが実数データであった場
合、従来の線分画素発生装置では、座標データを実数デ
ータに変換する前処理を行う必要があり、それによる歪
が生じるのに対し、本発明では座標データを実数データ
から2進固定小数点データに変換すればよく、そのため
の歪を低減できるという効果を有する。
また画素座標を逐次算出する処理はBresenhamアルゴ
リズムと同じであり、Bresenhamアルゴリズムと同様に
処理時間が短いという効果を有する。
リズムと同じであり、Bresenhamアルゴリズムと同様に
処理時間が短いという効果を有する。
第1図は本発明の一実施例の線分画素発生装置を示すブ
ロック図,第2図(A)〜(C)は本発明における線分
画素算出のアルゴリズムを説明するための図、第3図は
従来のアルゴリズムにおける欠点の一例を説明する図、
第4図は従来のBresenhamアルゴリズムを適用した線分
画素発生装置のブロック図、第5図(A)〜(C)はBr
esenhamアルゴリズムを説明するための図である。 1……座標入力部、 2……制御信号発生部、 3……始点終点画素算出部、 4……初期設定部、 5……画素座標算出部、 41……座標入力部、 42……制御信号発生部、 44……初期設定部、 45……画素座標算出部。
ロック図,第2図(A)〜(C)は本発明における線分
画素算出のアルゴリズムを説明するための図、第3図は
従来のアルゴリズムにおける欠点の一例を説明する図、
第4図は従来のBresenhamアルゴリズムを適用した線分
画素発生装置のブロック図、第5図(A)〜(C)はBr
esenhamアルゴリズムを説明するための図である。 1……座標入力部、 2……制御信号発生部、 3……始点終点画素算出部、 4……初期設定部、 5……画素座標算出部、 41……座標入力部、 42……制御信号発生部、 44……初期設定部、 45……画素座標算出部。
Claims (1)
- 【請求項1】座標データを入力する座標入力部と、該座
標入力部に接続された制御信号発生部と、制御信号発生
部に接続された初期設定部と、上記制御信号発生部と上
記初期設定部とに接続された画素座標算出部とを備えブ
レゼンハムのアルゴリズムで始点と終点を結ぶ線分に近
似した画素列を算出する線分画素発生器において、 上記画素入力部と上記制御信号発生部と上記初期設定部
と上記画素座標算出部とに接続された始点終点画素算出
部を設け、 上記座標入力部(1)は外部から近似画素列を得ようと
する線分(SE)の始点(S)と終点(E)の上記X−Y
座標におけるそれぞれのXY座標値(xS,yS),(xe,ye)
を2進固定小数点データとして入力し、上記XY座標値を
上記制御信号発生部(2)および始点終点画素算出部
(3)に出力し、 上記制御信号発生部(2)は上記座標入力部(1)から
入力した上記始点(S)と上記終点(E)の上記XY座標
値(xS,yS),(xe,ye)から、XY座標の変位(ΔX),
(ΔY)の絶対値(|ΔX|),(|ΔY|)と符号(sgn
(ΔX)),(sgn(ΔY))を算出し、上記絶対値|
ΔX|,|ΔY|の大小関係から長軸がX座標かY座標かを判
定し、その判定結果を示す長軸信号(X/Y)を上記始点
終点画素算出部(3)と上記画素座標算出部(5)に出
力し、判定した長軸がX座標かY座標かにしたがってLS
座標の変位の絶対値(|ΔL|),(|ΔS|)と符号(sg
n(ΔL)),(sgn(ΔS))を上記初期設定部4と上
記画素座標算出部5に出力し、 上記始点終点画素算出部(3)は上記座標入力部(1)
から上記始点と上記終点のXY座標値(xS,yS),(xe,
ye)を入力して始点画素の座標値と終点画素の座標値と
上記始点画素と上記始点画素との差を算出し、上記制御
信号発生部(2)から入力した上記長軸信号に従って上
記始点画素のLS座標値(i・S,isS)と、上記始点画素
と上記始点画素のLS座標の差を(d・S,dsS)を上記初
期設定部4に供給し、上記始点画素のL座標(PS)と上
記終点画素(Pe)のL座標(i・e)を上記画素座標算
出部(5)に出力し、上記始点画素のXY座標と上記終点
画素のXY座標を線分上の画素として外部に出力し、 上記初期設定部(4)は上記制御信号発生部(2)から
入力される上記LS座標上の上記変位の上記絶対値|ΔL
|,|ΔS|と上記符号(sgn(ΔL)),(sgn(ΔS))
と上記始点終点画素算出部(3)から入力される上始点
画素(PS)のLS座標値(i・S,isS)および上記始点画
素と上記始点画素のLS座標上の差(d・S,dsS)から初
期画素(PO)と初期誤差項(e1)を算出して上記画素座
標算出部(5)に出力し、 上記画素座標算出部(5)は上記初期設定部(4)から
入力された上記初期画素(PO)と上記初期誤差項(e1)
を初期条件とし、上記制御信号発生部(2)から入力さ
れた上記変位の絶対値(|ΔL|,|ΔS|)と上記符号(sg
n(ΔL),sgn(ΔS))に従って逐次、上記ブレゼン
ハイムのアルゴリズムで近似画素(Pi)のLS座標値(・
i,si)を算出し、該座標値(・i)と上記始点終点画素
算出部(3)から入力した上記終点画素(Pe)のL座標
(・e)を比較して終了判定を行い、上記制御信号発生
部2から入力した上記長軸信号にしたがって、近似画素
(Pi)のXY座標(xi,yi)を外部に出力することを特徴
とする線分画素発生器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22728790A JP3139008B2 (ja) | 1990-08-28 | 1990-08-28 | 線分画素発生器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22728790A JP3139008B2 (ja) | 1990-08-28 | 1990-08-28 | 線分画素発生器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04107688A JPH04107688A (ja) | 1992-04-09 |
JP3139008B2 true JP3139008B2 (ja) | 2001-02-26 |
Family
ID=16858450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22728790A Expired - Fee Related JP3139008B2 (ja) | 1990-08-28 | 1990-08-28 | 線分画素発生器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3139008B2 (ja) |
-
1990
- 1990-08-28 JP JP22728790A patent/JP3139008B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH04107688A (ja) | 1992-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5309521A (en) | Method and apparatus for generating a character curve by dividing and developing a bezier curve | |
US5363479A (en) | System and method for rendering bezier splines | |
JPH076232A (ja) | ベツィエスプラインを描写するようにハイブリッドフォワード相違プロセスを行うシステム及び方法 | |
JP2752975B2 (ja) | 3次曲線プロット方法 | |
JP3139008B2 (ja) | 線分画素発生器 | |
JP3250841B2 (ja) | 図形データの処理方法及び装置 | |
US5351315A (en) | Apparatus for smoothing outlines of images | |
JP2674287B2 (ja) | グラフィックマイクロコンピュータ | |
JP3059739B2 (ja) | 曲線描画機能を備えた情報処理装置および処理方法 | |
JPH0640349B2 (ja) | ディジタル図形処理方法 | |
JP3524380B2 (ja) | 破線描画装置および破線描画方法および記憶媒体 | |
JPH0368086A (ja) | 直線補間回路 | |
JP3082467B2 (ja) | アウトラインデータ処理装置 | |
JPH0769968B2 (ja) | クリップ領域内における直線描画方法 | |
JP3091472B2 (ja) | 画像処理方法 | |
JPH0315193B2 (ja) | ||
JP2893836B2 (ja) | 文書作成装置及び文書作成方法 | |
JPH06274308A (ja) | ベジェ曲線均等肉付け作成処理方法 | |
JPH07334695A (ja) | 作図装置および線幅決定方法 | |
JP2780496B2 (ja) | 描画装置のクリッピング処理方式 | |
JPS60252951A (ja) | デイジタル図形信号発生方法 | |
JP2934011B2 (ja) | 画像処理方法及び装置 | |
JPH01152583A (ja) | 直線近似処理装置 | |
JPH05205041A (ja) | 曲線近似装置及び方法 | |
JPS63184881A (ja) | 平行四辺形の面塗り処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071215 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081215 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091215 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |