JPH031283A - 直線描画方式 - Google Patents

直線描画方式

Info

Publication number
JPH031283A
JPH031283A JP1135413A JP13541389A JPH031283A JP H031283 A JPH031283 A JP H031283A JP 1135413 A JP1135413 A JP 1135413A JP 13541389 A JP13541389 A JP 13541389A JP H031283 A JPH031283 A JP H031283A
Authority
JP
Japan
Prior art keywords
line
straight line
segment
dots
line width
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
Application number
JP1135413A
Other languages
English (en)
Inventor
Atsushi Tanaka
敦 田中
Tomoaki Saito
斉藤 智昭
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP1135413A priority Critical patent/JPH031283A/ja
Publication of JPH031283A publication Critical patent/JPH031283A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野〕 この発明は、ヘクトルで与えられた線分をメモリ上に展
開し、表示手段にする直線描画方式に関するものである
〔従来の技術〕
第6図は、従来の線幅付き直線描画方式を示した図であ
り、図において501.502は入力データとして与え
られる線幅、及び端点の座標、503は描画データ読み
込みステップ、504は線の太らせ方向決定ステップ、
505は1ド・ノド幅直線描画ステップ、506は終了
判定ステップ、507は描画開始点決定ステップ、50
Bはフレームメモリ、509はデイスプレィである。
次に動作について説明する。
まずステップ5037入カデータとして線幅501及び
端点座標502を読み込む。この時の値を仮に線幅をW
1端点座標をPs (Xs + Ys) + Pe (
Xe 、 Ye)とする。次にステップ504で線幅が
1以上の時は、線の傾きから線の太らせ方向を決定する
。線の傾きが水平に近い時は垂直方向に太らせ、逆の場
合は水平方向に太らせる。この判断は単にl Xe−X
sとl Ye−Ys  lの大小比較でわかる。次に1
ドント軸直線描画ステップ505で2端点間を補間する
ドツト群を逐次描画するのだが、通常デジタル直線発生
アルゴリズムとしてD D A (DigitalDi
fferential Analyser)、またはB
resenham法が用いられる。これらのアルゴリズ
ムは線分の傾きに依存して次のような場合分けを行なう
+l) O≦θ≦π/4(水平に近い線分)始点からX
軸方向に1ドツトずつ進み、その時点のX座標を計算す
る。
(2)π/4くθ≦π/2(垂直に近い線分)始点から
y軸方向に1ドツトずつ進み、その時点のX座標を計算
する。
尚、上記2アルゴリズムの違いは座標の計算方法だけが
異なるもので、ここでは第7図を用いてBresenh
amアルゴリズムのπ/4〈θ≦π/2の場合を説明す
る。図において、601は初期設定ステップ、602は
1ドツトを描画するステップ、603は終了判定ステッ
プ、604は次に描画すべきドツトを判断するステップ
、605.606はドツトの座標値、判断基準の値を更
新するステップ、607は描画したドツトのカウント値
を更新するステップである。
まず始めにステップ601により初期設定を行なう。
ここで(Xi、Yi)は描画すべきドツトの座標値、i
は描画したドツトのカウント値であり、Rtは描画する
ドツトを判断する判断基準である。次にステップ602
で1ドツトの描画を行なう、ここでは前の初期化ステッ
プ601ニより (Xi、vi) = (Xs、Ys)
としたので、始点Ps (Xe、 Ys)が描画される
。ステップ603では描画したドツトのカウント値iと
描まで描画されたことになるからこのアルゴリズムは終
了する。ステップ604では次に描画すべきドツトを判
断し、判断基準Riが0未満であればステップ605の
処理を、0以上であればステップ606の処理を行なう
、ステップ605では次に描画すべきドツトのV座標の
みを更新し、X座標の更新は行なわない、そして判断基
準Riに2(Xe−Xs)を加える。一方ステップ60
6ではX座標、Y座標とも更新し、R1には2(Xe−
Xs)−2(Ye4s)を加える。ステップ605.6
06により次に描画すべきドツトの座標値及び判断基準
が更新されているから、更新されたドツトに対してステ
ップ602の処理により1ドツトの描画を行ない、ステ
ップ607で描画したドツトのカウント値を更新する。
このアルゴリズムにより、1ドツトずつ逐一判断しなが
ら直線を描画することができる。尚、直線の傾きがO≦
θ≦π/4の時は、計算上のXとYを入れ換える。さら
に、−π/2≦θ〈0(右下がり)の時は、計算上のV
の符号を逆転させることで対応できるこれで1ドツト幅
の直線が引けたわけだが、線幅Wに対応するために描画
開始点決定ステップ507で始点、終点をlドツト平行
移動てし再度直線描画ループを行なう、始点、終点の移
動は線の太らせ方向で決まり、前に述べたように直線の
傾きがO≦θ≦π/4の時はy軸方向に、π/4〈θ≦
π/2はX軸方向に移動させる。そして、この処理をW
回数だけ繰り返すことにより線幅Wの線分を描画してい
た。
〔発明が解決しようとする課題〕
ところが、従来の直線描画方式は上述したように線分の
傾きによって線の太らせ方向が水平または垂直のどちら
かであり、線が太くなるに従って直線を示す長方形が変
形する傾向があり、また、描画性能の面でも、デジタル
直線発生アルゴリズムを線幅の回数だけ走らせる必要が
あり、更にメモリへの描画情報の書き込みもlド・7ト
単位であるため、高速描画が難しいという問題点があっ
た。
この発明は上記のような問題点を解決するためになされ
たもので、任意線幅の線分を正確に、しかも高速に描画
することができる直線描画方式を提供することを目的と
する。
〔課題を解決するための手段〕
この発明に係る直線描画方式では、線分の両端点と線幅
から決定される四角形の4頂点を求める頂点算出手段1
1と、四角形の頂点を通る水平線でこの四角形を複数領
域に分割する領域分割手段12と、各領域上にドツト群
のデジタル直線を発生するデジタル直線発生手段13と
、垂直方向座標の同一座標位置の2ドツト間を結ぶ水平
線の情報をメモリ15上に展開するメモリ展開手段14
とを備え、デジタル直線発生手段13は水平線の情報に
従って水平線だけで上記四角形内部を満たし指定される
線幅の直線を表示手段16に描画することを特徴とする
ものである。
〔作用〕
頂点算出手段11は線分の両端点と線幅から決定される
四角形の4頂点を求め、領域分割手段12は四角形の頂
点を通る水平線でこの四角形を複数領域に分割する。メ
モリ展開手段14は垂直方向座標の同一座標位置の2ド
ツト間を結ぶ水平線の情報をメモリ15上に展開する。
デジタル直線発生手段13は、水平線の情報に従って水
平線だけで四角形内部を満たし、指定される線幅の直線
を表示手段16に描画する。
〔発明の実施例〕
第1図はこの発明の一実施例に係る直線描画方式の構成
を示すブロック図である。図において、11は線分の両
端点と線幅から決定される四角形の4頂点を求める頂点
算出手段、12は四角形の頂点を通る水平線でこの四角
形を複数領域に分割する領域分割手段、13は各領域上
にドツト群のデジタル直線を発生し水平線の情報に従っ
て水平線だけで四角形内部を満たし指定される線幅の直
線を表示手段16にWI画するデジタル直線発生手段、
14は垂直方向座標の同一座標位置の2ドツト間を結ぶ
水平線の情報をメモリ15上に展開するメモリ展開手段
である。
第2図はこの実施例の動作を示すフローチャートである
。第2図において、第6図に示す構成要素に対応するも
のには同一の符号を付し、その説明を省略する。第2図
において、101は頂点算出手段11が行なう4頂点計
算ステップ、102は領域分割手段12が行なう領域分
割ステップ、103は処理の初期化を行なう初期化ステ
ップ、104はデジタル直線発生手段13が行なう左辺
ドツト発生ステップ、105はデジタル直線発生手段1
3が行なう右辺ドツト発生ステップ、106はメモリ展
開手段I4が行なう水平セグメント描画ステップ、10
7は垂直方向のY座標更新ステップ、108はルプカウ
ンタのステップ、109は終了判定ステップ、110は
領域判定ステップ、lllは再初期化ステップである。
なお、フレームメモリ508は第1図中のメモリI5に
、デイスプレィ509は第1図中の表示手段16に相当
する。
次に動作を説明する。まずステップ503で人力データ
として線幅501及び線分の端点502を読み込む。こ
の時の値を仮に幅を4、端点座標を(Xs。
Ys) 、 (Xs、 ve)とする。次にステップ1
01で第3図に示したPa (Xa 、 Ya) + 
Pb (Xb、 Yb) 、 Pc (Xc、 Yc)
 lPd (Xd +Yd)を計算する。計算式は次式
