JPH0769968B2 - クリップ領域内における直線描画方法 - Google Patents

クリップ領域内における直線描画方法

Info

Publication number
JPH0769968B2
JPH0769968B2 JP62275326A JP27532687A JPH0769968B2 JP H0769968 B2 JPH0769968 B2 JP H0769968B2 JP 62275326 A JP62275326 A JP 62275326A JP 27532687 A JP27532687 A JP 27532687A JP H0769968 B2 JPH0769968 B2 JP H0769968B2
Authority
JP
Japan
Prior art keywords
straight line
clip area
pixel
coordinates
coordinate
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
Application number
JP62275326A
Other languages
English (en)
Other versions
JPH01116889A (ja
Inventor
敏彦 小倉
範浩 小柳
利一 安江
重夫 辻岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP62275326A priority Critical patent/JPH0769968B2/ja
Publication of JPH01116889A publication Critical patent/JPH01116889A/ja
Publication of JPH0769968B2 publication Critical patent/JPH0769968B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、クリップ領域内に描画する図形の直線部分に
適用して好適な直線描画方式に関する。
[従来の技術] 従来のクリップ領域内の直線描画方式として、コーエン
・サザーランドのクリップ領域描画アルゴリズム(Cohe
n−Sutherland Clipping Algorithm)が挙げられる。こ
のアルゴリズムは、特公昭54−33495号公報に記載され
たように、クリップ領域の描画開始点と終了点を2分割
法という方法で求め、その間を直線で結ぶ描画処理方式
である。
このアルゴリズムでは、まず、直線の始点と終点より直
線の中心点を求め、この中心点がクリップ領域の内か外
かを判定する。
1)、描画開始点を求める場合は、中心点が内ならば、
始点−中心点間の直線を次の2分割の対象直線とする。
外ならば、中心点を境にクリップ領域と交差する側の直
線を2分割の対象直線とする。
2)、描画終了点を求める場合は、中心点が領域の内な
らば、中心点−終了点間の直線を次の2分割の対象直線
とする。外ならば、中心点を境にクリップ領域と交差す
る側の直線を2分割の対象直線とする。
次に、対象直線について、さらにその直線の中心点を求
め上記1)または2)の処理を繰り返して行い、最終的
に直線の2分割が不可能になった点を描画開始点または
終了点とする。そして、その2点間を結ぶことによって
クリップ領域内の直線描画を実現する。
このアルゴリズムについては、J・D・フォリー、A・
ヴァン・ダム共著「ファンダメンタルズ・オブ・インタ
ラクティブ・コンピュータ・グラフィックス(Fundamen
tals of Interactive Computer Graphics)」第4章、
第146頁から第151頁においても論じられている。
[発明が解決しようとする問題点] 上記従来の方式でクリップ領域内に直線を描画する場
合、得られた描画開始点を始点に置き換え、また、終了
点を終点に置き換え、その間に発生する直線を描画する
ので、実際の始点から発生する直線とは誤差のために一
致しない。したがって、クリップ領域を拡大した場合に
は、新たに拡大された領域の直線を付加しなければなら
ないが、従来の方式で描画した場合は、連続したきれい
な直線にならないという問題があった。
本発明の目的は、クリップ領域外の無駄な計算処理を行
わず、描画開始点座標の算出おび座標補正処理を行うこ
とによって、クリップ領域内の直線描画速度を向上し、
連続性のあるきれいな直線を描画する方式を提供するこ
とにある。
[問題点を解決するための手段] 上記目的を達成するために、本発明は、 ラスタディスプレイの直線描画処理において、直線の始
終点および矩形クリップ領域に応じてクリップ処理が発
生するとき、 上記直線と上記クリップ領域との交点の1ピクセル外側
にある直前のピクセルの座標を算出し、 該直前のピクセル座標から直線描画アルゴリズムの誤差
値計算を行い、 該誤差値および上記直前のピクセルの座標から上記クリ
ップ領域内の直線の座標点を算出するようにしたもので
ある。
本発明の一実施態様としては、上記直線描画アルゴリズ
ムとしてブレゼンハム法を用い、与えられた直線がクリ
ップ領域の上側から進入する場合を考えると、直線の始
点座標を(X0,Y0)として、上記直前ピクセルの座標(X
0+cx1,drawy−1)を、 (dx,dyはそれぞれ始終点間のX軸,Y軸距離) に基いて計算し、上記誤差値eを、 e=2・dy−dx−(drawy−Y0−1)・2・dx +cx1・2・2y で計算することができる。
本発明の他の実施態様としては、上記直線描画アルゴリ
ズムとしてブレゼンハム法を用い、与えられた直線がク
リップ領域の左側から進入する場合を考えると、直線の
始点座標を(X0,Y0)として、上記直線ピクセルの座標
(Y0+cy1,drawx−1)を、 (dx,dyはそれぞれ始終点間のX軸,Y軸距離) に基いて計算し、上記誤差値eを、 e=2・dy−dx+(drawx−X0−1)・2・dy −cy1・2・dx で計算するものが考えられる。
その他、与えられた直線がクリップ領域の右側あるいは
下側から進入する場合についても、本発明は適用可能で
ある。
[作用] 従来の方式における描画開始点座標の計算式で得られる
値は整数値ではない。また、何らかの方法で整数化して
も当然誤差が生じ、始点から発生した直線とは一致しな
い場合が考えられる。
そこで、計算式によって、実際の描画開始点の直前のピ
クセルの座標を求め、例えばブレゼンハムの直線発生ア
ルゴリズムの座標更新で用いる誤差値をその座標につい
て算出する。そして、この直前の座標から上記アルゴリ
ズムを起動し、描画開始点が求められた時点から、描画
処理を開始し、終了点まで描画処理を行う。ブレゼンハ
ムの直線発生アルゴリズムの詳細については、前記文献
「ファンダメンタルズ・オブ・インタラクティブ・コン
ピュータ・グラフィックス」の第11章を参照されたい。
具体的には、本発明は、ブレゼンハムの直線発生のアル
ゴリズムを用いて、クリップ領域と直線との好転の直前
のピクセルの座標値を求めるための計算式と、その座標
値における座標更新方向を定めるための変数(誤差値)
を算出する手法を創案したものである。ブレゼンハムの
直線発生のアルゴリズムにおける座標更新は誤差値
(e)の値によって更新の方向を定める手法である。誤
差値(e)の初期値をe=2・dy−dxとすると、 e≦0ならば直線座標をx方向に1ピクセル更新し、e
値をe=e+2・dyに更新する。
e>0ならば直線座標をxおよびy方向に1ピクセル更
新し、e値をe=e+2・dy−2・2xに更新し、この処
理を終点まで繰り返すという手法である。
そこで、まず、発生した直線上の任意の座標点(Xm,Y
n)のe値はつぎのように計算できる。
e=2・dy−dx+(Xm・2・dy)−(Ym・2・dx) …
(1) 次に、クリップ領域との交点座標を(Xm,Yn)とし、Yn
が与えられているとき、(1)式は次のように変形する
ことができる。
e=0とすると、 この(2)式で得られた座標値は、e=0と仮定して算
出したものであり、実際のクリップ領域との交点、つま
り描画開始点である場合は少ない。しかし、算出した座
標値は必ず、ブレゼンハムのアルゴリズムで発生した直
線上に存在する。
そこで、与えられたクリップ座標の(Yn−1)における
x座標を(2)式によって算出することによりクリップ
座標の1ピクセルの外側のピクセルの座標値とe値とが
求められる。そして、その座標値から実際に直線を発生
させ、y方向の座標がYnに代わった点を描画開始点とす
ることにより、クリップ領域の交点を求めることが実現
できる。
このようにして求めた交点はブレゼンハムのアルゴリズ
ムで発生した直線上に存在するので、クリップ領域を拡
大して直線を付加した場合にも連続したきれいな直線が
得られる。
[実施例] 以下、本発明の一実施例を添付図面に基き、詳細に説明
する。
第5図は、本発明を適用するシステムの構成図である。
501はプリンタ、502はプリンタ・キーボード制御部、50
3はワークメモリ、504はビットマッププロセッサ(BMP3
2)、505はマイクロプログラム用RAM、506はビデオピク
セル制御部、507はビデオRAM、508はCRTディスプレイで
ある。
本発明の方式は、線図形描画処理プログラムとして、ビ
ットマッププロセッサ504内のマイクロプログラムに含
まれる。
第1図は、本発明に係るクリップ領域内における直線描
画方式を実現するための処理のフローチャートである。
ステップ101では、クリップ領域外の直線描画の計算処
理を除くために、クリップ領域の描画開始点の直前のピ
クセルの座標を計算する。計算方法は、クリップ領域に
進入する位置によって異なる。まず初めに、第2図に示
すような場合を例として説明する。
第2図は、(X0,Y0)を始点とする直線がクリップ領域
の上部から進入し、右側へ抜け出るような場合である。
描画開始点を(Xm,Yn)、描画開始点の直前のピクセル
の座標を(Xm-1,Yn-1)とする。なお、始点(X0,Y0)か
ら上記直前のピクセルまでのX距離をcx1とする。(X
m-1,Yn-1)は次のように求める。
(dx,dyはそれぞれ始終点間のX軸,Y軸距離) (3)式の余りをAとする。
cx1≧0の場合、 A=0ならばcx1=cx1 A>0ならばcx1=cx1+1 cx1<0の場合、cx1=0 よって、次式よりXm-1が求まる。
Xm-1=X0+cx1 次に、ステップ102では、ステップ101で得られた座標
(Xm-1,Yn-1)の誤差値eを次式を用いて算出する。
e=2・dy−dx−(drawy−Y0−1)・2・dx +cx1・2・dy 次に、ステップ103では、実際の描画開始点座標を求め
るために、誤差値eおよび描画点座標の更新を行うもの
で、詳しくは第4図を用いて説明する。
第4図のステップ401において、第1図のステップ102で
得られた誤差値の正負の判定を行う。負の場合は、ステ
ップ402においてx方向に座標を更新し、ステップ403で
誤差値eを更新する。ステップ401、403を、誤差値eが
0より大きくなるまで繰り返し行う。すなわち、座標が
y方向に更新されるまで第4図の処理を行う。そして、
y方向に更新されたときの座標が描画開始点座標とな
る。
描画ピクセル数=cx1+drawx−Xm ステップ105から109までは、ブレゼンハムのアルゴリズ
ムによる直線の描画処理である。まず、ステップ105で
は、ステップ103で得られた描画開始点座標に描画処理
を行う。そして、ステップ106では、ステップ102で算出
した誤差値を判断して誤差値:e>0ならば、ステップ10
7において、xおよびy座標を1更新し、誤差値eを次
のように更新する。
e=e+2・dy−2・dx 一方、誤差値e≦0ならば、ステップ108においてx座
標のみを1更新し、誤差値eを次のように更新する。
e=e+2・dy 次にステップ109では、描画ピクセル数の判定を行い、
0でなければ再びステップ105へ戻り、更新された誤差
値および描画点座標を用いて、描画処理を行う。そし
て、ステップ105〜109の処理を描画ピクセル数=0にな
るまで、繰り返すことによって、クリップ領域内の描画
処理を実現するものである。
以上、第2図を例にして説明したが、次に第3図のクリ
ップ領域の左側から進入する場合を例に、計算式だけを
挙げておく。尚、処理の流れは、前述と同様、第1図に
準ずるものである。
ステップ101における計算式は次のようになる。
(4)式の余りをBとする。
cy1≧0の場合、 B=0ならばcy1=cy1 B>0ならばcy1=cy1+1 cy1<0の場合、cy1=0 よって、次式よりYn-1が求まる。
Yn-1=Y0+cy1 次に、ステップ102における計算式は次のようになる。
e=2・dy−dx+(drawx−X0−1)・2・dy −cy1・2・dx [発明の効果] 以上、本発明によれば、クリップ領域内の描画処理につ
いては直線の座標値の計算処理を、クリップ領域内の座
標算出処理しか行わないので、従来の直線の始点から終
点までの全ての座標計算を行っていた描画処理に比べ
て、処理速度が向上する。かつ、直線とクリップ領域と
の交点の直前のピクセルから直線描画アルゴリズムの誤
差値計算を行ってクリップ領域内の直前の座標点を算出
するようにしたので、クリップ領域を拡大した場合に
も、拡大によって増加した部分についてのみ描画処理を
行なうことにより、連続性ある、きれいな直線を描画す
ることができる。
【図面の簡単な説明】
第1図は本発明の方式を実現するための処理手順を示し
たフローチャート、第2図、第3図はクリップ領域内の
直線描画の例を示した説明図、第4図は第1図のステッ
プ103を詳しく示したフローチャート、第5図は本発明
を適用するシステムの構成を示すブロック図である。
フロントページの続き (72)発明者 小柳 範浩 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立マイクロソフトウェアシステム ズ内 (72)発明者 安江 利一 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立製作所マイクロエレクトロニク ス機器開発研究所内 (72)発明者 辻岡 重夫 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立製作所マイクロエレクトロニク ス機器開発研究所内 (56)参考文献 特開 昭63−228274(JP,A) 特開 昭62−127971(JP,A)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】設定された直線の始点より順次、描画した
    ピクセルの座標の、設定された直線の始終点を理想的に
    結んだ直線に対する誤差に応じて、次に描画するピクセ
    ルの座標を定めていくことにより、設定された直線の始
    終点を結ぶ直線を描画する描画アルゴリズムによって、
    設定された直線の始終点を結ぶ直線の、設定された矩形
    のクリップ領域内に含まれる部分を描画する方法であっ
    て、 設定された直線の始終点間を結ぶ直線を前記描画アルゴ
    リズムによって描画した場合に描画されるピクセルであ
    って、前記クリップ領域の1ピクセル外側にあるピクセ
    ルである直前ピクセルの座標を算出し、 算出した直前ピクセルの座標の、前記誤差を算出し、 算出した直前ピクセルの座標と、算出した直前ピクセル
    の座標の誤差を、新たな始点と始点の前記誤差として、
    前記描画アルゴリズムによって順次定まるピクセルの座
    標のうちの、前記クリップ領域内の座標のピクセルを描
    画することを特徴とするクリップ領域内における直線描
    画方法。
  2. 【請求項2】特許請求の範囲第1項記載のクリップ領域
    内における直線描画方法であって、 前記描画アルゴリズムは、ブレゼンハム(Bresenham)
    の描画アルゴリズムであることを特徴とするクリップ領
    域内における直線描画方法。
