JP3060761B2 - 描画装置 - Google Patents
描画装置Info
- Publication number
- JP3060761B2 JP3060761B2 JP34349792A JP34349792A JP3060761B2 JP 3060761 B2 JP3060761 B2 JP 3060761B2 JP 34349792 A JP34349792 A JP 34349792A JP 34349792 A JP34349792 A JP 34349792A JP 3060761 B2 JP3060761 B2 JP 3060761B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- outline
- line
- data
- drawing apparatus
- 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
Links
Landscapes
- Image Generation (AREA)
Description
【0001】
【産業上の利用分野】本発明は、入力されたデータをラ
スターデータに変換し、画像を描画する描画装置に関す
るものである。
スターデータに変換し、画像を描画する描画装置に関す
るものである。
【0002】
【従来の技術】従来より、コンピュータグラフィックス
やDTPなどの分野では、入力されたグラフィックデー
タやコードデータなどから、ビットマップなどのラスタ
ー情報に変換して、ディスプレイやプリンタ等の出力装
置に出力するための装置が開発されている。例えば、特
開平4−15771号公報に記載されているものがあ
る。近年、このような装置においては、太さ情報を有す
るベクター情報をラスター情報に変換することが多く行
なわれ、さらに接続点、終端点の形状などにさまざまな
ものが指定できるようになった。太さ情報を有するベク
ター情報をラスター情報に変換する1つの方法として
は、特開昭61−180284号公報や、特開平4−4
9474号公報に記載されているような方法がある。こ
の方法では、ベクターデータを上下または左右にずらし
た複数のベクターを生成し、太線を描画している。しか
し、この方法のように、単にベクターデータを上下、左
右にずらして太くしただけでは、ベクターの接続点にお
いて、隙間ができてしまい、描画された図形の品質は低
下する。図10は線の接続点付近の拡大図である。図1
0に示すように、接続点の外側では、Aの部分で隙間が
でき、Bの部分でオーバーラップ部ができる。特に、線
の太さが太くなるほど、この隙間は顕著となる。
やDTPなどの分野では、入力されたグラフィックデー
タやコードデータなどから、ビットマップなどのラスタ
ー情報に変換して、ディスプレイやプリンタ等の出力装
置に出力するための装置が開発されている。例えば、特
開平4−15771号公報に記載されているものがあ
る。近年、このような装置においては、太さ情報を有す
るベクター情報をラスター情報に変換することが多く行
なわれ、さらに接続点、終端点の形状などにさまざまな
ものが指定できるようになった。太さ情報を有するベク
ター情報をラスター情報に変換する1つの方法として
は、特開昭61−180284号公報や、特開平4−4
9474号公報に記載されているような方法がある。こ
の方法では、ベクターデータを上下または左右にずらし
た複数のベクターを生成し、太線を描画している。しか
し、この方法のように、単にベクターデータを上下、左
右にずらして太くしただけでは、ベクターの接続点にお
いて、隙間ができてしまい、描画された図形の品質は低
下する。図10は線の接続点付近の拡大図である。図1
0に示すように、接続点の外側では、Aの部分で隙間が
でき、Bの部分でオーバーラップ部ができる。特に、線
の太さが太くなるほど、この隙間は顕著となる。
【0003】そのため、ベクターの接続点で発生する隙
間を埋め、良好な描画図形を得る技術も開発されてい
る。例えば、特公昭61−8434号公報には、中心ベ
クターから線幅情報を用いて輪郭線の交点を求め、この
交点をもとに描画処理を行なう旨の記載がある。また、
特公昭63−67220号公報には、ベクターから輪郭
線を生成し、ベクターの接続点においては、接続点を中
心とし線幅を直径とする円を発生させ、これを多角形近
似して隙間を埋める旨の記載がある。これらの技術によ
れば、線幅を有するベクターの接続はなめらかに行なわ
れ、接続点において隙間ができることはないが、前者の
例では、ベクターの輪郭線の外側と内側の両側につい
て、交点の計算を行なっている。また、後者において
は、円を直線近似したベクターを発生させるため、計算
量が多くなるとともに、隙間以外の部分における近似直
線のベクターを計算しており、どちらも計算量が多く、
高速な描画処理が行なえないという欠点があった。
間を埋め、良好な描画図形を得る技術も開発されてい
る。例えば、特公昭61−8434号公報には、中心ベ
クターから線幅情報を用いて輪郭線の交点を求め、この
交点をもとに描画処理を行なう旨の記載がある。また、
特公昭63−67220号公報には、ベクターから輪郭
線を生成し、ベクターの接続点においては、接続点を中
心とし線幅を直径とする円を発生させ、これを多角形近
似して隙間を埋める旨の記載がある。これらの技術によ
れば、線幅を有するベクターの接続はなめらかに行なわ
れ、接続点において隙間ができることはないが、前者の
例では、ベクターの輪郭線の外側と内側の両側につい
て、交点の計算を行なっている。また、後者において
は、円を直線近似したベクターを発生させるため、計算
量が多くなるとともに、隙間以外の部分における近似直
線のベクターを計算しており、どちらも計算量が多く、
高速な描画処理が行なえないという欠点があった。
【0004】
【発明が解決しようとする課題】本発明は、上述した事
情に鑑みてなされたもので、線幅を有する線を描画する
ときにも、接続点で発生する隙間を埋めた、高品位の描
画図形を、高速に得ることのできる描画装置を提供する
ことを目的とするものである。
情に鑑みてなされたもので、線幅を有する線を描画する
ときにも、接続点で発生する隙間を埋めた、高品位の描
画図形を、高速に得ることのできる描画装置を提供する
ことを目的とするものである。
【0005】
【課題を解決するための手段】本発明は、描画すべきデ
ータをラスターデータに変換し図形を描画する描画装置
において、直線、曲線等からなる図形のベクターデータ
を受け取り、ベクターデータおよび線の太さ等の描画パ
ラメータを用いて描画する線の輪郭を示すアウトライン
ベクターを作成するとともに、選択された接続形状のパ
ラメータに基づき、線の接続部に発生する隙間を埋める
輪郭を示すアウトラインベクターを前記線の輪郭を示す
アウトラインベクターとは別に作成するアウトライン生
成手段と、作成されたアウトラインベクターを基に非ゼ
ロ巻数規則により塗り潰し処理を行なう塗り潰し手段と
を有することを特徴とするものである。
ータをラスターデータに変換し図形を描画する描画装置
において、直線、曲線等からなる図形のベクターデータ
を受け取り、ベクターデータおよび線の太さ等の描画パ
ラメータを用いて描画する線の輪郭を示すアウトライン
ベクターを作成するとともに、選択された接続形状のパ
ラメータに基づき、線の接続部に発生する隙間を埋める
輪郭を示すアウトラインベクターを前記線の輪郭を示す
アウトラインベクターとは別に作成するアウトライン生
成手段と、作成されたアウトラインベクターを基に非ゼ
ロ巻数規則により塗り潰し処理を行なう塗り潰し手段と
を有することを特徴とするものである。
【0006】曲線のベクターデータに対しては、該曲線
のベクターデータを複数の直線ベクターに分割して近似
する曲線近似手段をさらに有し、近似した直線ベクター
を用いてアウトライン生成手段により直線ベクターおよ
び接続部のアウトラインベクターの作成を行なうように
構成することもできる。
のベクターデータを複数の直線ベクターに分割して近似
する曲線近似手段をさらに有し、近似した直線ベクター
を用いてアウトライン生成手段により直線ベクターおよ
び接続部のアウトラインベクターの作成を行なうように
構成することもできる。
【0007】また、アウトライン生成手段における線の
接続部の輪郭を示すアウトラインベクターの作成を、接
続する2つの線の外積の符号により決定された領域に対
して行なうように構成することもできる。
接続部の輪郭を示すアウトラインベクターの作成を、接
続する2つの線の外積の符号により決定された領域に対
して行なうように構成することもできる。
【0008】さらに、塗り潰し手段として、アウトライ
ンベクターを受け取り、該アウトラインベクターよりエ
ッジリストを作成し、このエッジリストを用いて非ゼロ
巻数規則により塗りつぶし処理を行なうように構成する
こともできる。
ンベクターを受け取り、該アウトラインベクターよりエ
ッジリストを作成し、このエッジリストを用いて非ゼロ
巻数規則により塗りつぶし処理を行なうように構成する
こともできる。
【0009】
【作用】本発明によれば、アウトライン生成手段におい
て、直線、曲線等からなる図形のベクターデータを受け
取り、ベクターデータおよび線の太さ等の描画パラメー
タを用いて描画する線の輪郭を示すアウトラインベクタ
ーを作成するとともに、ベクターの接続部においては、
選択された接続形状のパラメータに基づき、線の接続部
に発生する隙間部分を埋める輪郭を示すアウトラインベ
クターを、描画する線の輪郭を示すアウトラインベクタ
ーとは別に作成するので、従来のように、図10のBの
ようなオーバーラップ部の処理や、Aの領域以外の部分
まで円を近似した直線を発生するような、無駄な計算を
行なうことがなく、高速にアウトラインベクターを発生
することができる。また、アウトライン生成手段と、作
成されたアウトラインベクターを基に非ゼロ巻数規則に
より塗り潰し処理を行なう塗り潰し手段を有することに
より、オーバーラップ部があっても、確実に塗り潰しを
行ない、高品質の描画を行なうことができる。
て、直線、曲線等からなる図形のベクターデータを受け
取り、ベクターデータおよび線の太さ等の描画パラメー
タを用いて描画する線の輪郭を示すアウトラインベクタ
ーを作成するとともに、ベクターの接続部においては、
選択された接続形状のパラメータに基づき、線の接続部
に発生する隙間部分を埋める輪郭を示すアウトラインベ
クターを、描画する線の輪郭を示すアウトラインベクタ
ーとは別に作成するので、従来のように、図10のBの
ようなオーバーラップ部の処理や、Aの領域以外の部分
まで円を近似した直線を発生するような、無駄な計算を
行なうことがなく、高速にアウトラインベクターを発生
することができる。また、アウトライン生成手段と、作
成されたアウトラインベクターを基に非ゼロ巻数規則に
より塗り潰し処理を行なう塗り潰し手段を有することに
より、オーバーラップ部があっても、確実に塗り潰しを
行ない、高品質の描画を行なうことができる。
【0010】曲線のベクターデータに対しては、該曲線
のベクターデータを複数の直線ベクターに分割して近似
する曲線近似手段をさらに有し、近似した直線ベクター
を用いてアウトライン生成手段により直線ベクターおよ
び接続部のアウトラインベクターの作成を行なうように
構成することにより、以降の処理を直線のみの操作で行
なうことができ、処理を簡単化するとともに、高速化す
ることができる。
のベクターデータを複数の直線ベクターに分割して近似
する曲線近似手段をさらに有し、近似した直線ベクター
を用いてアウトライン生成手段により直線ベクターおよ
び接続部のアウトラインベクターの作成を行なうように
構成することにより、以降の処理を直線のみの操作で行
なうことができ、処理を簡単化するとともに、高速化す
ることができる。
【0011】また、アウトライン生成手段において、ア
ウトラインベクターを作成する領域の検出を、接続する
2つの線の外積の符号により決定することにより、隙間
の発生している領域を簡単に検出し、アウトラインベク
ターを作成することができる。
ウトラインベクターを作成する領域の検出を、接続する
2つの線の外積の符号により決定することにより、隙間
の発生している領域を簡単に検出し、アウトラインベク
ターを作成することができる。
【0012】さらに、塗り潰し手段で、アウトラインベ
クターよりエッジリストを作成し、このエッジリストを
用いて非ゼロ巻数規則により塗りつぶし処理を行なうこ
とにより、ラスターデータに対する塗り潰し処理に比
べ、高速に塗り潰し処理を行なうことができる。
クターよりエッジリストを作成し、このエッジリストを
用いて非ゼロ巻数規則により塗りつぶし処理を行なうこ
とにより、ラスターデータに対する塗り潰し処理に比
べ、高速に塗り潰し処理を行なうことができる。
【0013】
【実施例】図1は、本発明の描画装置の一実施例を示す
ブロック図である。図中、1は入力制御部、2はパラメ
ータ記憶部、3はベクター記憶部、4はアウトライン生
成部、5は曲線近似部、6は塗り潰し処理部、7は出力
制御部、8は出力装置である。
ブロック図である。図中、1は入力制御部、2はパラメ
ータ記憶部、3はベクター記憶部、4はアウトライン生
成部、5は曲線近似部、6は塗り潰し処理部、7は出力
制御部、8は出力装置である。
【0014】入力制御部1は、入力コマンドを受け付
け、各入力コマンドの属性に応じてデータを振り分け
る。入力コマンドとしては、直線とベジエ曲線からなる
fillベクターコマンド、strokeベクターコマ
ンドおよび描画パラメータコマンド等がある。fill
ベクターコマンドは、指定された直線およびベジエ曲線
のベクターで囲まれる領域を塗り潰すコマンドである。
また、strokeベクターコマンドは、指定されたベ
クターにより、直線およびベジエ曲線を描画するコマン
ドである。曲線はベジエ曲線に限らず、スプライン曲線
など他の曲線であってもよい。入力コマンドがfill
ベクターコマンドの場合には、fillベクターを拡大
率処理し、ベクター記憶部3へ書き込む。また、入力コ
マンドがstrokeベクターコマンドの場合には、s
trokeベクターを拡大率処理し、曲線近似部5へ送
る。さらに、入力コマンドが描画パラメータコマンドの
場合には、描画パラメータをパラメータ記憶部2へ書き
込む。パラメータ記憶部2は、入力制御部1から書き込
まれる描画パラメータを記憶し、記憶している描画パラ
メータを入力制御部1、アウトライン生成部4、曲線近
似部5、塗り潰し処理部6に供給する。ベクター記憶部
3は、入力制御部1から書き込まれるfillベクタ
ー、および、アウトライン生成部4で生成されたアウト
ラインベクターを格納し、これらのベクターデータを曲
線近似部5に送る。曲線近似部5では、入力制御部1か
ら送られたstrokeベクター、および、ベクター記
憶部3から送られてきたベクターデータのうち、ベジエ
曲線の部分を、描画パラメータ内の閾値に従い、複数の
直線で近似する。入力制御部1から送られたstrok
eベクターを直線のデータに近似した場合には、ベクタ
ーデータはアウトライン生成部4に送られる。ベクター
記憶部3から送られてきたベクターに対して直線に近似
した場合には、ベクターデータは塗り潰し処理部6に送
られる。アウトライン生成部4は、直線の太さと接続形
状、終端形状などの描画パラメータに基づき、交点にお
ける接続処理などを行なって、直線とベジエ曲線からな
るアウトラインベクターを生成し、ベクター記憶部3へ
書き込む。このとき、アウトラインベクター内を非ゼロ
巻数規則により塗り潰すようなベクターコマンドとし
て、ベクター記憶部3へ送る。塗り潰し処理部6では、
曲線近似部5からベクターデータを受け取り、奇偶規則
(Even−Odd rule 以下EOFILLと略
す)による方法と、非ゼロ巻数規則(Non−zero
Winding rule以下NZWFILLと略
す)による方法のどちらか指定された方法により、スキ
ャンラインごとに塗りつぶされる位置を示すデータ、す
なわち、エッジリストデータを出力する。入力されたデ
ータがstrokeベクターの場合には、自動的にNZ
WFILLが適用される。エッジリストデータは、出力
制御部7へ送られる。出力制御部7は、塗り潰し処理部
6からエッジリストデータを受け取り、出力装置8に応
じた処理を行ない、出力命令を出力装置8へ送る。出力
装置8は画像を出力する。
け、各入力コマンドの属性に応じてデータを振り分け
る。入力コマンドとしては、直線とベジエ曲線からなる
fillベクターコマンド、strokeベクターコマ
ンドおよび描画パラメータコマンド等がある。fill
ベクターコマンドは、指定された直線およびベジエ曲線
のベクターで囲まれる領域を塗り潰すコマンドである。
また、strokeベクターコマンドは、指定されたベ
クターにより、直線およびベジエ曲線を描画するコマン
ドである。曲線はベジエ曲線に限らず、スプライン曲線
など他の曲線であってもよい。入力コマンドがfill
ベクターコマンドの場合には、fillベクターを拡大
率処理し、ベクター記憶部3へ書き込む。また、入力コ
マンドがstrokeベクターコマンドの場合には、s
trokeベクターを拡大率処理し、曲線近似部5へ送
る。さらに、入力コマンドが描画パラメータコマンドの
場合には、描画パラメータをパラメータ記憶部2へ書き
込む。パラメータ記憶部2は、入力制御部1から書き込
まれる描画パラメータを記憶し、記憶している描画パラ
メータを入力制御部1、アウトライン生成部4、曲線近
似部5、塗り潰し処理部6に供給する。ベクター記憶部
3は、入力制御部1から書き込まれるfillベクタ
ー、および、アウトライン生成部4で生成されたアウト
ラインベクターを格納し、これらのベクターデータを曲
線近似部5に送る。曲線近似部5では、入力制御部1か
ら送られたstrokeベクター、および、ベクター記
憶部3から送られてきたベクターデータのうち、ベジエ
曲線の部分を、描画パラメータ内の閾値に従い、複数の
直線で近似する。入力制御部1から送られたstrok
eベクターを直線のデータに近似した場合には、ベクタ
ーデータはアウトライン生成部4に送られる。ベクター
記憶部3から送られてきたベクターに対して直線に近似
した場合には、ベクターデータは塗り潰し処理部6に送
られる。アウトライン生成部4は、直線の太さと接続形
状、終端形状などの描画パラメータに基づき、交点にお
ける接続処理などを行なって、直線とベジエ曲線からな
るアウトラインベクターを生成し、ベクター記憶部3へ
書き込む。このとき、アウトラインベクター内を非ゼロ
巻数規則により塗り潰すようなベクターコマンドとし
て、ベクター記憶部3へ送る。塗り潰し処理部6では、
曲線近似部5からベクターデータを受け取り、奇偶規則
(Even−Odd rule 以下EOFILLと略
す)による方法と、非ゼロ巻数規則(Non−zero
Winding rule以下NZWFILLと略
す)による方法のどちらか指定された方法により、スキ
ャンラインごとに塗りつぶされる位置を示すデータ、す
なわち、エッジリストデータを出力する。入力されたデ
ータがstrokeベクターの場合には、自動的にNZ
WFILLが適用される。エッジリストデータは、出力
制御部7へ送られる。出力制御部7は、塗り潰し処理部
6からエッジリストデータを受け取り、出力装置8に応
じた処理を行ない、出力命令を出力装置8へ送る。出力
装置8は画像を出力する。
【0015】以下、本発明の描画装置の一実施例の動作
を図2乃至図6を用いて説明する。まず、入力制御部1
に入力データが入力される。上述したように、入力デー
タとしては、直線とベジエ曲線からなるfillベクタ
ーデータ、strokeベクターデータおよび描画パラ
メータ等がある。図2は、描画パラメータコマンドの一
例の説明図である。変換マトリックスコマンドは、入力
されるベクターデータの座標変換に用いられる。コマン
ド“setmatrix”に続き、a1乃至a6の6つ
のパラメータが指定される。これらのパラメータは、図
中のコマンド表記の右側に示すような一次式の係数とな
る。式中、X,Yは変換前の座標、X’,Y’は変換後
の座標である。線幅コマンドは、線の幅を指定するコマ
ンドである。コマンド“setlinewidth”に
続くパラメータwにより指定される。接続形状コマンド
は、後述する直線相互の接続点におけるアウトラインの
形状を指定するコマンドである。コマンド“setli
nejoin”に続くパラメータにより指定される。指
定できる接続形状は、斜接型(miter),丸型(r
ound),そぎ接型(bevel)の3種類であり、
それぞれm,r,bで指定する。これらの接続形状につ
いては、図6を用いて後述する。線端形状コマンドは、
線の端部の形状を指定するコマンドである。コマンド
“setlinecap”に続くパラメータにより指定
される。指定できる接続形状は、切り株型(but
t),丸型(round),四角形(square)の
3種類であり、それぞれb,r,sで指定する。曲線分
割閾値コマンドは、曲線近似部5においてベジエ曲線を
直線に近似する際に用いる閾値を与える。コマンド“s
etflatness”に続くパラメータdで指定す
る。これらの描画コマンドが入力制御部1に入力される
と、入力制御部1では各コマンドを認識して、コマンド
により指定されるパラメータをパラメータ記憶部2に書
き込む。
を図2乃至図6を用いて説明する。まず、入力制御部1
に入力データが入力される。上述したように、入力デー
タとしては、直線とベジエ曲線からなるfillベクタ
ーデータ、strokeベクターデータおよび描画パラ
メータ等がある。図2は、描画パラメータコマンドの一
例の説明図である。変換マトリックスコマンドは、入力
されるベクターデータの座標変換に用いられる。コマン
ド“setmatrix”に続き、a1乃至a6の6つ
のパラメータが指定される。これらのパラメータは、図
中のコマンド表記の右側に示すような一次式の係数とな
る。式中、X,Yは変換前の座標、X’,Y’は変換後
の座標である。線幅コマンドは、線の幅を指定するコマ
ンドである。コマンド“setlinewidth”に
続くパラメータwにより指定される。接続形状コマンド
は、後述する直線相互の接続点におけるアウトラインの
形状を指定するコマンドである。コマンド“setli
nejoin”に続くパラメータにより指定される。指
定できる接続形状は、斜接型(miter),丸型(r
ound),そぎ接型(bevel)の3種類であり、
それぞれm,r,bで指定する。これらの接続形状につ
いては、図6を用いて後述する。線端形状コマンドは、
線の端部の形状を指定するコマンドである。コマンド
“setlinecap”に続くパラメータにより指定
される。指定できる接続形状は、切り株型(but
t),丸型(round),四角形(square)の
3種類であり、それぞれb,r,sで指定する。曲線分
割閾値コマンドは、曲線近似部5においてベジエ曲線を
直線に近似する際に用いる閾値を与える。コマンド“s
etflatness”に続くパラメータdで指定す
る。これらの描画コマンドが入力制御部1に入力される
と、入力制御部1では各コマンドを認識して、コマンド
により指定されるパラメータをパラメータ記憶部2に書
き込む。
【0016】図3は、ベクターコマンドデータの一例の
説明図である。図3(A)はfillベクターコマンド
を示し、図3(B)はstrokeベクターコマンドを
示している。それぞれ右側にコマンドの一例を示し、左
側にコマンドによって描画される画像の一例を示してい
る。fillベクターコマンドは、指定する領域内を塗
り潰すことを指示するコマンドである。図3(A)に示
すように、塗り潰し処理を行なう際の方式を示すコマン
ドと、セグメント数、線種データおよび座標データが並
べられる。線種としては、直線及びベジエ曲線が指定さ
れる。この他の線種を許容してももちろんよい。この例
では、EOFILLにより塗り潰し処理を行なうことが
指定され、5つの点を直線で結ぶ領域内を塗り潰すこと
が指示されている。例えば、図3(A)左側に示すよう
な5角形内が塗り潰された画像を得ることができる。
説明図である。図3(A)はfillベクターコマンド
を示し、図3(B)はstrokeベクターコマンドを
示している。それぞれ右側にコマンドの一例を示し、左
側にコマンドによって描画される画像の一例を示してい
る。fillベクターコマンドは、指定する領域内を塗
り潰すことを指示するコマンドである。図3(A)に示
すように、塗り潰し処理を行なう際の方式を示すコマン
ドと、セグメント数、線種データおよび座標データが並
べられる。線種としては、直線及びベジエ曲線が指定さ
れる。この他の線種を許容してももちろんよい。この例
では、EOFILLにより塗り潰し処理を行なうことが
指定され、5つの点を直線で結ぶ領域内を塗り潰すこと
が指示されている。例えば、図3(A)左側に示すよう
な5角形内が塗り潰された画像を得ることができる。
【0017】strokeベクターコマンドは、直線や
ベジエ曲線等の線を描画するためのコマンドである。図
3(B)に示すように、strokeベクターである旨
を示すコマンドと、セグメント数、線種データと座標デ
ータの組が並べられる。この例では、2つの直線と1つ
のベジエ曲線の、3つのstrokeベクターが指示さ
れている。例えば、図3(B)左側に示すような、直線
および曲線の画像を得ることができる。
ベジエ曲線等の線を描画するためのコマンドである。図
3(B)に示すように、strokeベクターである旨
を示すコマンドと、セグメント数、線種データと座標デ
ータの組が並べられる。この例では、2つの直線と1つ
のベジエ曲線の、3つのstrokeベクターが指示さ
れている。例えば、図3(B)左側に示すような、直線
および曲線の画像を得ることができる。
【0018】これらのベクターコマンドデータが入力制
御部1に入力されると、入力制御部1では、パラメータ
記憶部2から変換マトリックスコマンドで指定された変
換係数パラメータa1乃至a6を読み出して、各ベクタ
ーに対して一次式による座標変換を施し、結果を、fi
llベクターならばベクター記憶部3へ書き出し、st
rokeベクターならば曲線近似部5へ送る。
御部1に入力されると、入力制御部1では、パラメータ
記憶部2から変換マトリックスコマンドで指定された変
換係数パラメータa1乃至a6を読み出して、各ベクタ
ーに対して一次式による座標変換を施し、結果を、fi
llベクターならばベクター記憶部3へ書き出し、st
rokeベクターならば曲線近似部5へ送る。
【0019】以下、fillベクターとstrokeベ
クターとに分けて、動作を説明する。ベクター記憶部3
に書き出されたfillベクターは、曲線近似部5に送
られ、曲線分割閾値コマンドで指定された閾値パラメー
タdに達するまで再帰的に分割され、直線で近似され
る。図4は、ベジエ曲線を再帰的に直線に分割する処理
の説明図である。図4(A)は、分割処理のフローチャ
ート、図4(B)は分割されるベジエ曲線の一例におけ
る各点の関係を示す図である。いま、P0,P1,P
2,P3の4点が与えられ、ベジエ曲線が定義されてい
るものとする。このとき、P0をP0’、P0とP1の
中点をP1’、P1とP2との中点とP1’を結ぶ線分
の中点をP2’、P2とP3の中点をP2”、P1とP
2との中点とP2”を結ぶ線分の中点をP1”、P2’
とP1”の中点をP3’およびP0”、P3をP3”と
する。これらの点の座標をS11で計算する。そして、
S12において、P0とP3の中点とP3’との距離T
dを計算し、この距離Tdが予め定められた終了条件値
flatnessよりも大きいか、または、閾値パラメ
ータdよりも大きい場合には、さらに分割する必要があ
ると判断し、S13において、P0’,P1’,P
2’,P3’の4点、および、P0”,P1”,P
2”,P3”の4点をそれぞれ新たなベジエ曲線の定義
している点、すなわち、P0,P1,P2,P3とした
2つのベジエ曲線に分割し、分割処理を再帰的に行な
う。再帰的な分割処理においては、終了条件は、閾値パ
ラメータdに代わって距離Tdが用いられる。再帰的に
分割処理を行なう場合には、さらに小さい直線を発生さ
せる必要がある場合であり、この段階では直線を発生さ
せる必要はない。そのため、直線を発生させないための
フラグを立てておく。S12において、P0とP3の中
点とP3’との距離が、値flatness以下とな
り、さらに、閾値パラメータd以下となると、分割処理
はもはや行なわれず、S14においてフラグを確認した
後、S15において、P0,P3’を結ぶ直線として、
座標値が出力される。S14のフラグの確認は、S13
において再帰的に分割処理ルーチンを呼んだ場合には、
直線ベクターを発生させないようにするために行なわれ
る。上述の分割及び近似直線の発生処理が終了した時点
では、P3を端点とする近似直線が発生されないので、
最後にP3’とP3を接続する近似直線を発生させて近
似処理を終わる。なお、ベクター記憶部3に記憶されて
いるベクターが、全て直線の場合には、曲線近似部5に
よる近似処理は行なわれない。このようにして直線によ
り近似処理されたfillベクターは、塗り潰し処理部
6へ送られる。
クターとに分けて、動作を説明する。ベクター記憶部3
に書き出されたfillベクターは、曲線近似部5に送
られ、曲線分割閾値コマンドで指定された閾値パラメー
タdに達するまで再帰的に分割され、直線で近似され
る。図4は、ベジエ曲線を再帰的に直線に分割する処理
の説明図である。図4(A)は、分割処理のフローチャ
ート、図4(B)は分割されるベジエ曲線の一例におけ
る各点の関係を示す図である。いま、P0,P1,P
2,P3の4点が与えられ、ベジエ曲線が定義されてい
るものとする。このとき、P0をP0’、P0とP1の
中点をP1’、P1とP2との中点とP1’を結ぶ線分
の中点をP2’、P2とP3の中点をP2”、P1とP
2との中点とP2”を結ぶ線分の中点をP1”、P2’
とP1”の中点をP3’およびP0”、P3をP3”と
する。これらの点の座標をS11で計算する。そして、
S12において、P0とP3の中点とP3’との距離T
dを計算し、この距離Tdが予め定められた終了条件値
flatnessよりも大きいか、または、閾値パラメ
ータdよりも大きい場合には、さらに分割する必要があ
ると判断し、S13において、P0’,P1’,P
2’,P3’の4点、および、P0”,P1”,P
2”,P3”の4点をそれぞれ新たなベジエ曲線の定義
している点、すなわち、P0,P1,P2,P3とした
2つのベジエ曲線に分割し、分割処理を再帰的に行な
う。再帰的な分割処理においては、終了条件は、閾値パ
ラメータdに代わって距離Tdが用いられる。再帰的に
分割処理を行なう場合には、さらに小さい直線を発生さ
せる必要がある場合であり、この段階では直線を発生さ
せる必要はない。そのため、直線を発生させないための
フラグを立てておく。S12において、P0とP3の中
点とP3’との距離が、値flatness以下とな
り、さらに、閾値パラメータd以下となると、分割処理
はもはや行なわれず、S14においてフラグを確認した
後、S15において、P0,P3’を結ぶ直線として、
座標値が出力される。S14のフラグの確認は、S13
において再帰的に分割処理ルーチンを呼んだ場合には、
直線ベクターを発生させないようにするために行なわれ
る。上述の分割及び近似直線の発生処理が終了した時点
では、P3を端点とする近似直線が発生されないので、
最後にP3’とP3を接続する近似直線を発生させて近
似処理を終わる。なお、ベクター記憶部3に記憶されて
いるベクターが、全て直線の場合には、曲線近似部5に
よる近似処理は行なわれない。このようにして直線によ
り近似処理されたfillベクターは、塗り潰し処理部
6へ送られる。
【0020】塗り潰し処理部6では、曲線近似部5より
送られてきたベクターを、ベクターの開始点と終了点の
Y座標のうち、小さいほうの値で並べ換え、ベクターテ
ーブルを作成する。図5は、ベクターテーブルの説明図
である。ベクターテーブルは、スキャンライン数分のベ
クターテーブル本体へのポインタを保持するバケット
と、各ベクターの情報が登録されるベクターテーブル本
体から構成される。ベクターテーブル本体に登録される
各ベクターの情報としては、ベクターのY座標軸から見
た向きflag、ベクターのY座標方向の長さ△y、始
点または終点のX座標値sx、ベクターのY座標軸から
見た傾き△x/△y、他のベクターテーブル本体のデー
タへのポインタ等である。初期状態において、バケット
のポインタは全てNULLとなっており、また、ベクタ
ーテーブルは空である。図2に示した例の場合には、図
5に示すように、バケットは16個のポインタで構成さ
れる。
送られてきたベクターを、ベクターの開始点と終了点の
Y座標のうち、小さいほうの値で並べ換え、ベクターテ
ーブルを作成する。図5は、ベクターテーブルの説明図
である。ベクターテーブルは、スキャンライン数分のベ
クターテーブル本体へのポインタを保持するバケット
と、各ベクターの情報が登録されるベクターテーブル本
体から構成される。ベクターテーブル本体に登録される
各ベクターの情報としては、ベクターのY座標軸から見
た向きflag、ベクターのY座標方向の長さ△y、始
点または終点のX座標値sx、ベクターのY座標軸から
見た傾き△x/△y、他のベクターテーブル本体のデー
タへのポインタ等である。初期状態において、バケット
のポインタは全てNULLとなっており、また、ベクタ
ーテーブルは空である。図2に示した例の場合には、図
5に示すように、バケットは16個のポインタで構成さ
れる。
【0021】塗り潰し処理部6に直線ベクターが入力さ
れると、まず、直線ベクターの両端点のY座標値を比較
し、小さい側の端点を検出する。検出した端点のY座標
値に対応するバケットのポインタに、このベクターの情
報が登録されるベクターテーブル本体のアドレスがセッ
トされる。Y座標値は整数でない場合も考えられるが、
例えば四捨五入し、近い値のバケットのスキャンライン
値のポインタをセットする。バケットにアドレスがセッ
トされる前の値は、pointerに格納される。その
ため、既にアドレスが格納されているバケットに対して
登録を行なうと、バケットには新たなベクターの情報を
指すポインタが格納され、ベクターテーブル本体のpo
interには、以前に登録されているベクターテーブ
ル本体内のベクター情報を指すポインタが格納されるこ
とになる。入力された直線ベクターから、さらに、Y座
標軸からみたベクターの向きflag、Y座標方向の長
さ△y、検出した端点でのX座標値sx、ベクターのY
座標軸から見た傾き△x/△yを求め、これらの値をそ
れぞれflag,△y,sx,△x/△yの欄に登録す
る。ベクターの向きflagは、例えば、Y座標軸に対
して同方向、すなわち、上向きであれば+1、下向きで
あれば−1、Y座標軸と直角、すなわち水平線であれば
0の値が登録される。
れると、まず、直線ベクターの両端点のY座標値を比較
し、小さい側の端点を検出する。検出した端点のY座標
値に対応するバケットのポインタに、このベクターの情
報が登録されるベクターテーブル本体のアドレスがセッ
トされる。Y座標値は整数でない場合も考えられるが、
例えば四捨五入し、近い値のバケットのスキャンライン
値のポインタをセットする。バケットにアドレスがセッ
トされる前の値は、pointerに格納される。その
ため、既にアドレスが格納されているバケットに対して
登録を行なうと、バケットには新たなベクターの情報を
指すポインタが格納され、ベクターテーブル本体のpo
interには、以前に登録されているベクターテーブ
ル本体内のベクター情報を指すポインタが格納されるこ
とになる。入力された直線ベクターから、さらに、Y座
標軸からみたベクターの向きflag、Y座標方向の長
さ△y、検出した端点でのX座標値sx、ベクターのY
座標軸から見た傾き△x/△yを求め、これらの値をそ
れぞれflag,△y,sx,△x/△yの欄に登録す
る。ベクターの向きflagは、例えば、Y座標軸に対
して同方向、すなわち、上向きであれば+1、下向きで
あれば−1、Y座標軸と直角、すなわち水平線であれば
0の値が登録される。
【0022】ベクターデータ本体の各セルは、ベクター
の入力順に使われるが、ベクターの両端のY座標値のう
ち、小さい方の端点のY座標値が同じベクターは、その
Y座標値を有するバケットから自動的にリスト構造でつ
ながれ、Y座標値でソートした状態となる。また、Y座
標値のうちの小さい方が、バケットの最大値を越える場
合には、登録しない。また、Y座標の大きい方の端点の
Y座標値が、バケットの最大値を越える場合には、Y座
標の大きい方の端点のY座標値が、バケットの最大値に
なるように、すなわち、△yを変更して登録する。さら
に、水平線の場合には、sxに最小のX座標値、△x/
△yに最大のX座標値を入れる。
の入力順に使われるが、ベクターの両端のY座標値のう
ち、小さい方の端点のY座標値が同じベクターは、その
Y座標値を有するバケットから自動的にリスト構造でつ
ながれ、Y座標値でソートした状態となる。また、Y座
標値のうちの小さい方が、バケットの最大値を越える場
合には、登録しない。また、Y座標の大きい方の端点の
Y座標値が、バケットの最大値を越える場合には、Y座
標の大きい方の端点のY座標値が、バケットの最大値に
なるように、すなわち、△yを変更して登録する。さら
に、水平線の場合には、sxに最小のX座標値、△x/
△yに最大のX座標値を入れる。
【0023】このようにして作成されたベクターテーブ
ルを基に、各スキャンラインごとに、スキャンラインと
ベクターとの交点のX座標を求め、小さい順にソートす
る。小さい順にソートされたX座標をもとに、エッジリ
ストを作成する。このエッジリストは、EOFILLで
塗り潰す場合には、小さい順にソートされたX座標の奇
数番目と偶数番目の間を塗り潰すように、奇数番目を塗
り潰しの始点に、偶数番目を終点にしたエッジリストを
作成して出力制御部7へ送る。NZWFILLで塗り潰
す場合には、小さい順にソートされたX座標の順に、ベ
クターのflagの値を加算して行く。加算の場合の初
期値は0になっている。そして、加算した値を順に参照
しながら、0から0以外、0以外から0に変化する間を
塗り潰すように、0から0以外に変化する点を始点、0
以外から0に変化する点を終点とするエッジリストを作
成して出力制御部7へ送る。両方とも、水平線の場合に
は、上記処理をせずエッジリストとして出力する。
ルを基に、各スキャンラインごとに、スキャンラインと
ベクターとの交点のX座標を求め、小さい順にソートす
る。小さい順にソートされたX座標をもとに、エッジリ
ストを作成する。このエッジリストは、EOFILLで
塗り潰す場合には、小さい順にソートされたX座標の奇
数番目と偶数番目の間を塗り潰すように、奇数番目を塗
り潰しの始点に、偶数番目を終点にしたエッジリストを
作成して出力制御部7へ送る。NZWFILLで塗り潰
す場合には、小さい順にソートされたX座標の順に、ベ
クターのflagの値を加算して行く。加算の場合の初
期値は0になっている。そして、加算した値を順に参照
しながら、0から0以外、0以外から0に変化する間を
塗り潰すように、0から0以外に変化する点を始点、0
以外から0に変化する点を終点とするエッジリストを作
成して出力制御部7へ送る。両方とも、水平線の場合に
は、上記処理をせずエッジリストとして出力する。
【0024】図8、図9は、各塗り潰し方法による塗り
潰し結果の違いの説明図である。上述のように、塗り潰
し処理部6では、2つの方法によって塗り潰し処理を行
なうことができるが、各方法によって、図形が重なって
いる場合は塗り潰し処理の結果が相違する。図8はEO
FILLにより塗り潰し処理を行なった場合の結果であ
り、図9はNZWFILLにより塗り潰し処理を行なっ
た場合の結果である。このように、EOFILLでは、
重なった部分が白く抜けるが、NZWFILLでは、ベ
クターの方向によっては、塗り潰される。後述するが、
strokeベクターの場合には、NZWFILLを用
いて塗り潰し処理を行なうことにより、塗り潰し領域が
重なっている部分の白抜けを防止し、確実な塗り潰しを
実現している。
潰し結果の違いの説明図である。上述のように、塗り潰
し処理部6では、2つの方法によって塗り潰し処理を行
なうことができるが、各方法によって、図形が重なって
いる場合は塗り潰し処理の結果が相違する。図8はEO
FILLにより塗り潰し処理を行なった場合の結果であ
り、図9はNZWFILLにより塗り潰し処理を行なっ
た場合の結果である。このように、EOFILLでは、
重なった部分が白く抜けるが、NZWFILLでは、ベ
クターの方向によっては、塗り潰される。後述するが、
strokeベクターの場合には、NZWFILLを用
いて塗り潰し処理を行なうことにより、塗り潰し領域が
重なっている部分の白抜けを防止し、確実な塗り潰しを
実現している。
【0025】出力制御部7では、塗り潰し処理部6から
送られてくるエッジリストを基に、これらをプレーンマ
ップに展開して出力装置部8に同期させて出力する。出
力装置部8では、プレーンマップに展開されたスキャン
ラインごとのデータを出力装置に出力する。
送られてくるエッジリストを基に、これらをプレーンマ
ップに展開して出力装置部8に同期させて出力する。出
力装置部8では、プレーンマップに展開されたスキャン
ラインごとのデータを出力装置に出力する。
【0026】strokeコマンドの場合について説明
する。入力制御部1から曲線近似部5へ送られた各ベク
ターは、fillコマンドの時と同様に、図4に示した
手法により、曲線ベクターは直線ベクターで近似処理さ
れた後、アウトライン生成部4へ送られる。図6は、ア
ウトライン生成部の処理の説明図である。アウトライン
生成部4では、各直線ベクターの接続部分の処理を行な
う。上述のように、太い線を接続する場合には、図6に
示すように、接続した直線の外側部分に空白部ができて
しまう。そのため、この空白部を埋めるような処理を行
なう。
する。入力制御部1から曲線近似部5へ送られた各ベク
ターは、fillコマンドの時と同様に、図4に示した
手法により、曲線ベクターは直線ベクターで近似処理さ
れた後、アウトライン生成部4へ送られる。図6は、ア
ウトライン生成部の処理の説明図である。アウトライン
生成部4では、各直線ベクターの接続部分の処理を行な
う。上述のように、太い線を接続する場合には、図6に
示すように、接続した直線の外側部分に空白部ができて
しまう。そのため、この空白部を埋めるような処理を行
なう。
【0027】図6では、直線ベクター(P0,P1)と
(P1,P2)を接続する場合を考える。それぞれの直
線ベクターは、線幅dを有するものとする。まず、直線
ベクター(P0,P1)について垂直方向に距離1/2
dにある点P0’,P0”,P01’,P01”を求め
る。また、直線ベクター(P1,P2)について垂直方
向に距離1/2dにある点P21’,P21”,P
2’,P2”を求める。この場合、接続点P1では、各
直線ベクターについて垂直方向にある点が2つずつ求め
られ、それらを区別するためにP01’,P01”,P
21’,P21”と表している。そして、各直線ベクタ
ーごとに、求めた各点を反時計方向になるように直線で
結び、長方形型のベクターを求める。すなわち、ベクタ
ー(P0’,P0”),(P0”,P01”),(P0
1”,P01’),(P01’,P0’)、および、ベ
クター(P21’,P21”),(P21”,P
2”),(P2”,P2’),(P2’,P21’)求
める。また、直線ベクター(P0,P1)と直線ベクタ
ー(P1,P2)の外積の符号を求める。この外積の符
号が負の場合には、P01’,P21’の側が、正の場
合にはP01”,P21”の側が空白部となっているこ
とを検知する。図6の例では、外積は負となり、P0
1’,P21’の側に空白部が存在することがわかる。
(P1,P2)を接続する場合を考える。それぞれの直
線ベクターは、線幅dを有するものとする。まず、直線
ベクター(P0,P1)について垂直方向に距離1/2
dにある点P0’,P0”,P01’,P01”を求め
る。また、直線ベクター(P1,P2)について垂直方
向に距離1/2dにある点P21’,P21”,P
2’,P2”を求める。この場合、接続点P1では、各
直線ベクターについて垂直方向にある点が2つずつ求め
られ、それらを区別するためにP01’,P01”,P
21’,P21”と表している。そして、各直線ベクタ
ーごとに、求めた各点を反時計方向になるように直線で
結び、長方形型のベクターを求める。すなわち、ベクタ
ー(P0’,P0”),(P0”,P01”),(P0
1”,P01’),(P01’,P0’)、および、ベ
クター(P21’,P21”),(P21”,P
2”),(P2”,P2’),(P2’,P21’)求
める。また、直線ベクター(P0,P1)と直線ベクタ
ー(P1,P2)の外積の符号を求める。この外積の符
号が負の場合には、P01’,P21’の側が、正の場
合にはP01”,P21”の側が空白部となっているこ
とを検知する。図6の例では、外積は負となり、P0
1’,P21’の側に空白部が存在することがわかる。
【0028】空白部の処理方法は、接続形状コマンドで
指定されたパラメータにより決定される。このバラメー
タはユーザが指定可能である。まず、接続形状として、
miterが指定されている場合には、直線P0’−P
01’の延長と、直線P2’−P21’の延長の交点P
Mを求める。そして、PM,P01’,P1’,P2
1’,PMを結ぶ四角形ベクターを生成する。接続形状
として、bevelが指定されている場合には、P0
1’,P1’,P21’,P01’の三角形ベクターを
生成する。接続形状として、roundが指定されてい
る場合には、直線P0’−P01’、直線P2’−P2
1’上に、それぞれBezier曲線の制御点となる点
PR0,PR1を求めて、P01’,P1’P21’を
結ぶベクターと、PR0,PR1を制御点とするP2
1’,P01’を結ぶベジエ曲線ベクターからなる略扇
形ベクターを生成する。この3種類の内、bevelの
場合が最も計算量も少なく、高速に処理することができ
る。
指定されたパラメータにより決定される。このバラメー
タはユーザが指定可能である。まず、接続形状として、
miterが指定されている場合には、直線P0’−P
01’の延長と、直線P2’−P21’の延長の交点P
Mを求める。そして、PM,P01’,P1’,P2
1’,PMを結ぶ四角形ベクターを生成する。接続形状
として、bevelが指定されている場合には、P0
1’,P1’,P21’,P01’の三角形ベクターを
生成する。接続形状として、roundが指定されてい
る場合には、直線P0’−P01’、直線P2’−P2
1’上に、それぞれBezier曲線の制御点となる点
PR0,PR1を求めて、P01’,P1’P21’を
結ぶベクターと、PR0,PR1を制御点とするP2
1’,P01’を結ぶベジエ曲線ベクターからなる略扇
形ベクターを生成する。この3種類の内、bevelの
場合が最も計算量も少なく、高速に処理することができ
る。
【0029】図7は、接続点付近におけるベジエ曲線の
発生の説明図である。接続形状としてroundが指定
された場合に生成するベジエ曲線の制御点PR0,PR
1は、次のようにして求めることができる。図7では、
図6のように2本の直線が接続された場合について考え
る。また、簡単のために、円弧に近似した曲線を発生さ
せるものとする。図中、点Cは図6におけるP1に、点
q0,点q3はそれぞれ図6におけるP0’,P21’
に対応する。半径rは、直線の線幅の1/2dに対応す
る。さらに、∠q0,C,PMおよび∠q3,C,PM
をθとする。発生させたい円弧状のベジエ曲線と、直線
C−PMとの交点をq4とすれば、線分C−q4の長さ
は、rである。点q0と点q3を結ぶ直線と、点Cと点
PMを結ぶ直線の交点をq5とすれば、線分C−q5の
長さは、rcosθである。q4をベジエ曲線が通過す
るためには、q5−q4の4/3の位置に、直線PR0
−PR1と直線C−PMの交点q6を設ければよいの
で、線分q5−q6の長さは、 4/3r(1−cosθ) となる。一方、線分q0−q5の長さは、rsinθで
あるから、線分q0−PMの長さは、 (rsinθ)/cosθ である。これより、線分q5−PMの長さは、 ((rsinθ)/cosθ)sinθ=rsinθs
inθ/cosθ となる。点q6による線分q5−PMの分割比、すなわ
ち、 (線分q5−q6の長さ)/(線分q5−PM) をRとすれば、 R=(4/3)(1−cosθ)cosθ/sinθsinθ =4(1−cosθ)cosθ/3(1+cosθ)(1−cosθ) =4cosθ/3(1+cosθ) となり、線分q0−PMおよび線分q3−PMを割合R
で分割した点をPR0,PR1とすればよい。この例で
は、円弧に近似したベジエ曲線を発生させる例を示した
が、これに限らず、他の設定方法によりPR0,PR1
を設定し、曲線を発生させてもよい。また、制御点は2
点に限らず、1点または3点以上を用いるように構成し
てもよい。
発生の説明図である。接続形状としてroundが指定
された場合に生成するベジエ曲線の制御点PR0,PR
1は、次のようにして求めることができる。図7では、
図6のように2本の直線が接続された場合について考え
る。また、簡単のために、円弧に近似した曲線を発生さ
せるものとする。図中、点Cは図6におけるP1に、点
q0,点q3はそれぞれ図6におけるP0’,P21’
に対応する。半径rは、直線の線幅の1/2dに対応す
る。さらに、∠q0,C,PMおよび∠q3,C,PM
をθとする。発生させたい円弧状のベジエ曲線と、直線
C−PMとの交点をq4とすれば、線分C−q4の長さ
は、rである。点q0と点q3を結ぶ直線と、点Cと点
PMを結ぶ直線の交点をq5とすれば、線分C−q5の
長さは、rcosθである。q4をベジエ曲線が通過す
るためには、q5−q4の4/3の位置に、直線PR0
−PR1と直線C−PMの交点q6を設ければよいの
で、線分q5−q6の長さは、 4/3r(1−cosθ) となる。一方、線分q0−q5の長さは、rsinθで
あるから、線分q0−PMの長さは、 (rsinθ)/cosθ である。これより、線分q5−PMの長さは、 ((rsinθ)/cosθ)sinθ=rsinθs
inθ/cosθ となる。点q6による線分q5−PMの分割比、すなわ
ち、 (線分q5−q6の長さ)/(線分q5−PM) をRとすれば、 R=(4/3)(1−cosθ)cosθ/sinθsinθ =4(1−cosθ)cosθ/3(1+cosθ)(1−cosθ) =4cosθ/3(1+cosθ) となり、線分q0−PMおよび線分q3−PMを割合R
で分割した点をPR0,PR1とすればよい。この例で
は、円弧に近似したベジエ曲線を発生させる例を示した
が、これに限らず、他の設定方法によりPR0,PR1
を設定し、曲線を発生させてもよい。また、制御点は2
点に限らず、1点または3点以上を用いるように構成し
てもよい。
【0030】このようにしてアウトライン生成部4で生
成された直線のアウトラインのベクターは、fillベ
クターとして、ベクター記憶部3に格納される。その
後、曲線近似部5で処理を行ない、塗り潰し処理部6で
NZWFILLで塗り潰す。これらの処理は、fill
ベクターの時に説明した処理と同様に処理され、線幅内
が塗り潰された、太さのある線が出力されることとな
る。このとき、接続される直線の矩形ベクターが、図6
のP01”,P21”の側のように重なり合っていて
も、確実に塗り潰しを行なうことができる。
成された直線のアウトラインのベクターは、fillベ
クターとして、ベクター記憶部3に格納される。その
後、曲線近似部5で処理を行ない、塗り潰し処理部6で
NZWFILLで塗り潰す。これらの処理は、fill
ベクターの時に説明した処理と同様に処理され、線幅内
が塗り潰された、太さのある線が出力されることとな
る。このとき、接続される直線の矩形ベクターが、図6
のP01”,P21”の側のように重なり合っていて
も、確実に塗り潰しを行なうことができる。
【0031】
【発明の効果】以上の説明から明らかなように、本発明
によれば、直線や曲線に対応したベクターから太さを持
った線を描く場合でも、その接続点における隙間部分を
埋めた高品質の描画画像を、高速に得ることができると
いう効果がある。
によれば、直線や曲線に対応したベクターから太さを持
った線を描く場合でも、その接続点における隙間部分を
埋めた高品質の描画画像を、高速に得ることができると
いう効果がある。
【図1】 本発明の描画装置の一実施例を示すブロック
図である。
図である。
【図2】 描画パラメータコマンドの一例の説明図であ
る。
る。
【図3】 ベクターコマンドデータの一例の説明図であ
る。
る。
【図4】 ベジエ曲線を再帰的に直線に分割する処理の
説明図である。
説明図である。
【図5】 ベクターテーブルの説明図である。
【図6】 アウトライン生成部の処理の説明図である。
【図7】 接続点付近におけるベジエ曲線の発生の説明
図である。
図である。
【図8】〜
【図9】 各塗り潰し方法による塗り潰し結果の違いの
説明図である。
説明図である。
【図10】 線の接続点付近の拡大図である。
1 入力制御部、2 パラメータ記憶部、3 ベクター
記憶部、4 アウトライン生成部、5 曲線近似部、6
塗り潰し処理部、7 出力制御部、8 出力装置。
記憶部、4 アウトライン生成部、5 曲線近似部、6
塗り潰し処理部、7 出力制御部、8 出力装置。
フロントページの続き (56)参考文献 特開 昭63−140383(JP,A) 特開 平2−232775(JP,A) 特開 昭57−62083(JP,A) 特開 平1−166180(JP,A) 特開 昭61−5285(JP,A) 特開 平5−20465(JP,A) 特開 平5−2459(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 11/00 - 11/40
Claims (4)
- 【請求項1】 描画すべきデータをラスターデータに変
換し図形を描画する描画装置において、直線、曲線等か
らなる図形のベクターデータを受け取り、ベクターデー
タおよび線の太さ等の描画パラメータを用いて描画する
線の輪郭を示すアウトラインベクターを作成するととも
に、選択された接続形状のパラメータに基づき、線の接
続部に発生する隙間を埋める輪郭を示すアウトラインベ
クターを前記線の輪郭を示すアウトラインベクターとは
別に作成するアウトライン生成手段と、作成されたアウ
トラインベクターを基に非ゼロ巻数規則により塗り潰し
処理を行なう塗り潰し手段とを有することを特徴とする
描画装置。 - 【請求項2】 請求項1に記載の描画装置において、曲
線のベクターデータを複数の直線ベクターに分割して近
似する曲線近似手段をさらに有し、近似した直線ベクタ
ーを用いてアウトライン生成手段により直線ベクターお
よび接続部のアウトラインベクターの作成を行なうこと
を特徴とする描画装置。 - 【請求項3】 請求項1または2に記載の描画装置にお
いて、アウトライン生成手段における線の接続部の輪郭
を示すアウトラインベクターの作成は、接続する2つの
線の外積の符号により決定された領域に対して行なうこ
とを特徴とする描画装置。 - 【請求項4】 請求項1または2または3に記載の描画
装置において、塗り潰し手段は、アウトラインベクター
を受け取り、該アウトラインベクターよりエッジリスト
を作成し、このエッジリストを用いて非ゼロ巻数規則に
より塗りつぶし処理を行なうことを特徴とする描画装
置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34349792A JP3060761B2 (ja) | 1992-11-30 | 1992-11-30 | 描画装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34349792A JP3060761B2 (ja) | 1992-11-30 | 1992-11-30 | 描画装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06168339A JPH06168339A (ja) | 1994-06-14 |
JP3060761B2 true JP3060761B2 (ja) | 2000-07-10 |
Family
ID=18361975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34349792A Expired - Fee Related JP3060761B2 (ja) | 1992-11-30 | 1992-11-30 | 描画装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3060761B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6005586A (en) * | 1996-02-17 | 1999-12-21 | Fuji Xerox Co., Ltd. | Drawing processing apparatus |
KR100679019B1 (ko) | 2004-11-02 | 2007-02-05 | 삼성전자주식회사 | 버퍼링을 이용한 누적식 벡터 드로잉 방법 및 장치 |
JP4157569B2 (ja) | 2006-05-11 | 2008-10-01 | 株式会社東芝 | 描画装置、描画方法及び描画プログラム |
JP4370438B2 (ja) | 2007-06-27 | 2009-11-25 | Necシステムテクノロジー株式会社 | ベクター画像描画装置、ベクター画像描画方法およびプログラム |
JP5128384B2 (ja) * | 2008-06-26 | 2013-01-23 | 株式会社セルシス | 線画のための彩色方法及びプログラム |
JP5127775B2 (ja) | 2009-05-15 | 2013-01-23 | 株式会社リコー | 情報処理装置、レーザ照射装置、制御システム、描画情報記憶装置 |
JP6472171B2 (ja) | 2013-08-27 | 2019-02-20 | キヤノン株式会社 | 画像処理装置およびその方法 |
JP6271945B2 (ja) * | 2013-10-28 | 2018-01-31 | キヤノン株式会社 | 描画装置、方法及びプログラム |
-
1992
- 1992-11-30 JP JP34349792A patent/JP3060761B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06168339A (ja) | 1994-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4815009A (en) | Algorithm for filling an image outline | |
JP3433828B2 (ja) | ピクセル画像のエッジ改良のための方法と装置 | |
JP3060761B2 (ja) | 描画装置 | |
JPH0419556B2 (ja) | ||
JPH07105394A (ja) | 多角形を塗りつぶすための方法、システム及び装置 | |
JP2634851B2 (ja) | 画像処理装置 | |
KR0147440B1 (ko) | 폭 1의 선을 묘화하기 위한 방법 및 장치 | |
JPH0350686A (ja) | 図形処理方式 | |
JPH08279038A (ja) | 太線描画装置 | |
JP2768370B2 (ja) | 図形描画方法 | |
JPH10198811A (ja) | 3次ベジェ曲線の線分近似方法 | |
JPH0896148A (ja) | 図形描画装置 | |
JPH01200481A (ja) | 三次元図形のピック方法 | |
JPH01270094A (ja) | 文字フォント生成方法 | |
JP3338484B2 (ja) | アウトラインフォント変形装置 | |
JP3536894B2 (ja) | 図形処理装置 | |
JPH0259871A (ja) | 画像処理装置および画像処理方法 | |
JP2000338959A (ja) | 画像処理装置 | |
JPH09245181A (ja) | アンチエイリアシング処理方法 | |
JP2787497B2 (ja) | 図形描画方法及び装置 | |
JP2988936B2 (ja) | 三次元図形の処理装置 | |
JPH0636049A (ja) | 図形のハイライト表示方法及びグラフィックス装置 | |
JPH0877372A (ja) | アウトライン塗りつぶし装置 | |
JPS63192089A (ja) | ビツトマツプデイスプレイシステムにおける描画方法 | |
JPH05342311A (ja) | 曲面の空間分割方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080428 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 11 |
|
LAPS | Cancellation because of no payment of annual fees |