で表される。
Xa=Xs+ (Wsin θ)/2+  Ya=Ys
−(Wcos θ)/2Xb=Xs−(Wsin θ)
/2.  Yb=Ys+(Wcos θ)/2Xc=X
e+ (Ws in   θ)/2+    Yc=Y
e−(Wcos  θ)/2Xd=Xe−(Ws in
  θ)/2+   Yd=Ye+(Wcos  θ)
/2  ・(i)但し、 sinθ= (Ye−Ys) / 、/”’!−Xe’
Xs)”2+ (Ye−Ys)” 2cos   θ=
(Xe−Xs)/   (Xe−Xs)”2+(Ye4
s)2次にステップ102で4頂点からなる4角形を3
領域に分割する。図では三角形PaPbPc、四辺形P
bPfPcPg1三角形pgPcPdである0次ニステ
ップドツト座標を計算するが、本実施例ではデジタル直
線発生アルゴリズムを2種類使用するのでこれを説明す
る。まず1つは前に説明したBresenham法やD
DA法を用いる。そして2つ目のアルゴリズムとして用
いるのは、例えば特開昭57−94788又は特願昭6
2−207033(セグメント分解法)で示される方式
である。これらのアルゴリズムは高速化を目的として水
平方向又は垂直方向、さらに場合によってはπ/4方向
に連続するドツト数を計算するものである。そして両者
は計算法は異なるものの角度による場合分けは同一で次
のように行なう。
(l)0≦θ≦π/4(水平に近い線分)始点からY軸
方向に1ドツトずつ進み、その時点のX軸方向に連続す
るドツト数を計算する。
(2)π/4〈θ≦π/2 (垂直に近い線分)始点か
らX軸方向に1ドツトずつ進み、その時点のY軸方向に
連続するドツト数を計算する。
即ちBresenham 、D D A方式の計算上の
座標軸X。
Yを入れ換えたものであり、第4図を用いてセグメント
分解法の線分の傾きが0≦θ≦π/4の時を説明する。
まずステップ301で点Ps(Xs、Ys)、Pe(x
e、Ye)がらR9ΔR,r、Δrを次式で計算する。
(Xe−Xs)/(We−Ys)=R+ΔR(χe−X
s)/2(Ye4s)=r+Δr但し、R,rは整数、
0≦ΔR1Δr<1ステツプ302でセグメントのスタ
ート座標(Xi、Yi)に始点(Xs、Ys)の座標を
セットし、ステップ303で判別式Diを初期化する。
そしてステップ304で最初のセメグント、即ちPi(
χi、Yi)からドツト数r+1の水平成分セグメント
の書き込みを行ない、ステップ305で次セグメントの
スタート座標を求める。そしてステップ306〜313
がセグメント分解のためのループ部で、ステップ306
で先ず最後のセグメントかどうか判定する。そうでない
場合にはステップ307で判別式を更新し、ステップ3
08で判別式の符号により正ならばステップ309〜3
11でドツト数R+1のセグメントの書き込み、Olの
補正及び次セグメントのスタート座標の更新を行ない、
負ならばステップ301,313でドツト数Rのセグメ
ントの書き込み、次のセグメントのスタート番地の更新
を行なう。そしてステップ306ヘジヤンプし、ループ
するが、ステップ306で最後のセグメントと判定され
た場合にはステップ314〜316で最後のドツト数r
又はr+1のセグメントの書き込みを行ない、処理を終
了する。
本実施例では上記2種の直線発生アルゴリズムのドツト
座標計算部分を使用し、また、前に説明したBrese
nhamとセグメント分解法の2アルゴリズムを用い、
第5図を交えて説明する。図中Pa。
Pb、 Pc、 Pdは第3図で示しだ同一名の点を整
数化してメモリ15上に割り付けたドツトである。この
うち、Y座標が1番手さい点(図ではPa)を起点とす
る0次にPaからpb <左辺) 、PaからPc (
右辺)を補間するドツト群を計算するデジタル直線発生
手段13をそれぞれ動作させる。まず左辺で考えると1
Xb−Xa  l < 1Yb−Ya  l即ち垂直に
近い線分であるのでBresenham法でY軸方向を
基準にする。
また、右辺ではl Xc−Xa  l > l Yc−
’fa  lなのでセグメント分解法でY軸方向を基準
にする。このアルゴリズム選択基準は、両辺ともにY軸
を基準とすることにより、辺の傾きによって前に述べた
場合分けで必然的に決定される。ここから領域lの間、
ステップ104〜llOまでのループを繰り返す。
Y軸基準Yi (i=o)に対して、ステップ104で
行なわれるBresenhamアルゴリズムによって最
初に計算される左辺ドツトPIOはPaである。また、
ステップ105で行なわれるセグメント分解アルゴリズ
ムによって計算される右辺ドツト幅はl、即ちドツト座
標PrOもPaである。ここで描画ステップ106でP
loからProまで即ちPa−点をメモリ・に展開する
。次にY軸基準Yiを1進め、再びステ・7プ104か
らのループを繰り返す。ステップ104でXllが、ス
テップ105 テXrl(XrO十ドツト幅)がn1算
される。ステップ106で、点(Xll、Yi)からド
ツト幅(Xrl−Xll)の水平セグメントをメモリ1
5上に描画する。周知の通り、水平セグメントの描画は
通常のメモリアーキテクチャにおいて、−度に書き込み
可能であるため極めて高速に描画できる。
この後は同様に繰り返され、領域1は塗りつふされる。
ループ内で、ステップ110の領域判別処理で領域lの
終了が判断された時は、左辺のデジタル直線発生手段1
3を再初期化する。つまり、領域2の左辺が直線PbP
dになり、今度はl Xd−Xb> l Yd−Yb 
 lのため8resenhan+アルゴリズムとなる。