JP62275326A 1987-10-30 1987-10-30 クリップ領域内における直線描画方法 Expired - Fee Related JPH0769968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62275326A JPH0769968B2 (ja) 1987-10-30 1987-10-30 クリップ領域内における直線描画方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62275326A JPH0769968B2 (ja) 1987-10-30 1987-10-30 クリップ領域内における直線描画方法

Publications (2)

Publication Number Publication Date
JPH01116889A JPH01116889A (ja) 1989-05-09
JPH0769968B2 true JPH0769968B2 (ja) 1995-07-31

Family

ID=17553897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62275326A Expired - Fee Related JPH0769968B2 (ja) 1987-10-30 1987-10-30 クリップ領域内における直線描画方法

Country Status (1)

Country Link
JP (1) JPH0769968B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01166179A (ja) * 1987-12-22 1989-06-30 Fujitsu Ltd クリップされた直線の描画方法
JP2581802B2 (ja) * 1989-07-03 1997-02-12 株式会社日立製作所 グラフィックディスプレイ装置とその表示方法
JP2937587B2 (ja) * 1991-10-30 1999-08-23 株式会社日立テレコムテクノロジー 直線描画処理における交点算出方法
CN104112285B (zh) * 2013-04-16 2017-05-31 北京金阳普泰石油技术股份有限公司 面向油田勘探与开发的沉积相图的智能绘制方法与系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62127971A (ja) * 1985-11-29 1987-06-10 Fujitsu Ltd 線分描画におけるクリツピング方式

