JPH08190635A - 直線発生方法 - Google Patents

直線発生方法

Info

Publication number
JPH08190635A
JPH08190635A JP119095A JP119095A JPH08190635A JP H08190635 A JPH08190635 A JP H08190635A JP 119095 A JP119095 A JP 119095A JP 119095 A JP119095 A JP 119095A JP H08190635 A JPH08190635 A JP H08190635A
Authority
JP
Japan
Prior art keywords
coordinate
point
straight line
difference
value
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.)
Withdrawn
Application number
JP119095A
Other languages
English (en)
Inventor
Takayuki Oshige
隆幸 大重
Shinichiro Motokado
慎一郎 本門
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP119095A priority Critical patent/JPH08190635A/ja
Publication of JPH08190635A publication Critical patent/JPH08190635A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

(57)【要約】 【目的】 直線発生方法に関し、始点,終点座標が少数
部を含む場合、その小数部を四捨五入することなく補間
して忠実な直線を発生することを目的とする。 【構成】 小数部を含む座標値を持つ始点と終点との間
を整数のXY座標値を持つドットで補間して直線を発生
する場合、XY座標の一方の第1の座標の座標値を整数
値単位に歩進させ、その座標値ごとに始点と終点とを結
ぶ直線と前回得られた補間点の他方の第2の座標の座標
値との差を求め、その差又はその差の符号に基づき次の
補間点の第2の座標の座標値を決定する直線発生方法で
あって、X座標およびY座標を前記小数部の桁数に対応
した数に分割し、さらに分割した区画を少なくとも前記
始点と終点の第1の座標の座標値の差を該区画で表した
数に分割し、その最小分割単位を用い、且つ前記始点座
標を基準として、第2の座標の前記座標値と前記直線と
の差を求めて次の補間点の座標値を決定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、DDA(Digital Diff
erential Analysis ;ディジタル微分解析)による直線
発生方法の改良に関する。
【0002】ドットで図形,アウトラインフォント等を
印字するプリンタ等においては、理論座標で与えられた
2点(始点,終点)間をDDAによりドット(整数座標
値の交点)で直線補間して物理座標系の直線を発生して
いる。しかし、アウトラインフォントを例として説明す
ると、プリンタには基本となるアウトラインフォントを
持ち、指定された文字の大きさに基づいて拡大または縮
小処理を施して直線を発生しているため、始点座標また
は終点座標に小数部を持つことが多い。
【0003】この場合、従来では、四捨五入した始点座
標と終点座標との間を補間するようにしており、忠実な
直線が再現されているとはいえなかった。このため、始
点,終点が小数部を持つ場合にも忠実な直線を発生する
直線発生方法が求められている。
【0004】
【従来の技術】図5は従来例の説明図で、始点,終点が
小数部を持つ場合の従来のDDAによる直線発生方法の
1例を示したものである。
【0005】図5において、例えば、始点P0 として、
(X0 ,Y0 )=(0.5,1.5)、終点Pe として
(Xe ,Ye )=(7.3,3. 6)が与えられると、
四捨五入した始点P0 =(1,2)と終点Pe =(7,
4)との間をDDAにより直線補間する。
【0006】ここで、四捨五入した始点と終点とを結ぶ
直線Bの勾配Δy/Δx(Δy=Ye −Y0 )、Δx=
Xe −X0 )の絶対値が1以下の場合、DDAでは、X
座標の値を始点から終点まで1(1単位)ずつ増加さ
せ、その都度、直線Bに最も近いY座標の整数値を求
め、この抽出したXY座標値を補間点とする。
【0007】例えば、図5の場合、x=1では、直線B
とy=2とは一致しているからその差e1 は0で、補間
点は(1,2)である。x=2では、直線Bとy=2
(前回のx=1における補間点)との差e2 は0.5以
下であるからy=2として補間点は(2,2)となり、
x=3では、e3 ≧0.5であるからy=3となって、
補間点は(3,3)となる。このような補間処理を終点
のx座標値であるx=7まで行って、図示折れ線で表し
た軌跡の補間点(ドットの中心)を得る。
【0008】以上のことを数式で表すと次のようにな
る。いま、直線Bの勾配Δy/Δxの絶対値が≦1、こ
こでは0<Δy<Δxと仮定し、始点を出発点とする
と、 e1 =0 y=yn-1 +en となり、 en =en-1 +Δy/Δx として en −0.5≧0のとき、yn =yn-1 +1 en −0.5<0のとき、yn =yn-1 として補間点のy座標を求める。つまり、xの値が1単
位増加すると直線Bの値はΔy/Δx増加するから、こ
の値に前回のen-1 を加算すると前回のyの値y n-1
の差en が求まる。換言すると、yn-1 が≧0.5の場
合は、yの値は+1されているから、en の値は常に前
回のyからの差を示す。
【0009】データ処理上、除算を省略すると便利であ
るから、詳細な説明は省略するが、以下の判定式が使用
される。 E1 =−Δx (1) En =En-1 +2Δy (2) を演算し、 En ≧0のとき、yn =yn-1 +1,En =En −2Δ
x En <0のとき、yn =yn-1 としている。
【0010】
【発明が解決しようとする課題】従来のDDAによる直
線発生において、始点,終点に小数部が含まれる場合は
四捨五入して整数として直線補間を行っており、前記
(1),(2) 式に示すように、整数の加減算により判定でき
る。
【0011】しかし、図5に示すように、小数部を四捨
五入して得られた直線Bの補間直線は、小数部を四捨五
入しない元の直線Aを忠実に表しているとはいえない。
例えば、点Pr は、直線Aを補間したものであればPr
' であるべきであり、またPsはPs’の方がより直
線Aに近い。
【0012】このように、始点,終点の小数部を四捨五
入すると、元の直線を忠実に表した直線補間が得られな
いといった課題がある。本発明は、上記課題に鑑み、始
点,終点が小数部を持つ場合、忠実に直線補間が達成で
きる直線発生方法を提供することを目的とする。
【0013】
【課題を解決するための手段】上記課題を解決するた
め、本発明の直線発生方法は、図1本発明の原理図に示
すように、 (1) 小数部を含む座標値を持つ始点と終点との間を整数
のXY座標値を持つドットで補間して直線を発生する場
合、XY座標のうちのいずれか一方の第1の座標の座標
値を整数値単位に順次歩進させ、歩進させたその座標値
ごとに前記始点と終点とを結ぶ直線と前回得られた補間
点の他方の第2の座標の座標値との差を求め、その差の
値またはその差の符号に基づき次に求める補間点の第2
の座標の座標値を決定する直線発生方法であって、X座
標およびY座標を前記小数部の桁数に対応した数に分割
し、さらにその分割した区画を少なくとも前記始点の第
1の座標の座標値と終点の第1の座標の座標値の差を該
区画で表した数に分割し、その最小分割単位を用い、且
つ前記始点座標を基準として、第2の座標の前記座標値
と前記直線との差を求めて次の補間点の座標値を決定す
る。 (2) 上記(1) において、始点および終点の座標値の小数
部を四捨五入した座標を始点および終点に対応した補間
点とする。 (3) 上記(1) において、始点および終点の第1の座標の
小数部を四捨五入した座標値において、小数部を含む該
始点と該終点とを結ぶ直線との差または該直線の延長線
との差を求め、その差が小さい側の第2の座標の座標値
を始点および終点の補間点とする。 (4) アウトラインフォントをドットに変換して印字する
プリンタ装置であって、アウトラインフォントの始点座
標および終点座標が小数部を含む座標値で表される場
合、前記(1) 〜(3) の発明の 直線発生方法による直線
補間でアウトラインフォントの輪郭となるドットを発生
して印字するように構成する。
【0014】
【作用】
(1) 始点座標, 終点座標に小数部を含む場合も四捨五入
せず(ドットの中心に一致させず)、小数部を持たせた
まま始点座標,終点座標の値を使用して直線補間する。
【0015】このため、座標を小数部の桁数に対応して
分割(n分割)し、さらに、そのn分割した区画を、少
なくとも、始点と終点の第1の座標(以下X座標とす
る)の座標値の差をその区画で表した数に分割し、この
最小分割単位で、しかも始点を基準としてy座標値を求
める。
【0016】これにより、始点,終点が小数部を持つ場
合も、データ処理上、直線との差の値を含めてすべて整
数の取扱いとなり、従来のDDAの手法を適用して容易
に補間点を求めることができる。 (2) 前記(1) のごとく、四捨五入しない場合、始点座
標,終点座標を四捨五入した座標を始点,終点に対応す
る補間点とする。 (3) 上記(2) とは異なる始点,終点に対応する別の補間
点として、第1の座標(X座標)の小数部を四捨五入
し、その四捨五入したx座標値における始点,終点を結
ぶ直線またはその直線の延長線とy座標値との差を求
め、その差が小さい方のy座標値を補間点の座標値とす
る。
【0017】図1は始点座標=(0.5,1,5),終
点座標=(7.3,3.6)の場合を示したもので、始
点,終点の小数部が1桁であるから、n=10(小数1
桁を10分割)とし、始点と始点のx座標値の差が7.
3−0.5=6.8であるから、10分割した区画をさ
らに68(6.8×n)分割する。
【0018】このように分割すると、x=1におけるy
=2(ここでは四捨五入)と直線Aとの差e1 は、 e1 =E1 −h’ ここで、E1 は(補間点aのyの値−始点のy値),
h’=21×5=105(21はΔx=68とした場合
の勾配から定まるΔyの値)であるから、 e1 =68×5−105 =235 となる。e(現補間点−直線A)<0のときのみ、次の
補間点のyの値を現補間点のyの値に+1するDDAの
場合は、x=2における補間点bのy値は補間点aのそ
れと同じとなる。
【0019】また、e<0.5のとき前回補間点aを今
回の補間点bとするDDAでは、e2 <0.5であるか
ら、x=2における補間点は(2,2)となる。なお、
図1では、0.5は340に相当する。
【0020】上記(2) の方法で始点の小数部を四捨五入
する場合、例えば始点=(0.4,1.2)とすると、
最初の補間点はc=(0,1)となる。この場合、直線
Aの延長線とc点のy座標値との差e0 は負であるから
次の補間点はaとなる。
【0021】また、上記(3) の方法では、直線Aの延長
線とx=0における、例えばy=1との差e0 を求め、
c点がより近いからこれを最初の補間点とする。以上の
ごとく、拡大処理により、座標値,判定に用いる差等が
整数として扱うことが可能となり、四捨五入,切捨て等
を行う必要がないので、より忠実な直線をドットで補間
することが可能となる。 (4) 以上の直線発生方法をアウトラインフォントをドッ
トに変換して印字するプリンタ装置に適用する場合、D
DAは、アウトラインフォントの始点座標および終点座
標が小数部を含む座標値で表される場合、前記(1) 〜
(3) の発明の 直線発生方法による直線補間で輪郭とな
るドットを発生して、アウトラインフォントを印字させ
る。
【0022】以上により、任意の大きさに拡大縮小され
て、始点, 終点座標が小数部を持つアウトラインフォン
トを印字する場合、その輪郭をドットで忠実に発生して
印字することが可能となる。
【0023】
【実施例】図2は本発明の説明図、図3は動作フローチ
ャート図、図4は一実施例の構成図である。
【0024】本実施例では、直線の勾配Δy/Δxが1
より大きい場合を例として説明する。そして補間点のy
の値を決定する方法として、前回決定した補間点のy
n-1 の値と、始点と終点との間を結ぶ直線(以下直線A
と称する)との間のy方向の差を演算し、その符号によ
って次の補間点のyn の値を算出する例を示す。
【0025】即ち、始点=(X0 ,Y0 )、終点=(X
e , Ye ) とすると、 Δy=(Ye ─Y0 ),Δx=(Xe ─X0 ) として、直線Aは y=(Δy/Δx)×(x─X0 )+Ye と表されるから、 e=yn-1 −y e≧0のとき yn =yn-1 +1 e<0のとき yn =yn-1 この結果、直線Aを挟んで補間点の軌跡が往復するよう
な形となる。
【0026】図2は図1の座標を10倍に拡大したもの
で、差eを演算する原理を示しており、以下のごとく補
間される。いま、始点,終点の小数部が1桁の場合、1
ドット間を10分割する。この10分割された1区画w
をさらに、直線の勾配に基づいて再分割する。
【0027】 勾配はh/w=(Ye ─Y0 )/(Xe ─X0 ) であるから、例えば、始点=(0.5,1,5),終点
=(7.3,3.6)とすると、h/w=21/68に
なるから、wを68分割することになる。これにより、
hは21となる。mx(初期値は始点のx座標値を四捨
五入した値)と直線Aとの交点のyの値と始点のY0
値との差h’は、 h’=(mx─X0 )×n×h と表される。一方、Y0 からmxまでの距離は(my−
0 )×n×wであるから、eの値は、 e=nw(my−Y0 )−hw(mx─X0 ) =n〔(my−Y0 )×w−(mx−X0 )×h〕 (3) となる。故にこのeの値を計算し、符号を判定して、次
のyの値(mx+1におけるyの値)を決定することに
なる。なお、(3) 式は符号付きの式で、mxの値を0と
すれば、点dにおけるeの値も算出することができる。
【0028】以下、本発明のDDAの処理について、図
3を参照しつつ説明する。ここで、始点=(0.5,
1,5),終点=(7.3,3.6)とする。(1) 始
点,終点の小数部は1桁であるから、n=10とし、次
式を計算する。
【0029】 w=n(Xe−X0 )=10(7.3−0.5)=68 h=n(Ye−Y0 )=10(3.6−1.5)=21 (2) 勾配h/w=21/68≧0であるから、図3に示
すフローに従う処理が行われる。 (3) 補間点の初期値を決定する。ここでは、小数部を四
捨五入した点としたから mx=X0 の四捨五入の値=(1,2) my=Y0 の四捨五入の値=(7,4)となり、この値
を保存する。 (4) 差eを次の式により演算する。
【0030】 e=n〔(my−Y0 )×w−(mx−X0 )×h〕 (5) e≧0か否かの判定を行う。e≧0ならば、my=
my+1にする。 (6) 否ならばmy=myとし、 (7) mx=mx+1 (8) my,mxの値を補間点として保存する。 (9) mx<Xe ならば上記ステップ(4) に戻って次の補
間点を求め、≧Xe ならば、補間処理を終了する。
【0031】図1は、図5と同じ始点座標,終点座標を
持つ場合に、本発明の方法を適用した例を示したもの
で、実際の直線Aの両側に補間点が存在するようになっ
ていることが判る。
【0032】図4は、本直線発生方法を適用したプリン
タ装置例を示したものである。図中、1は受信部で、上
位装置から送信された印刷コマンドおよび印刷データを
受信する。2はコマンド解析部で、受信した印刷コマン
ドを解析し、文字と図形とに分離する。そして文字の場
合は、文字展開部6に、図形, イメージの場合は描画部
3にそれぞれ印刷データを渡す。この際、始点,終点が
与えられた直線を含む図形の場合は、DDA部5に直線
補間を依頼する。
【0033】3は描画部で、図形やイメージをビットマ
ップメモリ4に展開し、また、展開用メモリ10に展開さ
れた文字パターンをビットマップメモリ4 に展開する。
4はビットマップメモリで、画面対応で画面データが格
納される。5はDDA部で、描画部3および文字展開部
6から、始点,終点が与えられたとき、直線補間して渡
す。14は中央処理ユニットCPUで、各部を制御する。
【0034】文字展開部6において、コマンド解析部2
から、文字コード,大きさ,向きなどの情報が送られる
ので、指定された文字をアウトラインフォント格納部11
から取り出し、指定された大きさになるように拡大縮小
演算部9により拡大縮小処理される。次にヒント処理部
8でビットマップの品質が向上するように幅の調整や位
置の調整が行われる。
【0035】以上により、アウトラインフォントの始
点,終点座標がDDA部5に送られ、DDA部5で上記
(1) 〜(9) の処理が行われる。このようにして得られた
補間直線をアウトラインフォントの輪郭として展開用メ
モリ10に格納するとともに、面塗り部7で、内部がドッ
トで面塗りされる。
【0036】以上のごとく、アウトラインフォントの各
点の座標を決定し、前述したDDAの動作により直線補
間が行われて面塗りされた文字パターンがビットマップ
メモリ4に展開され、印字制御部12 によって走査読み
出されて、印字機構部13により印字される。
【0037】図形の場合は、同様にして、描画部3によ
り必要ならば拡大縮小処理が行われた後、始点座標,終
点座標が与えられて、DDA部5により直線補間され
る。以上説明したように、始点座標,終点座標に小数部
を含む場合にも四捨五入せず、拡大処理によって整数化
してDDAを行うため、正確な直線が得られる。
【0038】
【発明の効果】以上説明したように、本発明は、始点座
標,終点座標に小数部を含む場合にも四捨五入すること
なく、拡大処理により整数化し、その始点座標,終点座
標を直接用いて直線補間を行うものであるから、アウト
ラインフォントをドットに変換して印字するプリンタ装
置において、忠実に文字が印字できる効果を奏する。
【図面の簡単な説明】
【図1】 本発明の原理図
【図2】 本発明の説明図
【図3】 動作フローチャート図
【図4】 一実施例の構成図
【図5】 従来例の説明図
【符号の説明】
1 受信部 2 コマンド解析部 3 描画部 4 ビットマップメ
モリ 5 DDA部 6 文字展開部 7 面塗り処理部 8 ヒント処理部 9 拡大縮小演算部 10 展開用メモリ 11 アウトラインフォント格納部 12 印字制御部 13 印字機構部 14 中央処理ユニッ
トCPU

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 小数部を含む座標値を持つ始点と終点
    との間を整数のXY座標値を持つドットで補間して直線
    を発生する場合、XY座標のうちのいずれか一方の第1
    の座標の座標値を整数値単位に順次歩進させ、歩進させ
    たその座標値ごとに前記始点と終点とを結ぶ直線と前回
    得られた補間点の他方の第2の座標の座標値との差を求
    め、その差の値またはその差の符号に基づき次に求める
    補間点の第2の座標の座標値を決定する直線発生方法で
    あって、 X座標およびY座標を前記小数部の桁数に対応した数に
    分割し、さらにその分割した区画を、少なくとも、前記
    始点の第1の座標の座標値と終点の第1の座標の座標値
    の差を該区画で表した数に分割し、その最小分割単位を
    用い、且つ前記始点座標を基準として、第2の座標の前
    記座標値と前記直線との差を求めて次の補間点の座標値
    を決定することを特徴とする直線発生方法。
  2. 【請求項2】 始点および終点の座標値の小数部を四
    捨五入した座標を始点および終点に対応した補間点とす
    ることを特徴とする請求項1記載の直線発生方法。
  3. 【請求項3】 始点または終点の第1の座標の小数部
    を四捨五入した座標値において、小数部を含む該始点と
    該終点とを結ぶ直線との差または該直線の延長線との差
    を求め、その差が小さい側の第2の座標の座標値を始点
    および終点の補間点とすることを特徴とする請求項1記
    載の直線発生方法。
  4. 【請求項4】 アウトラインフォントで指定された始
    点座標と終点座標との間をドットで直線補間して印字す
    るプリンタ装置であって、 前記始点座標および終点座標が小数部を含む座標値で表
    される場合、前記請求項1乃至請求項3による直線発生
    方法により、該アウトラインフォントの輪郭となるドッ
    トを発生して印字するように構成してなることを特徴と
    するプリンタ装置。
JP119095A 1995-01-09 1995-01-09 直線発生方法 Withdrawn JPH08190635A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP119095A JPH08190635A (ja) 1995-01-09 1995-01-09 直線発生方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP119095A JPH08190635A (ja) 1995-01-09 1995-01-09 直線発生方法

Publications (1)

Publication Number Publication Date
JPH08190635A true JPH08190635A (ja) 1996-07-23

Family

ID=11494542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP119095A Withdrawn JPH08190635A (ja) 1995-01-09 1995-01-09 直線発生方法

Country Status (1)

Country Link
JP (1) JPH08190635A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101030100B1 (ko) * 2008-06-27 2011-04-20 후지쯔 세미컨덕터 가부시키가이샤 라인 묘화 방법
JP2014056326A (ja) * 2012-09-11 2014-03-27 Casio Electronics Co Ltd 図形画像作成装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101030100B1 (ko) * 2008-06-27 2011-04-20 후지쯔 세미컨덕터 가부시키가이샤 라인 묘화 방법
JP2014056326A (ja) * 2012-09-11 2014-03-27 Casio Electronics Co Ltd 図形画像作成装置

Similar Documents

Publication Publication Date Title
JP2925587B2 (ja) ラスタ化方法
US5524198A (en) Character or graphic processing method and apparatus
JP2876942B2 (ja) データ変換装置
JP3037854B2 (ja) 文字生成方法及びその装置
US5351315A (en) Apparatus for smoothing outlines of images
JPH08190635A (ja) 直線発生方法
KR950014169B1 (ko) 출력방법 및 장치
JPH11109943A (ja) フォント処理装置およびフォント処理用プログラムを記録した記録媒体
JP3037023B2 (ja) 文字発生装置
JP2806679B2 (ja) 文字発生装置
JP2782752B2 (ja) 文字パターン出力装置
JP3514895B2 (ja) 画像展開処理方法及び装置
JP2748787B2 (ja) 曲線発生装置
JP3039214B2 (ja) データ変換装置
JP3570164B2 (ja) 画像形成装置およびグラデーション描画方法
JP3072756B2 (ja) 描画装置
JP2002117411A (ja) 曲線描画方法、曲線描画装置および曲線描画プログラムを記録した記録媒体
JPH0823741B2 (ja) ベクトル文字もしくはベクトル図形の処理方法
KR940001106B1 (ko) 선폭보정방법 및 그 장치
JP2937509B2 (ja) ビットマップ展開方式
JPH06243261A (ja) 画像処理装置
JP2713265B2 (ja) 画像表示装置
JP2776347B2 (ja) プリンタ用描画装置
JPH04259575A (ja) プリンタ
JPH10188011A (ja) 描画処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020402