上記右辺については領域1の続きとし、同様に、領域3
に入った時は、右辺のみのアルゴリズムを切替え、セグ
メント分解法にする。そして、ステップ109で最終ド
ツトの書き込みが終ったことが判断された時に、この処
理は終了する。
このように上記実施例では、与えられた座標系のまま線
幅付き線分く四角形)の頂点を計算し、デジタル直線発
生手段により得られる水平線だけで描画できる。これに
より、その頂点は正確に求められ、水平線描画を対角頂
点のY軸方向の差分回数だけ行なうので、高速に線幅付
き直線を描画できる。
なお、上記実施例では線幅つき直線を3領域に分割した
が、線分の傾きと線幅で決まる2又は1領域の場合も同
一アルゴリズムで対処可能である。
また今回は2種のデジタル直線発生アルゴリズムを用い
たが、同種のアルゴリズムで片方を空回りさせて連続す
るドツトの数を数える方法でも同様の効果が期待できる
〔発明の効果〕
以上のように本発明によれば、線分の両端点と線幅から
決定される四角形の4頂点を求め、水平線で四角形を複
数領域に分割し、メモリに展開された水平線の情報に従
って線幅つき直線を描画するようにしたので、その直線
を水平セグメントに分解して複数ドツトを一度にメモリ
に書き込むことができ、しかも書き込み回数は対角点の
垂直方向成分の差だけになり、したがって、任意線幅の
線分を正確に、高速に描画できるという効果が得られる
【図面の簡単な説明】
第1図はこの発明の一実施例に係る直線描画方式の構成
を示すブロック図、第2図はこの実施例の動作を示すフ
ローチャート、第3図はこの実施例において描画する直
線を示した図、第4図はこの実施例で用いるデジタル直
線発生アルゴリズムを説明するためのフローチャート、
第5図はこの実施例において描画する直線の拡大図、第
6図は従来の直線描画方式の動作を示すフローチャート
、第7図は従来例及び実施例に用いられる第2のデジタ
ル直線発生アルゴリズムを説明するためのフローチャー
トである。 11・・・頂点算出手段、12・・・領域分割手段、1
3・・・デジタル直線発生手段、14・・・メモリ展開
手段、15・・・メモリ、16・・・表示手段。 代理人  大  岩  増  a(ばか2名)L−一一
一一一一二 Pa(Xa−Ya)

Claims (1)

    【特許請求の範囲】
  1. 線分の両端点と線幅で指定される直線を描画する直線描
    画方式において、線分の両端点と線幅から決定される四
    角形の4頂点を求める頂点算出手段と、上記四角形の頂
    点を通る水平線でこの四角形を複数領域に分割する領域
    分割手段と、上記各領域上にドット群のデジタル直線を
    発生するデジタル直線発生手段と、垂直方向座標の同一
    座標位置の2ドット間を結ぶ上記水平線の情報をメモリ
    上に展開するメモリ展開手段を備え、上記デジタル直線
    発生手段は上記水平線の情報に従って水平線だけで上記
    四角形内部を満たし指定される線幅の直線を表示手段に
    描画することを特徴とする直線描画方式。
JP1135413A 1989-05-29 1989-05-29 直線描画方式 Pending JPH031283A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1135413A JPH031283A (ja) 1989-05-29 1989-05-29 直線描画方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1135413A JPH031283A (ja) 1989-05-29 1989-05-29 直線描画方式

Publications (1)

Publication Number Publication Date
JPH031283A true JPH031283A (ja) 1991-01-07

Family

ID=15151149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1135413A Pending JPH031283A (ja) 1989-05-29 1989-05-29 直線描画方式

Country Status (1)