Also Published As

Publication number Publication date
JPH01116889A (ja) 1989-05-09

Similar Documents

Publication Publication Date Title
US4849907A (en) Draw processing method and apparatus
JPH0769968B2 (ja) クリップ領域内における直線描画方法
JP2557591B2 (ja) 案内地図作成処理方式
JP2684609B2 (ja) 図形データ処理装置における図形表示方法
JPH0368086A (ja) 直線補間回路
JP2934011B2 (ja) 画像処理方法及び装置
JP2000298729A (ja) 二次元画像生成装置
JPH0535912B2 (ja)
JP2714114B2 (ja) グラフィック処理方法及びグラフィックシステム
JPH05205070A (ja) 図形描画方法
JP2000242803A (ja) 画像処理装置
JP2780496B2 (ja) 描画装置のクリッピング処理方式
JPS6283790A (ja) 画像処理装置
JPH0736606A (ja) 波形データ解析システム
JPH07334695A (ja) 作図装置および線幅決定方法
JPH0566914A (ja) 破線の描画方式
JPH08221544A (ja) 画像変形処理装置
JPH06290273A (ja) 図形表示処理装置
JPH10116349A (ja) 画像塗りつぶし処理方法
JPH07146673A (ja) 太め細め文字の生成装置
JP2002073001A (ja) 四角形描画方法および装置
JPH07262394A (ja) 隣接多角形統合装置
JPH03147190A (ja) 直線描画方法
JPH0573689A (ja) 線分描画装置
JPH0588845A (ja) Crtデイスプレイ装置のセグメント発生回路

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees