JPH056439A - ベクトルデータ/イメージデータ変換方式 - Google Patents

ベクトルデータ/イメージデータ変換方式

Info

Publication number
JPH056439A
JPH056439A JP3110733A JP11073391A JPH056439A JP H056439 A JPH056439 A JP H056439A JP 3110733 A JP3110733 A JP 3110733A JP 11073391 A JP11073391 A JP 11073391A JP H056439 A JPH056439 A JP H056439A
Authority
JP
Japan
Prior art keywords
coordinate
ellipse
data
arc
coordinates
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
JP3110733A
Other languages
English (en)
Inventor
Norihiko Kuruma
憲彦 車
Hiroshi Ogura
博 小倉
Hideki Kobayashi
秀樹 小林
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
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 filed Critical Fuji Xerox Co Ltd
Priority to JP3110733A priority Critical patent/JPH056439A/ja
Publication of JPH056439A publication Critical patent/JPH056439A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目 的】太さを持った円、円弧およひ楕円弧を含む楕
円を表ベクトルデータを基に、その太さを忠実に表した
線のイメージデータを効率的に生成すること。 【構 成】太さのある、円、円弧、楕円、楕円弧などの
楕円を表す式によって表すことのできる曲線のベクトル
データに基づいて、前記楕円の少なくとも一部の輪郭線
の軌跡の座標を第1のテーブルに格納する第1のステッ
プと、第1のテーブルの内容に基づき前記楕円の軌跡の
Y座標(X座標)に対するX座標(Y座標)を第2のテ
ーブルに格納する第2のステップと、前記Y座標(X座
標)毎にX座標(Y座標)対の2点間を順次描画するこ
とにより、前記楕円の輪郭線内を塗り潰したイメージデ
ータを生成する第3のステップとを備えたものである。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機を用いてベクト
ルデータをイメージデータに変換する方式に関する。
【0002】
【従来の技術】ベクトルデータをイメージデータに変換
する際、線の太さをイメージデータに反映するようにす
る従来技術としては、次のような方法がある。 (a)中心線を描画し、その線を上下左右に平行移動さ
せて描画する方法(例えば、特開昭61-103193号公報、
特開昭61-180284号公報など参照)、(b)円、四角
形、L字形などの図形を中心線に沿って移動させて描画
する方法(例えば、特開昭60-151787号公報、特開昭61-
9688号公報、特開昭61-117621号公報など参照)、
(c)ベクトルデータに基づき太さのある線分の輪郭線
を描画し、その内部を塗り潰す方法(例えば、特開昭61
-60177号公報参照)。
【0003】
【発明が解決しようとする課題】しかし、これらの方法
には、次のような問題点がある。上記(a)の方法は、
線分の移動で描画を行うため、白抜けが発生するなど描
画後の図形の品質が悪くなり、また、複数回の描画が必
要であるので、処理効率も悪かった。さらに、白抜けを
防ぐようにするには、さらに処理が必要であり、処理効
率が一層悪くなっていた。また、上記(b)の方法は、
図形の品質は良好であるが、描画回数が非常に多くなる
ので、処理効率が悪いという問題があった。上記(c)
の方法は、輪郭線をイメージデータの形で生成するの
で、その内部を塗り潰す処理をするために領域判定が必
要となるが、この領域判定に時間を要し、全体として処
理効率が悪化するという問題点があった。本発明は、こ
れらの従来技術の有する問題点を解消し、太さを持った
円、円弧およひ楕円弧を含む楕円を表ベクトルデータを
基に、その太さを忠実に表した線のイメージデータを効
率的に生成することを目的とするものである。
【0004】
【課題を解決するための手段】本発明は、太さのある、
円、円弧およひ楕円弧を含む楕円を表すベクトルデータ
に基づいて、前記楕円の少なくとも一部の輪郭線の軌跡
の座標を第1のテーブルに格納する第1のステップと、
第1のテーブルの内容に基づき前記楕円の軌跡のY座標
(X座標)に対するX座標(Y座標)を第2のテーブル
に格納する第2のステップと、前記Y座標(X座標)毎
にX座標(Y座標)対の2点間を順次描画することによ
り、前記楕円の輪郭線内を塗り潰したイメージデータを
生成する第3のステップとを備えた、ベクトルデータを
イメージデータに変換する方式である。なお、「Y座標
(X座標)・・・X座標(Y座標)」の表現は「Y座標
・・・X座標」または「X座標・・・Y座標」であるこ
とを意味する。
【0005】
【作用】本発明は、太さのある円、円弧およひ楕円弧、
楕円などのように楕円を表す式を基に表現できる曲線
(以下、楕円という)を表すベクトルデータ、例えば中
心点の座標(x0,y0)、x軸の半径ra,y軸の半径
rb,楕円を描く曲線の太さ等のパラメータを持つ楕円
のベクトルデータを忠実にイメージデータに変換するた
めに、まず、その太さのある楕円等のイメージの輪郭線
の軌跡を生成し、第1のテーブルに格納する(ステップ
11,12)。楕円を太さのある線で描くために具体的
には、楕円の輪郭の外周の軌跡と内周の軌跡を生成し、
それぞれを第1のテーブルにセットする。次に、第1の
テーブルの内容に基づき前記楕円の軌跡のY座標(X座
標)に対応するX座標(Y座標)を第2のテーブルに格
納する(図1のステップ13)。そのX座標(Y座標)
は楕円輪郭線の内周上の点と外周上の点が対になって表
れ、それらの内周上の点と外周上の点のX座標は輪郭線
内部の塗り潰しのための始点および終点となる位置を表
している。
【0006】次に、その第2のテーブルのデータに基づ
いて、輪郭線の内部を塗り潰したイメージデータを生成
する(図1のステップ14)。具体的には、第2のテー
ブルから各Y座標(またはX座標)に対応するX座標
(またはY座標)を順次読み出して、イメージメモリ中
を走査しながら、上記内周上の点と外周上の点を対とす
るX座標(またはY座標)間の画素位置に黒画素を書き
込むことにより、輪郭線の内部を塗り潰したイメージ画
像を作成する。本発明の方式によれば、楕円の輪郭線を
生成して第1のテーブルに格納し、その第1のテーブル
の内容を基に第2のテーブルに各点の座標値をテーブル
の形式で輪郭線を表すデータを作成するので、そのテー
ブルにより塗り潰しの始点と終点の位置が決り、従っ
て、前記従来技術(c)のような輪郭線の内部か否かの
領域判定を必要とせず、処理が高速となる。また、本発
明の方式によれば、イメージデータの描画の始点と終点
の間を塗り潰すので、前記従来技術(a)のように白抜
けが生じることがなく、描画したイメージの品質を高い
ものとすることができ、また、前記従来技術(b)のよ
うに塗り潰しにおいて同一画素を重複して塗り潰しの処
理をすることがないので、描画が効率的であり処理が高
速となる。
【0007】
【実施例】
《第1の実施例》図1は、楕円のベクトルデータをイメ
ージデータに変換する本発明の実施例の手順の概略を示
すフローチャートであり、図2はその実施例の手順を実
行するための処理装置の構成の概略を示すブロック図で
ある。図2に示すように、本実施例の方式を実行する処
理装置(計算機)は、直線ベクトルデータをイメージデ
ータに変換するためのプログラムに基づいて変換処理を
実行するためのCPU21と、前記プログラムを記憶す
るプログラム記憶部22と、図形をベクトルデータで表
した処理すべきデータを記憶するベクトルデータ記憶部
23と、図形をイメージデータで表したデータを記憶す
るイメージデータ記憶部24と、プログラム記憶部22
から読み込んだプログラムや処理を行うのに必要なデー
タを記憶する内部メモリ25と、上記各要素間を接続す
る内部バス26から構成されている。楕円ベクトルデー
タをイメージデータに変換する処理を行うために、プロ
グラム記憶部22からその処理のためのプログラムが内
部メモリ25に読み込まれる。CPU21は、そのプロ
グラムに従ってベクトルデータからイメージデータへの
変換処理を実行する。
【0008】図1のフローチャートは実施例の変換処理
の概略を示すものである。楕円の輪郭線の外周および内
周を表す座標をデジタル微分解析によって求め、これを
楕円テーブルにセットする処理を行い(ステップ11,
12)、楕円テーブルにセットされているデータを読み
出して各Y座標毎に対応するX座標をX座標テーブルに
格納する処理を行い(ステップ13)、次にX座標テー
ブルから得られる座標を基にラスタデータをセットする
処理を行う(ステップ14)。以下、この変換処理を詳
細に説明する。
【0009】A)楕円の生成 楕円の輪郭線の外周および内周は図3に示すように、
(1)〜(8)の範囲に分割して描画する。範囲(1)
(4)(5)(8)と範囲(2)(3)(6)(7)と
は対称なので、1回の計算で、4つの点を生成できる。
楕円の方程式は、 x2/a2+y2/b2=1 となる。ここで、aはx軸の半径、bはy方向の半径で
ある。a=bのときが円である。これを変形すると、 y=b/a*((a2−x21/2) となる。X座標値=X(整数)の時のY座標値をyX
すると、実際には、yX−0.5≦Y≦yX+0.5となる
整数Yを求め、(X,Y)に点を描画する。図3の
(2)の範囲では、点(0,b)からX座標値をインク
リメントし、Y座標値を求めて行く。このときY座標値
は少しずつ減少するので、Y−yXが0.5以上になる
とYを1減らす処理になる。よって、 Y−yX−0.5=Y−b/a*((a2−X21/2)<0 となり、これを変形して、 a*(Y−0.5)+b*(a2−X21/2<0 4*a2*(Y2−Y−b2)+a2+4*b2*X2<0 e(X,Y)=4*a2*(Y2−Y−b2)+a2+4*b2*X2とおくと、 e(0,b)=a2*(1−4*b) …式(1) e(X+1,Y)−e(X,Y)=4*b2*(2*x+1) …式(2) e(X,Y)−e(X,Y−1)=8*a2*(Y−1) …式(3) まず、式(1)を用いて、点(0,b)のeを計算す
る。その後Xを1ずつ増やしてeを補正する。以上を、
傾きが1になるまでくりかえしながら(X,Y)および
範囲(3)(6)(7)の範囲に点を打って行く。同様
にxとy、aとbを交換して、範囲(1)の座標を求
め、対称な範囲(4)(5)(8)の点を打てば、全円
周を描画できる。
【0010】以上に説明した楕円の円周の軌跡の座標を
求めるためのデジタル微分解析(DDA)のアルゴリズ
ムは、以下に示すようなものを用いることができる。中
心点の座標を(x0,y0)、x軸の半径をra、y軸の
半径をrbとする。 (a)図2に示す楕円の(1)(4)(5)(8)の範
囲 ア.処理スピードを上げるため、以下の計算をしてお
く。 a2=ra*ra b2=rb*rb c1=4*a2 …式(2)より c1=8*b2 …式(3)より イ.x座標およびy座標の初期値 x座標=ra y座標=0 ウ.誤差:eの初期値 …式(1)より e=b2*(1−4*ra) エ.傾きが−1になるまで、以下の処理を繰り返す。 while(y座標*a2<=x座標*b2) (ア)以下の計算で求める座標に点を描画する。 (x0+x座標,y0+y座標) 図3の範囲(1) (x0−x座標,y0+y座標) 図3の範囲(4) (x0−x座標,y0−y座標) 図3の範囲(5) (x0+x座標,y0−y座標) 図3の範囲(8) (イ)誤差:eの計算 …式(2)より e=e+c1*(2*y座標+1) (ウ)y座標=y座標+1 (エ)誤差e:の補正 …式(3)より 誤差e:>0の時 x座標=x座標−1 e=e−(x座標*c2)
【0011】 (b) 図3の(2)(3)(6)(7)の範囲 ア.処理スピードを上げるため、以下の計算をしてお
く。 a2=ra*ra b2=rb*rb c1=4*b2 …式(2)より c1=8*a2 …式(3)より イ.x座標およびy座標の初期値 x座標=0 y座標=rb ウ.誤差:eの初期値 …式(1)より e=a2*(1−4*rb) エ.傾きが1になるまで、以下の処理を繰り返す。 while(x座標*b2<=y座標*a2) (ア)以下の計算で求める座標に点を描画する。 (x0+x座標,y0+y座標) 図3の範囲(2) (x0−x座標,y0+y座標) 図3の範囲(3) (x0−x座標,y0−y座標) 図3の範囲(6) (x0+x座標,y0−y座標) 図3の範囲(7) (イ)誤差:eの計算 …式(2)より e=e+c1*(2*x座標+1) (ウ)x座標=x座標+1 (エ)誤差e:の補正 …式(3)より 誤差e:>0の時 e=e−(y座標*c2) y座標=y座標−1
【0012】B)楕円テーブルのセット 実際に輪郭の線に太さのある楕円は、図4のように表す
ことができる。この楕円は、中心座標(Xc,Yc)、X
方向半径ra、Y方向半径rbで与えられる。楕円テーブ
ルは、前述のDDAのアルゴリズムによって求める中心
座標からの変位値を一時的にストアするためのテーブル
である。楕円のDDAの前記アルゴリズムにより求め
た、図3,図4の(1)(2)の範囲の中心座標からの
変位値をセットする。
【0013】 struct fxepos /* 楕円座標値 */ { short sx; /* X変位 */ short sy; /* Y変位 */ short sflg; /* 斜行フラグ */ } struct fxelps { short sdctr1; /* データ数1 */ short sdctr2; /* データ数2 */ double dlen; /* 長さ */ fxepos dxepos[5000]; /* 変位 */ } dxelps[2]; /* 楕円テーブル */ 楕円のDDAアルゴリズムの性質上、全ての変位値を楕
円の軌跡通りに、連続的にセットすることはできない。
したがって、DDAアルゴリズムから直接セットを行う
ステップ、さらに連続性を持たせるステップの2段階で
楕円テーブルのセットを行う。
【0014】[楕円テーブルセットの第1ステップ]こ
のステップにおけるテーブルの項目とそれに設定する内
容は次に示すとおりである。 ―――――――――――――――――――――――――――――――――― 項目 : 処理 ―――――――――――――――――――――――――――――――――― データ数1 : 図4の範囲(1)の変位値の数 データ数2 : 図4の範囲(2)の変位値の数 長さ : 楕円の1/4の周の長さ 斜行フラグ=0Nの数[sxyctr]をカウントしておき、 sdctr1 + sdctr2 - 1 + sxyctr*(sqrt(2.0) - 1.0) 変位.X変位 : 中心座標からのX座標変位値・Y座標変位値 変位.Y変位 範囲(1)は、dxepos[0]〜dxepos[sdctr1-1]にセット 範囲(2)は、dxepos[4999]〜dxepos[4999-sdctr2]にセ ット 変位.斜行フラグ:範囲(1)は、直前の座標から斜めに移動したときON 範囲(2)は、直後の座標が斜めに移動したときON ――――――――――――――――――――――――――――――――――
【0015】楕円テーブルは図5に示すような構成を有
する。すなわち、DDAで求めた中心からのX座標変位
値sx、Y座標値syおよび斜行フラグsflgを対応
させてセットする5000の座標格納位置dxepos[]から
なる領域を2組有し、図5の左側の領域が楕円の外周の
格納を行い、右側の領域が内周の格納をするためのもの
である。そして範囲(1)の座標変位値はdxepos[0]か
らdxepos[sdctr1-1]までの格納位置に順にセットされ、
範囲(2)の座標変位値はdxepos[4999]から遡ってdxep
os[4999-sdctr2]までの格納位置に順にセットされる。
また、座標変位値のデータ数を格納する領域があり、範
囲(1)のデータ数は格納位置sdctr1にセットされ、範
囲(2)のデータ数は格納位置sdctr2にセットされる。
なお、斜行フラグsflgは破線の場合に用いるものであ
る。
【0016】[楕円テーブルセットの第2ステップ]第
1ステップでセットした範囲(2)の座標変位値を範囲
(1)の次に続けるように並び換える。そのために次の
ような編集を行う。 項目 処理 ―――――――――――――――――――――――――――――――――― 変位.X変位 : 範囲(1)は第1ステップでしたセットのまま。 変位.Y変位 範囲(2)は、dxepos[sdctr1]〜dxepos[sdctr1+sdct 変位.斜行フラグ r2-1]にセットしなおす。 データ数1 : 範囲(1)の座標変位値の数+範囲(2)の座標変位 値の数(sdctr1+sdctr2) データ数2 : 0 ―――――――――――――――――――――――――――――――――― 図6は並び換えの様子を示すもので、図5で範囲(1)
と範囲(2)の間に空きの領域があったのが、この第2
ステップの編集により範囲(1)と(2)の変位値のデ
ータが連続するようになる。
【0017】C)X座標テーブルのセット処理 X座標テーブルは、以上のようにしてDDAにより求め
た楕円の輪郭の外周および内周の座標データ(すなわち
楕円テーブルにセットされているデータ)を、図7に示
すにように、各Y座標に対する開始X座標と終了X座標
の形式にして格納するものである。図7に示すX座標テ
ーブルは、各Y座標[0]〜[yn−1]に対応してX
座標セット数と複数のX座標値がセットできるよう構成
されており、図8は図7に対応するイメージデータの例
を示す図である。なお、楕円テーブルには、前述の例で
は全象限の範囲(1)〜(8)のうち第1象限の範囲
(1)と(2)のデータのみが格納されており、しかも
それは中心座標位置(Xc,Yc)からの変位座標値デー
タであるので、楕円テーブルに基づいてX座標テーブル
を作成する際には、中心座標値を加算することによって
絶対座標値とするとともに、範囲(3)〜(8)につい
ては、範囲(1)および(2)のデータからそれとの対
称性を利用して変換して絶対座標値を求め、X座標テー
ブルに格納する。そのためには、次の座標値の計算式を
用いればよい。なお、計算式は、外周:m=0、内周:
m=1とし、n=ids[m]からn=ide[m]ま
で繰り返す。
【0018】 ―――――――――――――――――――――――――――――――― 外周 内周 セット位置 セット位置 計算式 ―――――――――――――――――――――――――――――――― 第1象限:終了×2 ;開始×2 ;x=xc+dxelps[m].dxepos[n].sx y=yc+dxelps[m].dxepos[n].sy 第2象限:開始×1 ;終了×1 ;x=xc-dxelps[m].dxepos[n].sx y=yc+dxelps[m].dxepos[n].sy 第3象限:開始×1 ;終了×1 ;x=xc-dxelps[m].dxepos[n].sx y=yc-dxelps[m].dxepos[n].sy 第4象限:終了×2 ;開始×2 ;x=xc+dxelps[m].dxepos[n].sx y=yc-dxelps[m].dxepos[n].sy ――――――――――――――――――――――――――――――――
【0019】D)ラスターデータのセット処理 ラスタデータは、整数(4Byte=32bit)の1次元の配列
で持ち、これを必要なScanLine(X座標方向)の大きさ
(WordPerLine)で分割してY座標を決定する。したが
って、ラスタデータとイメージデータの関係は図9のよ
うにあらわすことができる。なお、同図においてwpl=W
ordPerLineである。図10は、X座標テーブルより得ら
れる1組の開始x座標、終了x座標によるラスターデー
タセット処理の処理フローを示す図である。イメージデ
ータは内部メモリ25上に生成する。内部メモリ25に
対するアクセスは、速度を向上させるために、1ビット
ずつではなく32ビット単位すなわち1ワード単位で行
う。
【0020】(ステップ101)開始点のX座標である
開始xを含む開始ワード位置のアドレスを開始ワード位
置レジスタ(以下、「開始word」という)に設定する。
開始wordに設定する開始ワード位置のアドレスは(開始
x+31)/32により求める。終了点のX座標である終了x
を含む終了ワード位置のアドレスを終了ワード位置レジ
スタ(以下、「終了word」という)に設定する。終了wo
rdに設定する終了ワード位置のアドレスは(終了x+31)/
32により求める。開始ワード内の開始ビット位置を開始
ビット位置レジスタ(「開始bit」という)に設定する。
開始bitに設定する開始ビット位置は、開始word*32−開
始xにより求める。終了ワード内の終了ビット位置を終
了ビット位置レジスタ(「終了bit」という)に設定す
る。終了bitに設定する終了ビット位置は、終了word*32
−終了xにより求める。
【0021】(ステップ102)図12に示すように、
(FFFFFFFF)Hのフルデータを開始bitに設定されたビット
数分右シフトして得たデータを開始ワードのテータとし
て開始ワードレジスタ(以下、「開始データ」という)
に設定する。また、(FFFFFFFF)Hのフルデータを終了bit
に設定されたビット分左シフトして得たデータを終了ワ
ードのテータすなわち終了データとして終了ワードレジ
スタ(以下、「終了データ」という)に設定する。 (ステップ103)内部メモリのワードをアドレスする
ためのアドレス変数iを保持するカウンタに開始wordに
設定されている開始ワード位置を設定する。 (ステップ104)終了ワードを内部メモリに書き込み
を完了したか否かをi≦終了wordにより判定する。 i≦終了wordであれば終了ワードの書き込みが終ってい
ないので、次のステップに進み、i>終了wordであれば
終了ワードの書き込みが終っているので、前記入力した
Y座標値yの行の描画を終了する。
【0021】(ステップ106〜110) (a) 開始データの書き込み ステップ107の判定でi=開始wordであったとき、ア
クセスするワード位置は開始ワード位置であるので、図
13に示すように、レジスタ「開始データ」に記憶され
ている開始データをレジスタ「セットデータ」に設定す
る(ステップ108)。そしてそのワード位置が終了ワ
ード位置を兼ねたものでない限り、レジスタ「開始デー
タ」に記憶されている開始データをのindexに設定
されているアドレスの内部メモリのラスタデータ領域に
記憶する(ステップ111)。その記憶の際、既に変換
されている他のイメージデータを変化させないように、
内部メモリの同一ワードを読み出して、「セットデー
タ」の内容との論理和演算を行って書き込みを行う。
【0022】(b) フルデータの書き込み 図14に示すように、フルデータ(FFFFFFFF)Hをレジス
タ「セットデータ」に設定し(ステップ106)、アク
セスするワード位置が開始ワード位置でなく(ステップ
107)、かつ終了ワード位置でもない(ステップ10
9)と判定されたときは、「セットデータ」に設定され
ているフルデータをラスタデータ領域のindexで指
定されるアドレスに書き込む(ステップ111)。
【0023】(c) 終了データの書き込み アクセスするワード位置が終了ワード位置であると判定
されたとき(ステップ109)、レジスタ「セットデー
タ」の内容とレジスタ「終了データ」の内容である終了
データとの論理積演算を行い、レジスタ「セットデー
タ」に設定し(ステップ110)、「セットデータ」に
設定されている内容を内部メモリのラスタデータ領域の
indexで指定されるアドレスに書き込む(ステップ
111)。ステップ110で論理積演算を行うのは、i=
開始word=終了wordであるとき、つまり、1つのワード
内に開始ビット位置と終了ビット位置が含まれていると
きに、開始ビット位置と終了ビット位置の区間のみに黒
画素データが書き込まれるようにするためである。
【0024】(ステップ112、ステップ105)1ワ
ードの書き込みが終ったら、次のワードの処理のため
に、変数iを1だけ増加する。また、ラスタデータ領域
に次のワードを設定するためのアドレスを指定するため
にindexの内容を1だけ増加する。本発明の方式によれ
ば、楕円の輪郭線を生成して楕円テーブルに格納し、そ
の楕円テーブルの内容を基にX座標テーブルに各Y座標
に対応するX座標値をテーブルの形式で輪郭線外周と内
周を表すデータを作成するので、そのテーブルにより塗
り潰しの始点と終点の位置が決り、従って、前記従来技
術(c)のような輪郭線の内部か否かの領域判定を必要
とせず、処理が高速となる。また、楕円の輪郭線の生成
は、楕円の一つの象限のみ生成して楕円テーブルに格納
しておけば、楕円全体について描画の始点と終点のすべ
てのデータを得ることができるので、楕円の輪郭の生成
のデータ量が減少し、処理を一層高速化することができ
る。また、本第1の実施例によれば、イメージデータの
描画の始点と終点の間を塗り潰すので、前記従来技術
(a)のように白抜けが生じることがなく、描画したイ
メージの品質を高いものとすることができ、また、前記
従来技術(b)のように塗り潰しにおいて同一画素を重
複して塗り潰しの処理をすることがないので、描画が効
率的であり処理が高速となる。
【0025】《第2の実施例》図16は、楕円弧(ar
c)のベクトルデータをイメージデータに変換する本発
明の実施例の手順の概略を示すフローチャートである。
まず、楕円弧のデータを弧テーブル(arcテーブル)
にセットする(ステップ161)。次に楕円弧を含む楕
円の輪郭線の外周および内周を表す座標をデジタル微分
解析によって求め、これを楕円テーブルにセットする処
理を行い(ステップ162,163)、楕円テーブルに
セットされているデータを読み出して各Y座標毎に対応
するX座標をX座標テーブルに格納する処理を行い(ス
テップステップ164)、次にX座標テーブルから得ら
れる座標を基にラスタデータをセットする処理を行う
(ステップ165)。以下、この変換処理を詳細に説明
する。楕円弧は、図17に示すように、中心座標(x
0,y0)、X軸半径ra、Y軸方向半径rb、始点角度de
g1、中心角度deg2で与えられる。なお、座標変換処理に
より、-360 < 始点角度 < 360、中心角度 >= 0である。
【0026】A)弧テーブルのセット 弧(arc)は、各象限の楕円弧を第1象限に写像した
場合の始角、終角をセットするものである。これは、楕
円のDDAでは、第1象限の中心座標からの変位が求め
られることを利用するためである。
【0027】a.弧テーブルのデータ構造は次のように
記述することができる。 struct fxarc /* ARCテーブル */ { short sarcctr; /* 象限数 */ struct fxsrci /* arc情報 */ { short squad; /* 象限 */ short sindex[2]; /* [0]:開始index,[1]:終了index */ double rdeg[2]; /* [0]:始角,[1]:終角 */ } dxarci[5]; } dxarc;
【0028】b.セット方法 (a)始点P1と終点P2の象限:sg1,sg2および楕円弧が存
在する象限:sarcctrを得る。象限は、第1象限を1と
し、時計回りに+1、反時計回りに−1した数値であ
る。90度の境界は、始点では次の象限とし、終点では
前の象限とする。なお、図18は始点角度、終点角度と
始角、終角の関係を示す図である。同図に示すように
(1)〜(6)の場合に分けることがきる。 ア.終点角度の算出 wdeg2 = deg1 + deg2 イ.始点象限の算出 始点角度が0以上の時(deg1>=0)、sg1 = (deg1 /90)
+ 1、 それ以外の時(deg1 < 0)、sg1 = (deg1 + 1)/ 90 ウ.終点象限の算出 終点角度がプラスの時(wdeg2>0)、sg2 = (wdeg2 - 1)
/ 90 +1 それ以外の時(wdeg2 <= 0)、sg2 = (wdeg2/ 90) エ.象限数の算出 dxarc.sarcctr = abs(sg2 - sg1) + 1 ただし、absは絶対値を表す
【0029】(b)各象限毎に第1象限に写像した場合
の始角、終角をセットする。偶数象限では、終角よりも
始角の方が大きくなり、弧の進行方向は、反時計まわり
となる。その手順は次のとおりである。 ア.弧テーブルのインデックス:indexを0とする。 イ.始点角度のオフセット:deg1offを求める。 始点角度≧0の時(図18の(1)(3)の場合)、 deg1off = mod(deg1/90) 始点角度<0で、90度境界を含む時(図18の(2)
(4))、 deg1off = 0 始点角度<0で、90度境界を含まない時(図18の
(2)(4))、 deg1off = 90 + mod(wdeg2/90) ウ.終点角度のオフセット:deg2offを求める。 終点角度>0で、90度境界を含む時(図18の(1)
(3))、 deg2off = 90 終点角度>0で、90度境界を含まない時(図18の
(1)(3))、 deg2off = mod(wdeg2/90) 終点角度≦0の時(図18の(2)(4))、 deg2off = 90 + mod(wdeg2/90)
【0030】エ.i=sg1 から i=sg2 まで、iをインク
リメントしながら、以下の処理を繰り返す。 (ア) 弧テーブル、楕円弧情報[index]、象限に現在の象
限:iをセットする。 dxarc.dxarci[index].squad = i (イ) 弧テーブル、楕円弧情報[index]、始角と終角を次
のようにセットする。 [a].始角(dxarc.dxarci[index].sdeg[0]) a) i=sg1、i=偶数の時 (図18の(1)(2)) 始角= 90 - deg1off b) i=sg1、i≠偶数の時 (図18の(3)(4)) 始角= deg1off c) i≠sg1、i=偶数の時 (図18の(5)) 始角=90 d) i≠sg1、i≠偶数の時 (図18の(6)) 始角=0 [b].終角(dxarc.dxarci[index].sdeg[1]) a) i=sg2、i=偶数の時 (図18の(1)(2)) 終角= 90 - deg2off b) i=sg2、i≠偶数の時 (図18の(3)(4)) 終角= deg2off c) i≠sg2、i=偶数の時 (図18の(5)) 終角=0 d) i≠sg2、i≠偶数の時 (図18の(6)) 終角=90 (ウ) 弧テーブルのインデックス:index をインクリメン
トする。 (c) 開始index、終了indexのセット 各象限毎に、始角、終角に対応する楕円テーブルのin
dexをサーチし、セットする。従って、楕円テーブル
のセット後、処理する。
【0031】B)楕円テーブルのセット a.DDA開始角度、DDA終了角度の算出 セットされた弧テーブルより、1/4円で必要となる部
分のDDA開始角度、DDA終了角度を求める。DDA
開始角度は、弧テーブルにセットされている始角、終角
の中の最小値、DDA終了角度は、最大値である。以
後、DDA開始角度:ddadeg1、DDA終了角度:ddadeg2
とする。 b.楕円テーブルのセット 線幅が1の場合は、外周のみを、線幅が2以上の場合
は、外周と内周を楕円テーブルにセットする。楕円弧の
場合は、1/4円分すべてを楕円テーブルにセットする
のではなく、DDA開始角度、DDA終了角度により、
1/4円で必要となる部分のみをDDAによりセットす
る。
【0032】C)弧テーブルの開始index、終了indexの
セット 弧テーブルにセット済みの始角、終角により、各象限毎
に、始各、終各に対応する楕円テーブルのindexをサー
チし、セットする。即ち、 a.弧テーブルループ i=0 から i=(dxarc.sarcctr - 1)まで、i をインクリメ
ントしながら、以下の処理を繰り返す。 (a) 開始index(dxarc.dxarci[i].sindex[0])のセットを
下表に従い行う。 ――――――――――――――――――――――――――――――――― 始角の値 開始indexへのセット値 ――――――――――――――――――――――――――――――――― DDA開始角度 0 ――――――――――――――――――――――――――――――――― DDA終了角度 楕円テーブルの外周のデータ数−1 (dxelps[0].sdctrl - 1) ――――――――――――――――――――――――――――――――― 上記以外 角度1=tan(始角) 楕円テーブルのサーチ → index 開始index = index ――――――――――――――――――――――――――――――――― (b) 終了index(dxarc.dxarci[i].sindex[1])のセットを下表に従い行う。 ――――――――――――――――――――――――――――――――― 終角の値 終了indexへのセット値 ――――――――――――――――――――――――――――――――― DDA開始角度 0 ――――――――――――――――――――――――――――――――― DDA終了角度 楕円テーブルの外周のデータ数−1 (dxelps[0].sdctrl - 1) ――――――――――――――――――――――――――――――――― 上記以外 角度1=tan(終角) 楕円テーブルのサーチ → index 終了index = index ―――――――――――――――――――――――――――――――――
【0033】b.楕円テーブルのサーチ (a) index=0 (b) 楕円テーブルのループ j=1 から j=(dxelps[0].sdctr1 - 2)まで、jをインクリ
メントしながら、以下の処理を繰り返す。ただし、inde
x≠0 になったらループ終了。 ア.楕円テーブルの座標値の中心からの角度2を求め
る。 角度2= dxelps[0].dexpos[j].sy / dxelps[0].dxepos
[j].sx イ.角度1≧角度2のとき index = j
【0034】D)楕円弧パターンの描画 楕円テーブルの内容と中心座標により、外周と内周との
軌跡の座標値を求め、X座標テーブルにセットし、画集
と内周の間の塗り潰し処理を行う。ただし、楕円の場合
と異なり、弧テーブルにより、各象限毎に描画を行う。
したがって、各象限の終点、始点では、直線の生成が必
要である。即ち、楕円弧パターンの描画は、楕円テーブ
ルとそれに対する楕円弧開始index、楕円弧終了indexに
より、円弧の部分と直線部分をX座標テーブルにセット
し、次に、X座標テーブルにより、ラスターデータを更
新する。X座標テーブルには、開始x、終了xの2つの
座標をセットする。
【0035】a.弧の部分のX座標テーブルセット 楕円テーブルにより、弧の部分の座標値を算出し、下表
にしたがってX座標テーブルにセットする。弧の位置
は、弧テーブル・弧情報[弧インデックス]・象限によ
り求める。 ア.弧の位置 (ア) 弧テーブル、弧情報[弧インデックス]、象限≧0
のとき 弧の位置 ← mod(弧テーブル・弧情報[弧インデック
ス]・象限/4) (イ) else 弧の位置 ← 4 + mod(弧テーブル・弧情報[弧インデッ
クス]・象限/4) イ.X座標テーブルセット 楕円テーブルより、弧の部分の座標値を算出し、下表に
したがって、X座標テーブルにセットする。なお、計算
式は、外周:m=0、内周:m=1 とし、n=ids[m]からn=ide
[m]まで繰り返す。ただし、ids[m]は開始インデック
ス、ide[m]は終了インデックスとする。 ――――――――――――――――――――――――――――――――― 外周セ 内周セ 弧の位置 ット位置 ット位置 ;計算式 ―――――――――――――――――――――――――――――――― 1 :終了x ;開始x ;x=xc+dxelps[m].dxepos[n].sx y=yc+dxelps[m].dxepos[n].sy 2 :開始x ;終了x ;x=xc-dxelps[m].dxepos[n].sx y=yc+dxelps[m].dxepos[n].sy 3 :開始x ;終了x ;x=xc-dxelps[m].dxepos[n].sx y=yc-dxelps[m].dxepos[n].sy 0 :終了x ;開始x ;x=xc+dxelps[m].dxepos[n].sx y=yc-dxelps[m].dxepos[n].sy ―――――――――――――――――――――――――――――――――
【0036】b.直線部分のX座標テーブルセット 外周と内周の弧開始indexを結ぶ直線と、弧終了indexを
結ぶ直線の始点・終点をそれぞれ次に示す計算式により
求め、直線生成(DDA)により、その軌跡をX座標テ
ーブルのセット位置にセットする。 弧の位置 開始index 開始indexの座標値の計算式 ―――――――――――――――――――――――――――――― 1 終了x x1 = xc+dxelps[0].dxepos[ids[0]].sx y1 = yc+dxelps[0].dxepos[ids[0]].sy x2 = xc+dxelps[1].dxepos[ids[1]].sx y2 = yc+dxelps[1].dxepos[ids[1]].sy ―――――――――――――――――――――――――――――― 2 開始x x1 = xc-dxelps[0].dxepos[ids[0]].sx y1 = yc+dxelps[0].dxepos[ids[0]].sy x2 = xc-dxelps[1].dxepos[ids[1]].sx y2 = yc+dxelps[1].dxepos[ids[1]].sy ―――――――――――――――――――――――――――――― 3 開始x x1 = xc-dxelps[0].dxepos[ids[0]].sx y1 = yc-dxelps[0].dxepos[ids[0]].sy x2 = xc-dxelps[1].dxepos[ids[1]].sx y2 = yc-dxelps[1].dxepos[ids[1]].sy ―――――――――――――――――――――――――――――― 0 終了x x1 = xc+dxelps[0].dxepos[ids[0]].sx y1 = yc-dxelps[0].dxepos[ids[0]].sy x2 = xc+dxelps[1].dxepos[ids[1]].sx y2 = yc-dxelps[1].dxepos[ids[1]].sy ―――――――――――――――――――――――――――――― 弧の位置 終了index 終了開始indexの座標値の計算式 ―――――――――――――――――――――――――――――― 1 開始x x1 = xc+dxelps[0].dxepos[ide[0]].sx y1 = yc+dxelps[0].dxepos[ide[0]].sy x2 = xc+dxelps[1].dxepos[ide[1]].sx y2 = yc+dxelps[1].dxepos[ide[1]].sy ―――――――――――――――――――――――――――――― 2 終了x x1 = xc-dxelps[0].dxepos[ide[0]].sx y1 = yc+dxelps[0].dxepos[ide[0]].sy x2 = xc-dxelps[1].dxepos[ide[1]].sx y2 = yc+dxelps[1].dxepos[ide[1]].sy ―――――――――――――――――――――――――――――― 3 終了x x1 = xc-dxelps[0].dxepos[ide[0]].sx y1 = yc-dxelps[0].dxepos[ide[0]].sy x2 = xc-dxelps[1].dxepos[ide[1]].sx y2 = yc-dxelps[1].dxepos[ide[1]].sy ―――――――――――――――――――――――――――――― 0 開始x x1 = xc+dxelps[0].dxepos[ide[0]].sx y1 = yc-dxelps[0].dxepos[ide[0]].sy x2 = xc+dxelps[1].dxepos[ide[1]].sx y2 = yc-dxelps[1].dxepos[ide[1]].sy ―――――――――――――――――――――――――――――― c.ラスターデータのセット処理 以上でセットされたx座標テーブルにより、ラスターデ
ータを更新する。このラスターデータのセット処理は、
第1の実施例において、図9により説明したところと同
じであり、ここでは説明を省略する。以上に詳述したよ
うに、本第2の実施例によれば、第1の実施例と同様に
従来技術の問題点を解決できるものである。また、弧テ
ーブルには第1象限に写像した場合の始角、終角をセッ
トし、楕円のDDAでは第1象限のデータのみを生成す
ればよいように構成し、データ処理量を低減することが
できるので、処理速度が一層高速となる。
【0037】
【発明の効果】本発明の方法によれば、楕円の輪郭線を
構成する各点の座標値を格納するテーブルの形式で輪郭
線を表すデータを作成するので、そのテーブルにより塗
り潰しの始点と終点の位置が決り、従って、前記従来技
術(c)のような輪郭線の内部か否かの領域判定を必要
とせず、処理が高速となる。また、本発明の方法によれ
ば、イメージデータの描画の始点と終点の間を塗り潰す
ので、前記従来技術(a)のように白抜けが生じること
がなく、描画したイメージの品質を高いものとすること
ができ、また、前記従来技術(b)のように塗り潰しに
おいて同一画素を重複して塗り潰しの処理をすることが
ないので、描画が効率的であり処理が高速となる。
【図面の簡単な説明】
【図1】 本発明による直線ベクトルデータを直線のイ
メージデータに変換する実施例の手順の概略を示すフロ
ーチャートである。
【図2】 本発明の方法を実行するための装置の構成を
示すブロック図である。
【図3】 楕円を分割して描画する場合の分割の方法を
説明するための図である。
【図4】 太さのある楕円の座標を示す図である。
【図5】 楕円テーブルの一例を示す図で、楕円テーブ
ルをセットする第1のステップを説明するための図であ
る。
【図6】 図5の楕円テーブルをセットする第2のステ
ップを説明するための図である。
【図7】 X座標テーブルの一例を示す図である。
【図8】 X座標テーブルによって表されるイメージデ
ータの一例を示す図である。
【図9】 ラスタデータの生成を説明するための図であ
る。
【図10】 ラスタデータをセットするための処理を示
すフロー図である。
【図11】 ラスターデータセット処理を説明するため
の図で、あるY座標に対応するX座標の開始xと終了x
の間のデータ単位(32ビット)の境界の例を示す図で
ある。
【図12】 開始データおよび終了データの作成過程を
示す図である。
【図13】 図11で示す境界で分割したときの、開始
wordの設定を示す図である。
【図14】 開始wordと終了wordの中間の領域のデータ
の設定を示す図である。
【図15】 終了wordの設定を示す図である。
【図16】 楕円弧を生成する第2の実施例の手順を示
すブロック図である。
【図17】 楕円弧を説明するための図である。
【図18】 楕円弧における始点角度・終点角度と始角
・終角との関係を説明するための図である。
【図19】 弧パターンの描画を説明するための図であ
る。
【符号の説明】
21…CPU、22…プログラム記憶部、 23…ベク
トルデータ記憶部、24…イメージデータ記憶部、25
…内部メモリ、26…内部バス。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小林 秀樹 神奈川県川崎市高津区坂戸100−1 KS P/R&Dビジネスパークビル 富士ゼロ ツクス株式会社内

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 太さのある、円、円弧およひ楕円弧を含
    む楕円を表すベクトルデータに基づいて、前記楕円の少
    なくとも一部の輪郭線の軌跡の座標を第1のテーブルに
    格納する第1のステップと、第1のテーブルの内容に基
    づき前記楕円の軌跡のY座標(X座標)に対するX座標
    (Y座標)を第2のテーブルに格納する第2のステップ
    と、前記Y座標(X座標)毎にX座標(Y座標)対の2
    点間を順次描画することにより、前記楕円の輪郭線内を
    塗り潰したイメージデータを生成する第3のステップと
    を具備することを特徴とするベクトルデータ/イメージ
    データ変換方式。
JP3110733A 1991-04-17 1991-04-17 ベクトルデータ/イメージデータ変換方式 Pending JPH056439A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3110733A JPH056439A (ja) 1991-04-17 1991-04-17 ベクトルデータ/イメージデータ変換方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3110733A JPH056439A (ja) 1991-04-17 1991-04-17 ベクトルデータ/イメージデータ変換方式

Publications (1)

Publication Number Publication Date
JPH056439A true JPH056439A (ja) 1993-01-14

Family

ID=14543136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3110733A Pending JPH056439A (ja) 1991-04-17 1991-04-17 ベクトルデータ/イメージデータ変換方式

Country Status (1)

Country Link
JP (1) JPH056439A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732297A (en) * 1994-07-07 1998-03-24 Olympus Optical Co., Ltd. Camera
JP2009245334A (ja) * 2008-03-31 2009-10-22 Brother Ind Ltd 画像生成装置および印刷装置
JP2009245343A (ja) * 2008-03-31 2009-10-22 Brother Ind Ltd 画像生成装置および印刷装置
JP2017041118A (ja) * 2015-08-20 2017-02-23 大日本印刷株式会社 パターン編集プログラム、ショットデータ作成プログラム、パターン編集装置、ショットデータ作成装置、パターン編集方法
CN111429549A (zh) * 2020-03-02 2020-07-17 北京梧桐车联科技有限责任公司 路线图像的生成方法、装置及存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732297A (en) * 1994-07-07 1998-03-24 Olympus Optical Co., Ltd. Camera
JP2009245334A (ja) * 2008-03-31 2009-10-22 Brother Ind Ltd 画像生成装置および印刷装置
JP2009245343A (ja) * 2008-03-31 2009-10-22 Brother Ind Ltd 画像生成装置および印刷装置
JP4561858B2 (ja) * 2008-03-31 2010-10-13 ブラザー工業株式会社 画像生成装置および印刷装置
JP4572947B2 (ja) * 2008-03-31 2010-11-04 ブラザー工業株式会社 画像生成装置および印刷装置
US8300272B2 (en) 2008-03-31 2012-10-30 Brother Kogyo Kabushiki Kaisha Image generating device, image generating method and printing device
US8384951B2 (en) 2008-03-31 2013-02-26 Brother Kogyo Kabushiki Kaisha Image generating devices and printing devices that generate gradations using symmetry and methods for generating gradations using symmetry
JP2017041118A (ja) * 2015-08-20 2017-02-23 大日本印刷株式会社 パターン編集プログラム、ショットデータ作成プログラム、パターン編集装置、ショットデータ作成装置、パターン編集方法
CN111429549A (zh) * 2020-03-02 2020-07-17 北京梧桐车联科技有限责任公司 路线图像的生成方法、装置及存储介质

Similar Documents

Publication Publication Date Title
JP2541539B2 (ja) 図形処理装置
US4972330A (en) Clipping process and processor
JP3238580B2 (ja) 太め細め文字生成装置
JPH056439A (ja) ベクトルデータ/イメージデータ変換方式
JP3333578B2 (ja) 面積算出装置
JPH02270019A (ja) 高品質文字パターン発生方式
JP3034140B2 (ja) 文字生成方法及びその装置
JP3224138B2 (ja) 漢字フォント生成方式
JP2009070183A (ja) 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体
JPH06274149A (ja) アウトラインフォントの幅変更処理方法および装置
JP2630843B2 (ja) 直線描画方法及び装置
JP3305395B2 (ja) 図形分割装置
JPH02266480A (ja) 高品質文字パターン発生方式
JPH0785266A (ja) 画像回転装置
JP2606176B2 (ja) 図形処理装置
JP2857269B2 (ja) 図形描画装置
JP3496381B2 (ja) 線分描画装置
JP2802646B2 (ja) ベクトルフオントによる文字パターンの変倍処理方法
JP2954434B2 (ja) 画像処理方法及びその装置
JPH08279038A (ja) 太線描画装置
JPH02282871A (ja) 描画装置
JPS60179793A (ja) 図形描画装置
JP2003168122A (ja) 図形処理装置および点群位置判定方法
JP2857260B2 (ja) 矩形領域の判定方法
JPH02238581A (ja) 図形描画における閉領域面塗り処理方式