Country Link
JP (1) JPH031283A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012165238A1 (ja) * 2011-05-30 2012-12-06 アイシン精機株式会社 描画装置、描画方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012165238A1 (ja) * 2011-05-30 2012-12-06 アイシン精機株式会社 描画装置、描画方法及びプログラム
JPWO2012165238A1 (ja) * 2011-05-30 2015-02-23 アイシン精機株式会社 描画装置、描画方法及びプログラム

Similar Documents

Publication Publication Date Title
US6360029B1 (en) Method and apparatus for variable magnification of an image
JPH031283A (ja) 直線描画方式
EP0574245A2 (en) Method and apparatus for variable expansion and variable shrinkage of an image
JP3285535B2 (ja) 図形操作システム及び図形システムの形状合成方法
JP2806679B2 (ja) 文字発生装置
JP3338484B2 (ja) アウトラインフォント変形装置
JP2001034773A (ja) グラフ図形表示方式
JP2613653B2 (ja) 画像処理装置
JP2782904B2 (ja) 多角形塗りつぶし方式
JPH08279038A (ja) 太線描画装置
JPH0350686A (ja) 図形処理方式
JP2836617B2 (ja) レンダリングプロセッサ
JP2965021B2 (ja) 塗り込み処理方式、塗り込み処理方法および塗り込み処理プログラムを記録した記録媒体
JP2551322B2 (ja) 画像再生方法および装置
JPH10143676A (ja) 画像処理装置、画像処理方法、および記録媒体
JPH01250178A (ja) ラスターオペレーション装置およびその方法
JP2700124B2 (ja) 図形表示方法及びその実施装置
JP2779265B2 (ja) グリッド処理方式
JPH08138040A (ja) 画像描画方法及び画像描画装置
JPH0696223A (ja) 木構造図描画装置
JPH0689346A (ja) 画像発生装置
JP2003006663A (ja) 矩形描画装置および矩形描画方法
JP2000305550A (ja) ハーフトーンフォント生成装置
KR19980037822A (ko) 스프라이트 에니메이션용 중첩영역 처리장치 및 그 처리방법
JPH02208694A (ja) 太線描画方式