JP3498478B2 - 図形描画装置 - Google Patents

図形描画装置

Info

Publication number
JP3498478B2
JP3498478B2 JP11590396A JP11590396A JP3498478B2 JP 3498478 B2 JP3498478 B2 JP 3498478B2 JP 11590396 A JP11590396 A JP 11590396A JP 11590396 A JP11590396 A JP 11590396A JP 3498478 B2 JP3498478 B2 JP 3498478B2
Authority
JP
Japan
Prior art keywords
normal vector
line
coordinates
segment
arc
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
JP11590396A
Other languages
English (en)
Other versions
JPH09305779A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation 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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP11590396A priority Critical patent/JP3498478B2/ja
Publication of JPH09305779A publication Critical patent/JPH09305779A/ja
Application granted granted Critical
Publication of JP3498478B2 publication Critical patent/JP3498478B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プリンタ装置やプ
ロッター装置等を用いて線分を描画したり、CAD(C
omputer Aided Design)システム
やコンピュータグラフィックス等において線分を描画す
る線分描画装置に関するものであり、特に、2値画像上
における太線の描画に用いて好適な線分描画装置に関す
るものである。
【0002】
【従来の技術】図20、図21は、従来の線分描画方法
の一例の説明図である。図20(A)に示す線分描画方
法では、公知のDDA(Digital Differ
ential Analyzer:ディジタル微分解析
機)アルゴリズムによって線幅1画素の直線は高速に発
生することができるため、この直線を数本重ねることに
よって所望の線幅の線分を描画する。この方法は、例え
ば、特開平5−233821号公報等に記載されてい
る。次に、図20(B)に示す線分描画方法は、描画し
たい太線の輪郭線を予め描画して、その後一般的な塗り
つぶし処理を用いて線分を描画する。この方法は、例え
ば、特開平4−205575号公報、特開平5−672
15号公報、特開平4−77977号公報等に記載され
ている。
【0003】さらに、図20(C)に示す線分描画方法
は、目的の線幅を直径とする円形の画素パターンを線分
の始点から終点まで公知のDDAアルゴリズムに基づい
て重ね合わせて描画する。図21に示す線分描画方法
は、図20(C)に示す方法を拡張したもので、例え
ば、特開平2−208694号公報に記載されているも
のである。図20(C)に示す方法では、線分の端が丸
くなってしまったり、円の直径以下の短い線分が描画で
きない。図21に示す方法では、線幅を直径とする円形
の画素パターンを生成するとともに、描画する線分に直
交した線分に基づく画素パターンを生成し、これらから
半円と線分に直交する線幅分の線分を生成する。そし
て、これらを合成することによって線分を描画する。例
えば、長い線分では端を半円で描画し、途中を円で描画
する。また、短い線分では、線分に直交する線幅分の線
分を用いて描画する。これにより、例えば、破線を描画
する場合においても、各描画直線の端を精密に描画する
ことができる。
【0004】ところで、描画される線分は、描画しよう
とする線幅を描画角度によらず一定に保つ必要がある。
図20(A)に示す描画方法では、描画角度によらず線
幅を一定にするために必要な直線の本数を算出すること
や、線分の端点の切り口をそろえること等が困難である
という問題がある。さらに図20(B)に示す描画方法
では、描画角度に応じた高精度な線幅を有する線分の輪
郭線を求める処理に長時間を要し、広い領域を塗りつぶ
す場合は輪郭線の座標を全て保持するために膨大なメモ
リが必要になる等の問題がある。
【0005】図20(C)に示す画素パターンを用いた
方法では、線分の線幅から高精度な円形の画素パターン
を生成するかまたは予め生成した画素パターンを登録し
ておく必要があるものの、描画角度によらず線幅をある
程度一定にすることができる。しかし、重複してアクセ
スされる画素が大量に発生し、線分の描画に多くの時間
を費やしてしまう。この方法については、より高精度な
線分を描画するために、図21に示す描画方法を用いる
ことができる。これにより、線幅のより高精度な表現
と、線分の端点の切り口を描画方向に直交した直線で切
り取ってそろえることを可能としている。この方法で
も、重複した画素のアクセスは解消せず、多くのパター
ンを生成して登録しておく必要があるため、多くの処理
時間と記憶容量が必要となるという問題がある。
【0006】高速に、しかも少ない記憶容量だけで描画
を行なえる方法として、特願平7−82432号に記載
されているように、描画する線分の始点から終点への描
画方向に直交する線幅分の整数個の画素からなる画素パ
ターン(以下、法線ベクトルと呼ぶ)を生成し、この法
線ベクトルを重ねることによって線分を描画する方法を
開発した。この方法によれば、法線ベクトルによって線
幅は一定となり、線分の端の形状も線分と直角となる。
また、法線ベクトルのパターンを記憶するのみでよいの
で、少ない記憶容量のみで実現できる。さらに、法線ベ
クトルの繰り返し描画は高速に行なうことができるの
で、高品質な線分を高速に描画することができる。
【0007】一方、コンピュータグラフィクスの分野で
は、CRTに画像を表示する際に線分をより美しく見せ
るためにアンチエイリアシング処理という手法が用いら
れている。図22は、アンチエイリアシング処理の一例
の説明図である。図中の矩形はそれぞれ画素を示してい
る。図22(A)にハッチングを施して示すような線分
をアンチエイリアシング処理を施して描画する場合、線
分の境界線上にある画素についてはその画素がどのくら
いの割合で線分に含まれるかによって輝度変調をかけて
表示する。この処理によって見掛け上の線幅は正確に表
現できる。図22(B)にその結果を示す。●の大きさ
が輝度値を示している。アンチエイリアシング処理につ
いては、例えば、特開平4−139689号公報などに
記載されている。
【0008】しかしながら、白黒のみの2値画像に太線
を描画する場合は輝度変調によって境界の画素を表現で
きない。図23は、法線ベクトルを用いて描画された線
分の一例の説明図である。上述の法線ベクトルを用いる
方法によって線分の描画を行なうと、線幅は一定となる
ものの、所望の線幅を十分に表現できない場合がある。
図23(A)においては、法線ベクトルが短いため線幅
が小さくなり、1画素だけ法線ベクトルを延ばすと図2
3(B)に示すようにかえって線幅が太くなりすぎる。
このように1種類の長さの画素パターンを用いて始点か
ら終点まで全て描画しようとすると、所望の線幅を表現
できない場合が発生するという問題がある。
【0009】
【発明が解決しようとする課題】本発明は、上述した事
情に鑑みてなされたもので、描画角度によらず、所望の
線幅を高精度に一定に保ちながら、複雑な処理を伴わず
に描画を行なうことのできる図形描画装置を提供するこ
とを目的とするものである。
【0010】
【課題を解決するための手段】請求項1に記載の発明
は、図形描画装置において、入力された情報から描画す
る線分の始点および終点と該線分の線幅とを設定する初
期値設定手段と、該初期値設定手段で設定された始点と
終点とを結ぶ直線と平行な直線上の座標を発生する基準
線走査手段と、該基準線走査手段で発生した座標と始点
との間の距離を算出する距離算出手段と、該距離算出手
段が算出した距離と前記基準線走査手段が発生した座標
とを基に始点と終点を結ぶ直線に直交しかつ前記初期値
設定手段で設定された線分の線幅以上の長さを有する画
素列を法線ベクトルとして生成する法線ベクトル生成手
段と、前記基準線走査手段で発生した座標から斜め方向
に座標が連続していることを判定する斜め走査判定手段
と、該斜め走査判定手段が基準線上の斜め方向に連続す
る画素の座標が発生されたと判定した際に線分の線幅に
対する法線ベクトルの長さの誤差がより小さくなるよう
に前記法線ベクトルを変形して長さの調整を行なうか否
かを判定する法線ベクトル変形判定手段と、該法線ベク
トル変形判定手段が法線ベクトルの長さの調整を行なう
と判定した際に前記斜め走査判定手段が斜め方向に連続
して発生されたと判定した座標に基づいて前記法線ベク
トルの変形を行なう法線ベクトル変形手段と、前記斜め
走査判定手段が基準線上の画素が斜め方向に連続してい
ると判定した際に生じる画素抜け箇所を前記法線ベクト
ルに基づいて特定しその箇所を描画する画素抜け描画手
段と、前記法線ベクトル変形判定手段の判定結果に基づ
き前記法線ベクトル生成手段で生成された法線ベクトル
または前記法線ベクトル変形手段で変形された法線ベク
トルのいずれかを前記基準線走査手段で発生した座標ご
とに描画する法線ベクトル描画手段を備えていることを
特徴とするものである。
【0011】請求項2に記載の発明は、図形描画装置に
おいて、入力された情報から描画する円、円弧、楕円お
よび楕円弧の大きさと線の太さを設定する初期値設定手
段と、該初期値設定手段で設定した円、円弧、楕円およ
び楕円弧の大きさと線の太さを基に円、円弧、楕円およ
び楕円弧を直線で近似して描画しうる近似直線の線分長
と等しい円弧長となる座標を順次生成する円弧セグメン
ト走査手段と、該円弧セグメント走査手段が生成した座
標を円、円弧、楕円および楕円弧を近似する線分の始点
と終点の座標として保持するセグメント始点・終点格納
手段と、前記始点と終点間の円弧上の座標を生成する円
弧座標発生手段と、前記始点と終点とを結ぶ直線上の座
標を生成する直線座標発生手段と、該直線座標発生手段
が生成した座標を基に前記始点と終点とを結ぶ直線に直
交しかつ前記初期値設定手段で設定された線幅以上の長
さを有する画素列を法線ベクトルとして生成する法線ベ
クトル生成手段と、前記円弧座標発生手段で発生した座
標から斜め方向に座標が連続していることを判定する斜
め走査判定手段と、該斜め走査判定手段が円弧上の斜め
方向の画素の座標が発生されたと判定した際に線幅に対
する法線ベクトルの長さの誤差がより小さくなるように
前記法線ベクトルを変形して長さの調整を行なうか否か
を判定する法線ベクトル変形判定手段と、該法線ベクト
ル変形判定手段が法線ベクトルの長さの調整を行なうと
判定した際に前記斜め走査判定手段が斜め方向に連続し
て発生されたと判定した座標に基づいて前記法線ベクト
ルの変形を行なう法線ベクトル変形手段と、前記斜め走
査判定手段が円弧上の画素が斜め方向に連続していると
判定した際に生じる画素抜け箇所を前記法線ベクトルに
基づいて特定しその箇所を描画する画素抜け描画手段
と、前記法線ベクトル変形判定手段の判定結果に基づき
前記法線ベクトル生成手段で生成された法線ベクトルま
たは前記法線ベクトル変形手段で変形された法線ベクト
ルのいずれかを前記円弧座標発生手段で発生した座標ご
とに描画する法線ベクトル描画手段を備えていることを
特徴とするものである。
【0012】
【発明の実施の形態】図1は、本発明の図形描画装置の
第1の実施の形態を示すブロック図である。図中、1は
初期値設定部、2は基準線走査部、3は距離算出部、4
は法線ベクトル生成部、5は斜め走査判定部、6は法線
ベクトル変形判定部、7は法線ベクトル変形部、8は画
素抜け描画部、9は法線ベクトル描画部、10はフレー
ムメモリである。
【0013】初期値設定部1は、入力された情報から描
画する線分の始点及び終点とこの線分の線幅とを設定す
る。基準線走査部2は、初期値認識部1で認識された始
点と終点とを結ぶ直線上にある座標を生成する。距離算
出部3は、基準線走査部2で生成された座標と始点との
間の距離を演算する。法線ベクトル生成部4は、距離演
算部3での演算結果と基準線走査部2で生成された座標
とを基に、始点と終点とを結ぶ直線に直交し、かつ初期
値設定部1で設定された線分の線幅と等しい長さを有す
る画素列を生成する。
【0014】斜め走査判定部5は、基準線走査部2で生
成された座標が直前に生成された座標の斜め方向に位置
するか否かの判定を行なう。法線ベクトル変形判定部6
は、斜め走査判定部5が斜めの位置の画素の座標が生成
されたと判定した際に、線分の線幅に対する法線ベクト
ルの長さの誤差がより小さくなるように法線ベクトルを
変形して長さの調整を行なえるか否かを判定する。法線
ベクトル変形部7は、法線ベクトル変形判定部6が法線
ベクトルの変形を行なえると判定した際に、斜め走査判
定部5が斜め方向の画素であると判定した座標に基づい
て、法線ベクトル生成部4が生成した法線ベクトルの変
形を行なう。画素抜け描画部8は、斜め走査判定部5が
基準線上の斜め方向に画素の座標が生成されたと判定し
た際に生じる画素抜け箇所を法線ベクトルに基づいて特
定し、その箇所を描画する。法線ベクトル描画部9は、
法線ベクトル変形判定部6による判定結果に基づき、法
線ベクトル生成部4で生成された法線ベクトルの画素
列、または、法線ベクトル変形部7で変形された法線ベ
クトルの画素列のどちらかを選択し、基準線走査部2で
生成された座標ごとに描画する。フレームメモリ10に
は、法線ベクトル描画部9および画素抜け描画部8で描
画された画像が展開される。
【0015】次に、上述の線分描画装置の第1の実施の
形態における動作の一例について説明する。図2は、本
発明の線分描画装置の第1の実施の形態における基本的
な線分描画動作の説明図である。線分を描画する際に
は、まず初期値設定部1によって描画しようとする線分
の始点及び終点とその線幅が設定される。続いて、基準
線走査部2では、初期値設定部1で認識された始点と終
点とを結ぶ直線上にある座標を、始点から順に生成す
る。例えば、図3(A)に黒丸で示す点の座標を順に生
成する。このとき、距離算出部3では、基準線走査部2
で生成された座標と始点との間の距離を演算により求め
る。
【0016】そして、距離演算部3による演算結果と、
初期値設定部1で設定した線幅とが等しくなる座標まで
基準線走査部2が座標を生成すると、法線ベクトル生成
部4では、例えば、その座標と始点との間で生成された
全ての座標を90°回転させ、回転後の座標上に線分の
描画に必要な線幅方向の画素を発生させる。つまり、法
線ベクトル生成部4では、図3(B)に示すように、初
期値認識部1で認識された始点と終点とを結ぶ直線に直
交し、かつ線分の線幅とほぼ等しい長さを有する画素列
を生成する。以下、これを法線ベクトルと呼ぶ。
【0017】一方、斜め走査判定部5では基準線走査部
2で生成された座標をもとに、直前に生成された座標の
斜めの位置の座標か否かを判定する。斜めの位置の座標
の場合には、その座標に基づいて法線ベクトルを描画し
た際に、線幅の調整が必要となる場合がある。そのた
め、判定結果を法線ベクトル変形判定部6に伝える。法
線ベクトル変形判定部6では、斜めの位置の座標が生成
された際に線幅の調整が必要か否かを判定し、必要と判
定される場合には法線ベクトルの変形を法線ベクトル変
形部7に指示する。法線ベクトル変形部7では、法線ベ
クトル生成部7で生成した法線ベクトルを変形する。
【0018】また、基準線走査部2で生成された座標
が、直前に生成された座標の斜めの位置の座標である場
合、法線ベクトルの描画によって画素抜けが生じる。こ
の画素抜けは規則的であるので、画素抜けの位置の特定
は容易である。画素抜け描画部8は、この画素抜けの位
置を特定し、法線ベクトル描画部9に伝える。あるい
は、直接、抜けている位置の画素を描画する。
【0019】法線ベクトル描画部9は、初期値設定部1
で設定した始点から終点まで、基準線走査部2で生成さ
れた座標ごとに、法線ベクトル生成部4で生成された法
線ベクトルまたは法線ベクトル変形部7で変形された法
線ベクトルのいずれかを法線ベクトル変形判定部6の判
定結果に応じて選択し、描画する。これにより、図2
(C)に示すように、始点から終点まで、所定の線幅の
線分が描画され、フレームメモリ10に格納される。
【0020】上述の線分の描画動作をさらに具体的に説
明する。図3は、法線ベクトル生成までの動作の一例の
説明図である。初期値設定部1は描画する線分の始点と
終点の座標および線幅を設定する。ここで、図3(A)
に示す格子で区切られた矩形が画素である画像上におい
て、始点p00と終点p70および線幅から決まる破線
で囲まれた四角形で表わした線分を描画するものとす
る。
【0021】基準線走査部2は、初期値設定部1が設定
した初期値に基づいて始点p0から終点p70までの直
線上の点の座標p00,p10,p20,...を発生
し、発生した座標を距離算出部3および法線ベクトル生
成部4へ渡す。距離算出部3は始点p00から発生した
座標までの移動距離を絶えず演算し、演算結果を法線ベ
クトル生成部4へ渡す。
【0022】図4は、距離算出部の動作の一例の説明図
である。この例では、移動距離の演算誤差を低減するた
めに、距離算出部3は、過去に発生した2画素の座標ま
でさかのぼり、これら2つの座標間の距離を用いて演算
を行なう。図4に示すように、現時点で最後に発生した
画素(以下現画素と呼ぶ)Pnの次に新しく発生する画
素(以下次画素と呼ぶ)Pn+1が発生されると、距離
算出部3はまず次画素までの暫定移動距離Pn〜Pn+
1を演算する。このとき、隣接する座標間の単位距離を
x軸方向、y軸方向ともに1とすると、画像は格子上に
画素が存在するため暫定移動距離は1.0または√2の
いずれかである。さらに距離算出部3が保持している現
画素の前に発生した画素(以下前画素と呼ぶ)からの移
動距離Pn−1〜Pnおよび先の暫定移動距離Pn〜P
n+1に基づいて新たに次画素までの移動距離Pn〜P
n+1を算出する。すなわち、連続する画素の移動距離
の値が1.0および√2または√2および1.0の場合
のみ、これらをまとめてピタゴラスの定理により√5と
する。
【0023】図4に示す例では、Pn−1〜Pn=1.
0、Pn〜Pn+1=√2よりPn−1〜Pn+1=√
5となるように、新たにPn〜Pn+1=(√5−1.
0)を移動距離として出力する。移動距離の演算後、P
n〜Pn+1の値(√5−1.0)は、Pn+1からP
n+2までの移動距離の算出のために、距離算出部3内
に保持される。
【0024】図5は、移動距離演算部の動作の一例を示
すフローチャートである。S41において、座標発生部
21が発生した次画素までの暫定移動距離を入力する。
以下この暫定移動距離の値をDnとする。また、移動距
離演算部23内で保持している前画素からの移動距離を
入力する。以下、この移動距離の値をDpとする。
【0025】S42において暫定移動距離Dnが1であ
るか否かを判定する。暫定移動距離Dnが1である場合
には、さらにS43において移動距離Dpが√2である
か否かを判定する。移動距離Dpが√2でなければ、S
44において、現座標Pnから次座標Pn+1までの加
算距離を1として、累積距離に加算する。また、移動距
離Dpが√2である場合には、S45において、現座標
Pnから次座標Pn+1までの加算距離を√5−√2と
して、累積距離に加算する。
【0026】S42において暫定移動距離Dnが1でな
いと判定された場合には、さらにS46において移動距
離Dpが1であるか否かを判定する。移動距離Dpが1
であれば、S47において、現座標Pnから次座標Pn
+1までの加算距離を√5−1として、累積距離に加算
する。また、移動距離Dpが1でない場合には、S48
において、現座標Pnから次座標Pn+1までの加算距
離を√2として、累積距離に加算する。
【0027】このような累積加算を行なう際に、√2や
√5の値を少ないビット数で表現すると、その誤差が累
積して線分の長さが違ってくる。この誤差は座標が斜め
に変化する際に現われる。そのため、√2の回数によっ
て誤差が決まるので、√2の回数によって誤差を修正す
るように構成することができる。具体的には例えば32
画素の座標を発生するごとにそれまでに何回斜めの位置
の座標が発生したかをカウントしておき、予め設定して
おいた誤差の積算値をもとに距離を修正すればよい。ま
た、このような修正を含め、テーブルを用いて距離を求
めることも可能である。
【0028】図3に戻り、法線ベクトル生成部4は、基
準線走査部2で生成した座標p10,p20,p3
0,...から、始点p00を中心として時計方向へ9
0°回転した座標p01,p02,p03,...を作
り出し、それらを法線ベクトル情報とする。これと同時
に距離算出部3は、基準線走査部2で生成した座標と始
点との距離を算出し、算出した距離が初期値設定部1で
設定した線幅を上回るかまたは両者が等しいか否かを判
断する。移動距離が線幅に等しいか上回ったときに座標
発生部21の座標発生を中断させる。この時点では、図
3(A)に黒丸で示すように、法線ベクトル生成部4
は、p00,p10,p20,p30について、p00
を中心として90゜回転した座標からなる法線ベクトル
を生成している。
【0029】このとき、法線ベクトル変形判定部6は、
距離算出部3で算出された移動距離が線幅に対してどの
くらい上回ったかによって3つに場合分けして、線分の
線幅に対する法線ベクトルの長さの誤差がより小さくな
るように、法線ベクトルを変形して長さの調整を行なえ
るか否かを判定する。
【0030】図6は、法線ベクトル変形判定部における
法線ベクトルの変形の可否の判定処理の一例を示すフロ
ーチャートである。S51において基準線走査部2がD
DAによって1画素ずつ座標を発生し、S52において
距離算出部3が始点からの移動距離を算出し、S53に
おいて移動距離が線幅に等しいかあるいは上回ったか否
か判定して、下回る場合はS51に処理を移す。等しい
か上回った場合は、上回った長さに応じてS54および
S56において法線ベクトルの算出方法が3つに場合分
けされる。
【0031】まず、S54において始点からの移動距離
と線幅との差(上回った長さ)が0.5以下の場合は、
S55において、この時の法線ベクトルがそのまま描画
に用いられる。また、S56において始点からの移動距
離と線幅との差が0.5から1.0の間の場合は、S5
7において、この時の法線ベクトルでは線幅に比べて多
少長いため最後に走査された画素を除いた画素列を法線
ベクトルとする。ただし、1画素除いた法線ベクトルで
は線幅に対して逆に少し短くなるため、描画途中で動的
に法線ベクトルを変形して描画を行なうこととする。最
後に、始点からの移動距離と線幅との差が1.0よりも
大きい場合は、S58において、この時の法線ベクトル
では線幅に対して長いため最後に走査された画素を除い
た画素列を法線ベクトルとする。なお、この場合分けの
方法やその閾値は一例であって、このような場合分けを
しないことも含めて、種々の変形が可能である。
【0032】図3に示した例では、基準線走査手段2が
基準線を走査しながら始点からの移動距離が線幅に等し
いか上回るまで走査した場合、p30まで走査した時に
始点からの移動距離が線幅を上回る。このとき図6に示
すフローチャートに従って法線ベクトルを求める。この
例では、始点からp30までの距離と線幅との差が0.
5から1.0以下に入るとすると、法線ベクトルをp3
0までとすると長すぎとなりp20までとすると短すぎ
る。このため、法線ベクトル変形判定部6は、最後に生
成された画素p30を除くp20までの画素列を法線ベ
クトルとする。そして、この法線ベクトルを描画途中で
動的に変形して描画に用いると判定する。このようにし
て、法線ベクトル生成部4では、図3(B)に示すよう
に、画素列p00〜p20をp00を中心として時計回
りに90°回転して法線ベクトルp00,p01,p0
2を生成する。
【0033】次に、法線ベクトル生成部4から法線ベク
トルが作成された後は、法線ベクトルに基づいて線分描
画が行なわれる。図7は、法線ベクトル生成から線分を
描画してゆく動作過程の一例の説明図である。基準線走
査部2は、図7に示すように始点p00から終点へ向か
って順に座標を発生し、法線ベクトル描画部9は、座標
が発生されるごとにその座標を始点として法線ベクトル
あるいは変形された法線ベクトルを描画する。画素p0
0については、法線ベクトル生成部4で生成した図3
(B)に示す法線ベクトルが描画され、図3(A)にク
ロスハッチングで示した画素が描画される。
【0034】次に、図4に示すように、画素p00の後
に基準線走査部2はp10の座標を発生する。この画素
p10を法線ベクトルの始点として法線ベクトルを描画
するとき、基準線上の画素が斜めに移動することにな
る。画素p00から画素p10へと斜めの位置の座標が
発生された場合、斜め走査判定部5がこれを判定し、こ
れに基づいて法線ベクトル変形判定部6がp10から描
画する法線ベクトルを変形すると判定する。法線ベクト
ル変形部7は、法線ベクトルの変形として先に求めた法
線ベクトルの最終画素(図4の画素p12)の近傍の1
画素をこの法線ベクトルに加える。ここでは基準線の描
画方向に対して右側に法線ベクトルを描画しているた
め、図4において法線ベクトルに1画素加えて、法線ベ
クトル生成部4で生成した法線ベクトルより少し長い法
線ベクトルを用いて描画を行なう。したがって、画素p
12の下に新たに画素p13を加えて、p10〜p13
を変形した法線ベクトルとして用い、描画を行なう。
【0035】図8は、全描画方向における法線ベクトル
の変形と画素抜け箇所の説明図である。図中、黒丸で示
した画素は基準線上の画素を示し、クロスハッチングで
示した画素は法線ベクトルによって描画される画素を示
している。また、右上がりのハッチングを施して示した
画素は、変形した法線ベクトルによって新たにつけ加え
られる画素を示し、右下がりのハッチングを施して示し
た画素は画素抜け箇所を示している。
【0036】基準線上で斜めに移動する場合は、左上、
右上、右下、左下の4種類である。この4種類につい
て、図8に示している。図8に右上がりのハッチングを
施して示した画素のように、隣り合う法線ベクトルの先
端画素間の画素を加えることで法線ベクトルを変形す
る。図7に示した例は、図8の右上の例に該当するの
で、図7に示すようにp13を加えたp10〜p13で
構成される変形した法線ベクトルを用いて描画する。
【0037】また、法線ベクトルの描画に伴って、画素
抜け箇所の描画処理が必要となる。画素抜けは、図8に
示すように、基準線上の画素の座標が斜めに変化し、法
線ベクトルを構成する隣り合う画素がななめの位置にあ
るときに発生する。このため、基準線上の画素の座標を
見ながら連続する2画素が斜めの位置関係になっている
場合は、斜め走査判定部5が法線ベクトル変形判定部6
に法線ベクトルの変形指示を与えるとともに、画素抜け
描画部8に画素抜け位置の描画を指示する。図7に示す
例では、基準線上で画素p10が発生した時に画素p0
0に対して斜めの位置関係となることが斜め走査判定部
5によって判定される。また、法線ベクトルに基づいて
画素p11を描画した時に、画素p11が前画素p10
と斜めの位置関係にあることから、画素p11’が画素
抜け箇所であると求められ、画素抜け描画部8において
この画素を描画する。
【0038】図9は、描画された線分の一例の説明図で
ある。上述のように、図6のS57で複数の法線ベクト
ルによって線分の描画を行なうと判定された場合は、基
準線上の画素列の配置に応じて法線ベクトルを動的に変
形しながら描画を行なう。このようにして、基準線走査
部2で発生した基準線上の各座標について、法線ベクト
ルあるいは変形した法線ベクトルを用いて描画すること
により、図9に示すような線分を描画することができ
る。このようにして、ほぼ所望の線幅の線分を高画質
に、しかも高速に描画することができる。
【0039】また、図6でS55またはS58によって
法線ベクトルが決まった場合は、その法線ベクトルのみ
を用い、基準線上の各座標を始点として描画を行なう。
また始点と終点を結ぶ直線に対して描画する線分を中心
または右側か左側によせて描画する場合は、基準線を必
要な長さだけ移動させて描画すればよい。右側に描画す
る場合は上述の方法によって描画可能である。左側に描
画する場合は、法線ベクトルを求める際に反時計回りに
基準線上の画素列を90゜回転させて法線ベクトルを求
め、基準線に対して左側に描画を行ない、画素抜けおよ
び法線ベクトルの変形についても左側になるよう変更す
ればよい。中心に設定する場合は線幅の半分の長さの法
線ベクトルを生成し、基準線をこのベクトルの長さだけ
ベクトルの方向へ平行移動させて描画すればよい。基準
線の各点における振り分け量を適宜変化させることによ
って、波線や鋸歯状の線を描画することも可能である。
また、法線ベクトルの画素を適宜抜くことによって、二
重線などのn重線や白抜き線などを描画することもでき
る。
【0040】さらに、破線や点線、鎖線など、途中で途
切れる線分も簡単に描画することができる。この場合に
は、基準線上の画素を線種に応じて発生させるか、ある
いは所定間隔で所定長さだけ基準線上の画素に対して法
線ベクトルによる描画を行なわないようにすることによ
って、任意の線幅の破線や点線などを描画することが可
能である。例えば、図3に示した例において、基準線上
の画素として画素p00,p10,p30,p40,p
60,p70についてのみ、法線ベクトルを描画するよ
うに制御することにより、2ドット描画して1ドット空
くような破線を描画することが可能である。このよう
に、種々の線種にも簡単に対応することができる。
【0041】また、上述の線分描画処理では、法線ベク
トルとして法線方向の1ライン分のみの画素しか発生さ
せなかったが、例えば、隣接する法線ベクトルを変形分
も含めて複数発生させ、発生した複数の法線ベクトルの
データを用いて描画してもよい。
【0042】上述の第1の実施の形態では直線の描画に
対して本発明を適用したが、本発明は円・円弧・楕円に
も適用可能であり、以下の第2の実施の形態としてこれ
を示す。図10は、本発明の図形描画装置の第2の実施
の形態を示すブロック図である。図中、11は初期値設
定部、12は円弧セグメント走査部、13はセグメント
始点・終点格納部、14は直線座標発生部、15は法線
ベクトル生成部、16は円弧座標発生部、17は描画
部、18は終了条件判定部、19はフレームメモリ、2
0は法線ベクトル変形判定部、21は法線ベクトル変形
部、31はセグメントレングス算出部、32は円弧セグ
メント座標発生部、33は移動距離演算部、34はセグ
メント走査判定部、41は画素抜け判定部、42は法線
ベクトル描画部、43はセグメント終了条件判定部であ
る。
【0043】初期値設定部11は、描画する円、円弧、
楕円および楕円弧の大きさと線の太さを設定する。円、
円弧の大きさとしては半径を、また楕円、楕円弧の場合
はX軸およびY軸の径を設定する。さらに円弧、楕円弧
の場合には、描画開始点と描画終了点の座標、あるいは
描画開始点または描画終了点の座標と中心角、または、
描画開始点および描画終了点の存在するある方向からの
角度等を設定する。これらは、キーボードやマウスなど
の入力装置から入力されたり、あるいはファイルや他の
計算機から与えられるページ記述言語等で記述された描
画データを解釈することで得られる。
【0044】円弧セグメント走査部12は、円、円弧、
楕円、および楕円弧を直線で近似して描画するために最
適な線分長と等しい長さだけ、円弧上の座標を走査す
る。この線分長の区間をセグメントと呼び、線分長をセ
グメントレングスと呼ぶ。セグメントレングスは、円と
円弧の場合には半径と線幅から、また楕円と楕円弧の場
合にはX軸およびY軸の径、X軸の径とY軸の径の比お
よび線幅から求めることができる。円弧座標上をセグメ
ントレングスと等しい長さだけ走査することでセグメン
トの始点と終点が求められる。セグメント始点・終点格
納部13は、円弧セグメント走査部12で求められたセ
グメントの始点および終点の座標を一時保持する。
【0045】円弧セグメント走査部12は、セグメント
レングス算出部31、円弧セグメント座標発生部32、
移動距離演算部33、セグメント走査判定部34を有す
る。セグメントレングス算出部31は、初期値設定部1
1で設定した描画する曲線の描画開始点と描画終了点の
座標、線幅、楕円の場合はX軸およびY軸の径に基づい
てセグメントの長さであるセグメントレングスを算出す
る。円弧セグメント座標発生部32は、円弧上の画素の
座標を順次発生する。円弧上の画素の座標は、例えば、
公知のBresenhamの円弧発生アルゴリズムを用
いて発生させることができる。移動距離演算部33は、
セグメントの始点となる画素の座標から、円弧セグメン
ト座標発生部32が発生した画素の座標までの移動距離
を演算する。セグメント走査判定部34は、セグメント
レングス算出部31で求めたセグメントレングスと、移
動距離演算部33で演算される移動距離を比較してセグ
メントの走査の終了を判定し、終了した場合は円弧セグ
メント座標発生部32がセグメントの始点および終点を
セグメント始点・終点格納部13に送る。
【0046】直線座標発生部14は、セグメント始点・
終点格納部13に保持されているセグメントの始点から
終点までの直線座標を、例えばDDA等によって発生す
る。法線ベクトル生成部15は、直線座標発生部14で
発生した直線座標に対応する画素列を、線幅分のみ90
°回転させることによって、セグメントの始点と終点を
結ぶ直線に直交する法線ベクトルを生成する。円弧座標
発生部16は、セグメント始点・終点格納部13に保持
されているセグメントの始点および終点間の円弧上の座
標を発生する。円弧上の座標の発生には、例えばBre
senhamの円弧発生アルゴリズム等を用いることが
できる。
【0047】描画部17は、円弧座標発生部16で発生
した円弧上の各座標を法線ベクトル生成部15で生成し
た法線ベクトルの始点として、法線ベクトルを構成する
画素列を描画する。このとき、隣り合う法線ベクトル間
に描画されない画素が生じる場合は、その画素の描画も
行なう。描画部17は、画素抜け判定部41、法線ベク
トル描画部42、セグメント終了条件判定部43を有す
る。
【0048】画素抜け判定部41は、円弧座標発生部1
6で発生した円弧上の画素の座標をもとに、法線ベクト
ル生成部15で生成された法線ベクトルあるいは法線ベ
クトル変形部21で変形された法線ベクトルによる描画
の際に、画素抜けが発生するか否かを判定し、円弧上の
画素の座標とともに判定結果を法線ベクトル描画部42
に伝える。画素抜けは、円弧座標発生部16で斜め方向
に画素の座標が生成された場合に発生する。そのため、
円弧座標発生部16で生成された座標が直前に生成され
た座標の斜め方向の位置であるか否かも画素抜け判定部
41で判定される。この判定結果が法線ベクトル変形判
定部20に伝えられる。
【0049】法線ベクトル描画部42は、円弧座標発生
部16で発生した円弧上の画素の座標をもとに、その画
素を始点として、法線ベクトル生成部15で生成した法
線ベクトルあるいは法線ベクトル変形部21で変形した
法線ベクトルのいずれかを法線ベクトル変形判定部20
の判定結果によって選択して用い、描画を行なう。ま
た、画素抜け判定部41で画素抜けが発生すると判定さ
れている場合には、画素抜けの除去も行なう。
【0050】セグメント終了条件判定部43は、円弧座
標発生部16によって発生された円弧上の画素がセグメ
ントの終点に達したか否かを判定し、セグメントの終点
に達していない場合には、円弧座標発生部16に対して
次の円弧上の画素の座標の発生を指示する。
【0051】終了条件判定部18は、描画開始点から描
画終了点までの描画が終了したか否かを判定し、描画終
了点までの描画が終了していない間は、円弧セグメント
走査部12以降の処理を繰り返し行なわせる。フレーム
メモリ19は、描画部17で描画された画像を保持す
る。
【0052】法線ベクトル変形判定部20は、画素抜け
判定部41が円弧座標発生部16により斜めの位置の画
素の座標が生成されたと判定した際に、線分の線幅に対
する法線ベクトルの長さの誤差がより小さくなるように
法線ベクトルを変形して長さの調整を行なえるか否かを
判定する。法線ベクトル変形部21は、法線ベクトル変
形判定部20が法線ベクトルの変形を行なえると判定し
た際に、画素抜け判定部41が斜め方向の画素であると
判定した座標に基づいて、法線ベクトル生成部15が生
成した法線ベクトルの変形を行なう。
【0053】図11は、本発明の図形描画装置の第2の
実施の形態における描画手順の一例の説明図である。こ
こでは、描画開始点から描画終了点までのある線幅の円
弧を描画する場合を例にして説明する。初期値設定部1
1は、描画する円弧の半径、描画開始点、描画終了点、
線幅などを設定する。
【0054】円弧セグメント走査部12は、円弧上の始
点から、円弧内で円弧上の画素の接線のなす角度がほぼ
等しいと見なせる最大の円弧長だけ走査し、セグメント
の終点を求める。図2では一部のセグメントについて示
しており、例えば円弧上の点aを始点とし、走査して得
たセグメントの終点bを求める。求めたセグメントの始
点aと終点bの座標は、セグメント始点・終点格納部1
3に一時保持される。
【0055】次に、直線座標発生部14がセグメント始
点・終点格納部13に格納されているセグメントの始点
aら終点bを通過する直線上を線幅長だけ走査し、直線
上の画素の座標を発生する。法線ベクトル生成部15
は、直線座標発生部14で発生した座標を、セグメント
の始点aを中心に90゜回転させて法線ベクトルa−
a’を生成する。
【0056】一方、円弧座標発生部16は、セグメント
始点・終点格納部13に格納されているセグメントの始
点aと終点bの間の円弧ab上の画素の座標を点aから
順に発生する。法線ベクトル変形判定部20では、円弧
座標発生部16で発生した座標が斜めの位置の座標であ
ることを描画部17の画素抜け判定部41から受ける
と、円弧の線幅に対する法線ベクトルの長さの誤差がよ
り小さくなるように法線ベクトルを変形して長さの調整
を行なえるか否かを判定し、変形が可能な場合には法線
ベクトル変形部21で法線ベクトルを変形して線幅に最
適な法線ベクトルを生成する。
【0057】描画部17は、円弧座標発生部16で発生
した円弧ab上の各画素の座標について、その座標を法
線ベクトルの始点として、法線ベクトル生成部15で生
成した法線ベクトルa−a’を構成する画素列、あるい
は、法線ベクトル変形部21で変形した法線ベクトルを
構成する画素列のいずれかを描画する。図2では、描画
した法線ベクトルを区別なく細矢印で示している。この
とき、隣り合う法線ベクトル間に描画されない画素が生
じる場合は、その画素の描画も行なう。このようにし
て、始点aと終点bの間のセグメントの描画が終了す
る。
【0058】終了条件判定部18は、終点bが描画終了
点でないことを確認し、点bを始点とする新たなセグメ
ントの処理を開始させる。以下同様にして、順次、円弧
bc,円弧cd,・・・について、セグメントへの分割
と、各セグメントにおける描画処理が行なわれる。この
ようにして、描画開始点から描画終了点まで、指定され
た線幅の円弧がフレームメモリ19内に描画される。
【0059】上述の本発明の第2の実施の形態における
描画手順をさらに詳述する。初期値設定部11は、描画
する円、円弧、楕円、楕円弧等の曲線の始点の座標、線
幅、楕円および楕円弧の場合にはX軸およびY軸の径を
設定する。円弧セグメント走査部12のセグメントレン
グス算出部31は、初期値設定部11によって設定され
た諸値を用いてセグメントレングスを算出する。
【0060】図12は、本発明の第2の実施の形態にお
けるセグメントレングス算出部の動作の一例を示すフロ
ーチャートである。S61において、描画する曲線が円
または円弧か、あるいは楕円または楕円弧かを判定す
る。円または円弧であれば、初期値設定部11の設定し
ている半径を以下の最大近似直線長の計算に用いる半径
とする。また、楕円または楕円弧であれば、S62にお
いて、初期値設定部11が設定している楕円の長軸およ
び短軸の径の値から、最大近似直線長の計算に用いる半
径(以下この半径を、径に応じた半径と呼ぶ)の算出を
行なう。この処理は後述する。
【0061】次に、S63において、円の半径、あるい
は楕円の場合はS62で算出された径に応じた半径に基
づき、直線近似しても画質劣化があまり認められない範
囲で最も長い近似直線長を求める。この処理についても
後述する。
【0062】そして、S64において、初期値設定部1
1で設定された線幅と、S63で算出された最大の近似
直線長を比較し、小さい方をセグメントレングスとす
る。すなわち、最大の近似直線長が線幅以上の場合には
S65においてセグメントレングスを線幅とし、線幅の
方が最大の近似直線長よりも長い場合にはS66におい
てセグメントレングスを最大近似直線長とする。このよ
うにして、セグメントレングス算出部31においてセグ
メントレングスが算出される。
【0063】図13は、本発明の第2の実施の形態にお
けるセグメントレングス算出時の径に応じた半径計算の
動作の一例の説明図である。この径に応じた半径を簡単
に求めるため、この例ではカーブの急な領域と緩やかな
領域に分け、それぞれの領域について便宜上の径に応じ
た半径を決定している。図13に示すように、長軸との
交点およびその付近をカーブの急な領域2とし、短軸と
の交点およびその付近をカーブの緩やかな領域1として
いる。そして、2つの領域に分けるためのしきい値Th
は、長軸と短軸の径の比が4:1以下、すなわちA≦4
×Bの場合は短軸の半分(B/2)とし、4:1より大
きい、すなわちA>4×Bの場合は短軸の1/4(B/
4)とする。図13では第1象限のみしか示していない
が、他の象限についても同様である。
【0064】図14は、本発明の第2の実施の形態にお
けるセグメントレングス算出時の径に応じた半径の計算
の動作の一例を示すフローチャートである。図13に示
した方法による径に応じた半径の計算動作を図14に示
している。まずS71において、長軸と短軸の径の比
(A/B)が1.5未満の場合は円と見なし、S72に
おいて半径は短軸Bの半径が採用される。
【0065】長軸と短軸の径の比(A/B)が1.5以
上については楕円と見なし、図13に示したように各象
限ごとに2つの領域に分けてそれぞれの領域ごとに半径
を算出する。S73において領域2に含まれるか否かを
判定し、領域2に含まれると判断された場合はS74に
おいて径の値に無関係に短軸の半分(B/2)を半径と
する。領域1に含まれる場合は順にS75およびS77
で径の比によって判定される。S75において長軸と短
軸の径の比(A/B)が1.5以上2.5未満の場合に
は、S76において径に応じた半径を長軸の径Aと短軸
の径Bの和とする。また、S77において長軸と短軸の
径の比(A/B)が2.5以上3.5未満の場合には、
S78において径に応じた半径を長軸の径Aと短軸の径
Bの和の2倍とする。さらにそれ以上の場合には、S7
9において径に応じた半径を長軸の径Aと短軸の径Bの
和の3倍とする。これらの径に応じた半径の値は一例で
あって、他の値としてもよい。
【0066】描画する図形が楕円あるいは楕円の場合
に、上述のようにして径に応じた半径が算出された。ま
た、描画する図形が円または円弧の場合には、初期値設
定部11で半径が設定されている。これらの半径または
径に応じた半径に基づき、直線近似しても画質劣化があ
まり認められない範囲で最も長い近似直線長を求める。
図15は、本発明の第2の実施の形態における半径に基
づく最大近似直線長の算出動作の一例を示すフローチャ
ートである。ここでは、径に応じた半径も単に半径と呼
んでいる。
【0067】最大近似直線長は半径によってS81およ
びS83によって3つに場合分けされ、それぞれS8
2、S84、S85に示す実験から導いた計算式によっ
て算出される。すなわち、S81において半径が400
より小さいか否かを判定し、400より小さい場合には
S82において最大近似直線長を5+0.0625×半
径とする。また、S83において半径が400以上10
00未満か否かを判定し、その範囲内の場合にはS84
において最大近似直線長を25+0.03125×半径
とする。半径が1000以上の場合には、最大近似直線
長を50+0.00781×半径とする。S82,S8
4,S85において用いた半径に乗ずる係数は、それぞ
れ2-4,2-5,2-7であり、計算機による2進の乗算を
シフトによって行なえる値として計算速度を向上させて
いる。このようにして求めた最大近似直線長は半径と比
較され、どちらか短い方がセグメントレングスとして採
用される。
【0068】図16は、本発明の第2の実施の形態にお
いて円弧セグメント座標発生部で発生される画素の座標
と円弧セグメントの一例の説明図である。円弧セグメン
ト座標発生部32は、例えば、公知のBresenha
mの円弧発生アルゴリズムなどに基づいて、セグメント
の始点から順に図16に円で示した画素の座標を発生し
てゆく。図16では、セグメントの始点の画素を●で示
し、順次生成される画素を○にハッチングを施して示し
ている。また、セグメントの終点の画素を◎で示してい
る。
【0069】セグメントの始点の画素●から、○にハッ
チングを施した画素の座標が順次生成されてゆく。その
都度、移動距離演算部33は、セグメントの始点の画素
からの移動距離を演算する。移動距離演算部33におけ
る移動距離の演算方法は、例えば上述の第1の実施の形
態における距離算出部3で用いた演算方法を適用するこ
とができる。
【0070】そしてセグメント走査判定部34によって
セグメントレングス算出部31で求めたセグメントレン
グスと、移動距離演算部33で演算される移動距離を比
較してセグメントの終点を判定する。図16では、◎で
示した画素の座標が発生された時点で、移動距離演算部
33で演算された移動距離がセグメントレングスに達し
たとすると、セグメント走査判定部34はこれを検出
し、◎で示した画素がセグメントの終点であることを判
定する。また、セグメント走査判定部34は、移動距離
がセグメントレングスに達する前に描画終了点に達した
場合には、その描画終了点をセグメントの終点と判定す
る。セグメントの終点が検出された場合は、円弧セグメ
ント座標発生部32から、セグメントの始点および終点
の座標をセグメント始点・終点格納部13に送る。
【0071】図17は、本発明の第2の実施の形態にお
ける法線ベクトルの作成過程の説明図である。直線座標
発生部14は、セグメント始点・終点格納部13に保持
されているセグメントの始点および終点の画素の座標に
基づいて、図17に示すようにセグメントの始点から終
点の方向への直線上の画素の座標を発生する。図17で
は、発生された画素を○に×を施して示している。セグ
メントの始点から発生した画素の座標までの距離の計算
は、上述の第1の実施の形態における距離算出部3にお
ける処理と同様にして求めることができる。そして、計
算された距離と線幅とを比較することによって、線幅分
の直線上の画素が生成されたか否かを判定することがで
きる。
【0072】法線ベクトル生成部15は、直線座標発生
部14において線幅分だけ発生された画素の座標をもと
に、それらをセグメントの始点を中心として90°回転
し、図17において●で示す画素列のように、セグメン
トの始点から終点方向に直交し長さが線幅となる法線ベ
クトルを生成する。ここでは、法線ベクトルを曲線の内
側に発生させるため、円や楕円の中心の回りに反時計方
向に円弧や楕円弧の走査を行なうものとし、法線ベクト
ルを生成する際にもセグメントの始点を中心に反時計方
向に90゜回転させている。もちろん、時計方向に円弧
や楕円弧を走査しまた法線ベクトルを回転させる構成で
もよい。また、円弧や楕円弧の走査方向と法線ベクトル
の回転方向を異ならせ、法線ベクトルの終点を円弧座標
発生部16で発生した円弧上の画素に合わせて描画する
ように構成することもできる。
【0073】法線ベクトル変形判定部20は、上述の第
1の実施の形態の法線ベクトル変形判定部6と同様に、
例えば、図6に示したフローチャートに従って法線ベク
トルの長さと、変形の要否を決定する。法線ベクトルの
変形が必要と判断されたときには、法線ベクトル変形部
21に対して法線ベクトルの変形を指示する。法背院ベ
クトル変形部21では、上述の第1の実施の形態におい
て説明した図8に示すパターンに基づき、変形した法線
ベクトルを生成する。
【0074】図18は、本発明の第2の実施の形態にお
ける法線ベクトルに基づくセグメントの描画過程の説明
図である。法線ベクトル生成部15において法線ベクト
ルが生成された後に、円弧座標発生部16は、例えば、
Bresenhamの円弧発生アルゴリズム等を用い
て、セグメントの始点から終点までの円弧上の画素の座
標を順次発生する。
【0075】このとき、図18に示すように、円弧上の
画素が斜めに移動した場合は、図18に△で示す画素の
ように、画素抜けが生じる。そのため、画素抜け判定部
41は、円弧座標発生部16で発生された円弧上の画素
の座標に基づいて、画素が斜めに移動したことを検出し
て画素抜けの発生を検知する。画素抜けとなる画素は法
線ベクトル描画部42において埋められ、画素抜けが除
去される。
【0076】これとともに、画素抜け判定部41は斜め
の位置の座標が円弧座標発生部16で発生されたことを
法線ベクトル変形判定部20に伝える。法線ベクトル変
形判定部20では、法線ベクトルの変形が必要と判断さ
れ、かつ、画素抜け判定部41から斜め位置の座標が発
生された際に、法線ベクトル描画部42に対して法線ベ
クトル変形部21で変形された法線ベクトルを選択して
用いるように指示する。
【0077】法線ベクトル描画部42は、円弧座標発生
部16で発生した座標を法線ベクトルの始点として、法
線ベクトル生成部15で生成した法線ベクトル、あるい
は、法線ベクトル変形部21で変形された法線ベクトル
のいずれかを、法線ベクトル変形判定部20の判定結果
に基づいて選択し、描画を行なう。このように、法線ベ
クトルあるいは変形された法線ベクトルを用いて、円弧
座標発生部16で発生した座標ごとに描画を行なってゆ
く。
【0078】円弧座標発生部16による円弧上の画素の
座標の発生は、セグメント終了条件判定部43がセグメ
ントの終点を判定するまで行なわれ、セグメントの終点
に達したらセグメント内の描画を終了する。これによ
り、図18に示すように1つのセグメントにおける描画
が行なわれる。このとき、△で示す画素抜けの箇所も埋
められている。また、線幅を調整するために変形された
法線ベクトルに付加された画素も描画されている。この
画素には、右上がりのハッチングを施して示している。
【0079】終了条件判定部18は、描画終了点に到達
するまでセグメントごとに以上の処理を繰り返すように
制御するので、描画開始点から描画終了点までの線が描
画される。このとき、各セグメントの境界部では、法線
ベクトルを曲線の内側となるように発生させることによ
って、2つのセグメントの端部が隣接あるいは多少重複
するように描画される。そのため、セグメント間で画素
抜けなどは発生しない。
【0080】このようにして描画された図形の外周は、
円弧座標発生部16で発生した画素がそのまま用いられ
るため、画質の劣化が少ない。また、円弧座標発生部1
6で発生した画素を始点として法線ベクトルおよび法線
ベクトル変形部21による変形された法線ベクトルを用
いて描画するので、法線ベクトルの終点の画素が形成す
る図形の内周の形状も良好に形成され、画質を向上させ
ることができる。さらに、線幅に応じた法線ベクトルを
用い、法線ベクトルを変形して線幅を調整しているの
で、図形上のどの位置においても正確に所望の線幅とな
っており、端点形状は直線で描画方向に直交する。
【0081】また、上述の第1の実施の形態と同様に、
特定のパターンに従って描画と抑止を切り替えながら処
理することにより、破線や点線、鎖線などの描画が可能
である。図19は、本発明の図形描画装置の第2の実施
の形態における破線の描画の一例の説明図である。図1
9では簡単のため、それぞれのセグメントは6本の法線
ベクトルを含むものとし、5ドットごとに描画と抑止を
切り替えながら処理するものとする。このような処理
は、例えば円弧座標発生部16が発生した円弧上の画素
の座標を、描画部17に5つ送った後の5つは送らずに
捨てるように制御ればよい。このような簡単な制御によ
り、図19に示すように、各線素の幅、長さ、線素間の
間隔、線素の形状の揃った、高品質の破線などを描画す
ることができる。円弧座標発生部16で発生した円弧上
の画素の座標を描画部17に送る規則(特定パターン)
を変更するだけで、線素の長さや線素間の間隔を変更で
き、また、1点鎖線や2点鎖線などの鎖線も描画可能で
ある。この特定パターンは数値によって予め与えておく
ほか、例えば関数を与えておき、線幅に従って決定した
り、半径や曲率などに従って動的に決定するように構成
することも可能である。
【0082】このような描画と抑止の切換処理は、例え
ば、円弧座標発生部16において円弧上の画素の座標を
発生させる際に、描画部分の円弧上の画素の座標のみを
描画部17に渡すように構成するほか、描画部17内の
法線ベクトル描画部42において法線ベクトルを描画す
る際に特定のパターンに従って法線ベクトルを描画する
か否かを判定しながら描画を行なうように構成すること
もできる。なお、描画する法線ベクトルは、上述のよう
に、ある条件においては法線ベクトル生成部15で生成
した法線ベクトルまたは法線ベクトル変形部21で変形
された法線ベクトルのいずれかを動的に選択することに
なる。
【0083】また、法線ベクトルを生成した際に、画素
を抜くことによって2重線などの多重線を描くことも可
能である。このときの線の間の幅も一定となる。さらに
抜く画素を周期的に変化させることによって波線も可能
であり、これらと破線などの線種を組み合わせることも
可能である。
【0084】
【発明の効果】以上の説明から明らかなように、本発明
によれば、描画する図形に沿った画素を発生し、その画
素を始点として法線ベクトルおよび変形された法線ベク
トルを用いて描画するので、法線ベクトルの始点および
終点の画素が形成する図形の左右の形状は所望の形状と
なり、また、端点形状もその点の描画方向に直交する。
そのため、高画質の描画図形を得ることができる。さら
に、線幅に応じた法線ベクトルを用い、法線ベクトルを
動的に変形して線幅を調整しているので、図形上のどの
位置においても所望の線幅を高精度に表現することがで
きる。このように、2値画像において任意の描画角度に
対して任意の線幅の図形をほぼ理想的に近い画質で描画
することが可能となるという効果がある。
【図面の簡単な説明】
【図1】 本発明の図形描画装置の第1の実施の形態を
示すブロック図である。
【図2】 本発明の線分描画装置の第1の実施の形態に
おける基本的な線分描画動作の説明図である。
【図3】 本発明の線分描画装置の第1の実施の形態に
おける法線ベクトル生成までの動作の一例の説明図であ
る。
【図4】 本発明の線分描画装置の第1の実施の形態に
おける距離算出部の動作の一例の説明図である。
【図5】 本発明の線分描画装置の第1の実施の形態に
おける移動距離演算部の動作の一例を示すフローチャー
トである。
【図6】 本発明の線分描画装置の第1の実施の形態の
法線ベクトル変形判定部における法線ベクトルの変形の
可否の判定処理の一例を示すフローチャートである。
【図7】 本発明の線分描画装置の第1の実施の形態に
おける法線ベクトル生成から線分を描画してゆく動作過
程の一例の説明図である。
【図8】 本発明の線分描画装置の第1の実施の形態に
おける全描画方向の法線ベクトルの変形と画素抜け箇所
の説明図である。
【図9】 本発明の線分描画装置の第1の実施の形態に
おける具体的な動作で描画された線分の一例の説明図で
ある。
【図10】 本発明の図形描画装置の第2の実施の形態
を示すブロック図である。
【図11】 本発明の図形描画装置の第2の実施の形態
における描画手順の一例の説明図である。
【図12】 本発明の第2の実施の形態におけるセグメ
ントレングス算出部の動作の一例を示すフローチャート
である。
【図13】 本発明の第2の実施の形態におけるセグメ
ントレングス算出時の径に応じた半径計算の動作の一例
の説明図である。
【図14】 本発明の第2の実施の形態におけるセグメ
ントレングス算出時の径に応じた半径の計算の動作の一
例を示すフローチャートである。
【図15】 本発明の第2の実施の形態における半径に
基づく最大近似直線長の算出動作の一例を示すフローチ
ャートである。
【図16】 本発明の第2の実施の形態において円弧セ
グメント座標発生部で発生される画素の座標と円弧セグ
メントの一例の説明図である。
【図17】 本発明の第2の実施の形態における法線ベ
クトルの作成過程の説明図である。
【図18】 本発明の第2の実施の形態における法線ベ
クトルに基づくセグメントの描画過程の説明図である。
【図19】 本発明の図形描画装置の第2の実施の形態
における破線の描画の一例の説明図である。
【図20】 従来の線分描画方法の一例の説明図であ
る。
【図21】 図20に示した線分描画方法のうちの1つ
の方法の詳細説明図である。
【図22】 アンチエイリアシング処理の一例の説明図
である。
【図23】 法線ベクトルを用いて描画された線分の一
例の説明図である。
【符号の説明】
1…初期値設定部、2…基準線走査部、3…距離算出
部、4…法線ベクトル生成部、5…斜め走査判定部、6
…法線ベクトル変形判定部、7…法線ベクトル変形部、
8…画素抜け描画部、9…法線ベクトル描画部、10…
フレームメモリ、11…初期値設定部、12…円弧セグ
メント走査部、13…セグメント始点・終点格納部、1
4…直線座標発生部、15…法線ベクトル生成部、16
…円弧座標発生部、17…描画部、18…終了条件判定
部、19…フレームメモリ、20…法線ベクトル変形判
定部、21…法線ベクトル変形部、31…セグメントレ
ングス算出部、32…円弧セグメント座標発生部、33
…移動距離演算部、34…セグメント走査判定部、41
…画素抜け判定部、42…法線ベクトル描画部、43…
セグメント終了条件判定部。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 島田 利郎 神奈川県足柄上郡中井町境430 グリー ンテクなかい富士ゼロックス株式会社内 (72)発明者 植田 豊 神奈川県足柄上郡中井町境430 グリー ンテクなかい富士ゼロックス株式会社内 (56)参考文献 特開 平6−161417(JP,A) 特開 平4−117583(JP,A) 特開 平3−250270(JP,A) 特開 平2−66684(JP,A) 特開 昭63−234368(JP,A) 特開 昭62−90771(JP,A) 特開 平1−166177(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 11/20 G09G 5/36 CSDB(日本国特許庁)

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 入力された情報から描画する線分の始点
    および終点と該線分の線幅とを設定する初期値設定手段
    と、該初期値設定手段で設定された始点と終点とを結ぶ
    直線と平行な直線上の座標を発生する基準線走査手段
    と、該基準線走査手段で発生した座標と始点との間の距
    離を算出する距離算出手段と、該距離算出手段が算出し
    た距離と前記基準線走査手段が発生した座標とを基に始
    点と終点を結ぶ直線に直交しかつ前記初期値設定手段で
    設定された線分の線幅以上の長さを有する画素列を法線
    ベクトルとして生成する法線ベクトル生成手段と、前記
    基準線走査手段で発生した座標から斜め方向に座標が連
    続していることを判定する斜め走査判定手段と、該斜め
    走査判定手段が基準線上の斜め方向に連続する画素の座
    標が発生されたと判定した際に線分の線幅に対する法線
    ベクトルの長さの誤差がより小さくなるように前記法線
    ベクトルを変形して長さの調整を行なうか否かを判定す
    る法線ベクトル変形判定手段と、該法線ベクトル変形判
    定手段が法線ベクトルの長さの調整を行なうと判定した
    際に前記斜め走査判定手段が斜め方向に連続して発生さ
    れたと判定した座標に基づいて前記法線ベクトルの変形
    を行なう法線ベクトル変形手段と、前記斜め走査判定手
    段が基準線上の画素が斜め方向に連続していると判定し
    た際に生じる画素抜け箇所を前記法線ベクトルに基づい
    て特定しその箇所を描画する画素抜け描画手段と、前記
    法線ベクトル変形判定手段の判定結果に基づき前記法線
    ベクトル生成手段で生成された法線ベクトルまたは前記
    法線ベクトル変形手段で変形された法線ベクトルのいず
    れかを前記基準線走査手段で発生した座標ごとに描画す
    る法線ベクトル描画手段を備えていることを特徴とする
    図形描画装置。
  2. 【請求項2】 入力された情報から描画する円、円弧、
    楕円および楕円弧の大きさと線の太さを設定する初期値
    設定手段と、該初期値設定手段で設定した円、円弧、楕
    円および楕円弧の大きさと線の太さを基に円、円弧、楕
    円および楕円弧を直線で近似して描画しうる近似直線の
    線分長と等しい円弧長となる座標を順次生成する円弧セ
    グメント走査手段と、該円弧セグメント走査手段が生成
    した座標を円、円弧、楕円および楕円弧を近似する線分
    の始点と終点の座標として保持するセグメント始点・終
    点格納手段と、前記始点と終点間の円弧上の座標を生成
    する円弧座標発生手段と、前記始点と終点とを結ぶ直線
    上の座標を生成する直線座標発生手段と、該直線座標発
    生手段が生成した座標を基に前記始点と終点とを結ぶ直
    線に直交しかつ前記初期値設定手段で設定された線幅以
    上の長さを有する画素列を法線ベクトルとして生成する
    法線ベクトル生成手段と、前記円弧座標発生手段で発生
    した座標から斜め方向に座標が連続していることを判定
    する斜め走査判定手段と、該斜め走査判定手段が円弧上
    の斜め方向の画素の座標が発生されたと判定した際に線
    幅に対する法線ベクトルの長さの誤差がより小さくなる
    ように前記法線ベクトルを変形して長さの調整を行なう
    か否かを判定する法線ベクトル変形判定手段と、該法線
    ベクトル変形判定手段が法線ベクトルの長さの調整を行
    なうと判定した際に前記斜め走査判定手段が斜め方向に
    連続して発生されたと判定した座標に基づいて前記法線
    ベクトルの変形を行なう法線ベクトル変形手段と、前記
    斜め走査判定手段が円弧上の画素が斜め方向に連続して
    いると判定した際に生じる画素抜け箇所を前記法線ベク
    トルに基づいて特定しその箇所を描画する画素抜け描画
    手段と、前記法線ベクトル変形判定手段の判定結果に基
    づき前記法線ベクトル生成手段で生成された法線ベクト
    ルまたは前記法線ベクトル変形手段で変形された法線ベ
    クトルのいずれかを前記円弧座標発生手段で発生した座
    標ごとに描画する法線ベクトル描画手段を備えているこ
    とを特徴とする図形描画装置。
JP11590396A 1996-05-10 1996-05-10 図形描画装置 Expired - Fee Related JP3498478B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11590396A JP3498478B2 (ja) 1996-05-10 1996-05-10 図形描画装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11590396A JP3498478B2 (ja) 1996-05-10 1996-05-10 図形描画装置

Publications (2)

Publication Number Publication Date
JPH09305779A JPH09305779A (ja) 1997-11-28
JP3498478B2 true JP3498478B2 (ja) 2004-02-16

Family

ID=14674070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11590396A Expired - Fee Related JP3498478B2 (ja) 1996-05-10 1996-05-10 図形描画装置

Country Status (1)

Country Link
JP (1) JP3498478B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5127775B2 (ja) 2009-05-15 2013-01-23 株式会社リコー 情報処理装置、レーザ照射装置、制御システム、描画情報記憶装置

Also Published As

Publication number Publication date
JPH09305779A (ja) 1997-11-28

Similar Documents

Publication Publication Date Title
US4620287A (en) Method and apparatus for representation of a curve of uniform width
US5161035A (en) Digital image processing device for enlarging original image with high fidelity
EP0592770B1 (en) Method for filling of interior pixels within a polygon
JP3057935B2 (ja) 文字出力装置
JP3498478B2 (ja) 図形描画装置
US5754164A (en) Outline font expanding method and outline font expanding device
US5293472A (en) Method of generating lines and curves of user specified thicknesses on a raster device
JP3555316B2 (ja) 図形描画装置
JPH08194459A (ja) アウトライン文字描画装置
US5475809A (en) Method and apparatus for generating high-quality character pattern defined by edge lines
JPH0263854A (ja) 出力方法
JP3034140B2 (ja) 文字生成方法及びその装置
JP3224142B2 (ja) ヒンティング処理方法
JP3731221B2 (ja) 太線描画装置および太線描画方法
JP3338484B2 (ja) アウトラインフォント変形装置
JP3829908B2 (ja) 画像処理装置
JPH0668247A (ja) ディジタル画像データ変倍方法および装置
EP0605048B1 (en) Method of modifying the fatness of characters
JP3536894B2 (ja) 図形処理装置
JPH0785266A (ja) 画像回転装置
JP2780405B2 (ja) デジタル画像処理装置
JP2965021B2 (ja) 塗り込み処理方式、塗り込み処理方法および塗り込み処理プログラムを記録した記録媒体
JP2634906B2 (ja) 画像処理方法
JPH07262385A (ja) アウトラインデータ生成装置
KR19990013825A (ko) 패턴 생성 방법 및 장치와, 기록 매체

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071205

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081205

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees