(57)【特許請求の範囲】
【請求項１】
塗り潰しの対象となる対象図形を構成するベクトルを入力すると共に、前記各ベクトルと走査ラインとの交点を算出し、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の画素を反転させる処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを生成する２次元パターン生成方法において、
前記対象図形は特定方向回りのベクトルによって表現されたものであり、前記ベクトルの上下方向の向きに基づいて前記ベクトル上の画素を反転させるかどうかを決定し、
前記対象図形の輪郭部分の塗り潰しを１画素単位で制御し、
前記ベクトルが反時計回りで表現されている場合、
前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は反転
とするようにした
ことを特徴とする２次元パターン生成方法。
【請求項２】
塗り潰しの対象となる対象図形を構成するベクトルを入力すると共に、前記各ベクトルと走査ラインとの交点を算出し、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の画素を反転させる処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを生成する２次元パターン生成方法において、
前記対象図形は特定方向回りのベクトルによって表現されたものであり、前記ベクトルの上下方向の向きに基づいて前記ベクトル上の画素を反転させるかどうかを決定し、
前記対象図形の輪郭部分の塗り潰しを１画素単位で制御し、
前記ベクトルが時計回りで表現されている場合、
前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は非反転
とするようにした
ことを特徴とする２次元パターン生成方法。
【請求項３】
塗り潰し処理された対象図形の画像データが記憶されるメモリと、
前記塗り潰し処理される対象図形を特定する特定方向回りのベクトルを入力し、各ベクトルと各走査ラインとの交点を計算すると共に、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の塗り潰し処理すべきスパンを、その始点及び／又は終点の画素を描画するかどうかを前記ベクトルの上下方向の向きによって決定しつつ算出し、この算出されたスパンに相当する前記メモリ上の画像データを反転させて再描画する処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを前記メモリ上に生成する描画処理手段と
を備え、
前記描画処理手段は、
前記ベクトルが反時計回りで表現されている場合、
前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は反転させることにより前記塗り潰し処理すべきスパンを算出するものである
ことを特徴とする２次元パターン生成装置。
【請求項４】
塗り潰し処理された対象図形の画像データが記憶されるメモリと、
前記塗り潰し処理される対象図形を特定する特定方向回りのベクトルを入力し、各ベクトルと各走査ラインとの交点を計算すると共に、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の塗り潰し処理すべきスパンを、その始点及び／又は終点の画素を描画するかどうかを前記ベクトルの上下方向の向きによって決定しつつ算出し、この算出されたスパンに相当する前記メモリ上の画像データを反転させて再描画する処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを前記メモリ上に生成する描画処理手段と
を備え、
前記描画処理手段は、
前記ベクトルが時計回りで表現されている場合、
前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、
前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は反転、
前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は非反転させることにより前記塗り潰し処理すべきスパンを算出するものである
ことを特徴とする２次元パターン生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＣＲＴ（cathode ray tube）等のラスタースキャン型表示装置において、平面上に表現された図形の塗りつぶしの２次元パターン生成方法及び装置に関し、特にベクトルデータ形式で構成された図形等の塗りつぶしの２次元パターン生成方法及び装置に関する。
【０００２】
【従来の技術】
従来より、ＣＲＴ等のラスタースキャン型表示装置を使用した２次元パターン生成装置での図形の塗りつぶし方法は、その表示装置のディスプレイに向かって、常に水平走査ライン（以下、スキャンラインと呼ぶ。）の左側から右側に塗りつぶしをかけるものである。即ち、スキャンラインの両端点間にある、塗りつぶすべき画素を読み出した後、その間の画素を反転して同じ所に書き込む処理を繰り返すことにより、塗りつぶしを行っている。以下、その方法を説明する。
【０００３】
図２２は、従来装置により塗りつぶされた２次元パターン領域を説明するための図である。
【０００４】
同図に示すように、スキャンラインＹｎは、ベクトルＶ０，Ｖ１，Ｖ２，Ｖ３とそれぞれ交点Ｘｎ０，Ｘｎ１，Ｘｎ２，Ｘｎ３で交わっている。この場合、先ず始めに図２３（ａ）に示すように、スキャンラインＹｎと各交点Ｘｎ０，Ｘｎ１，Ｘｎ２，Ｘｎ３との描画情報を初期化する。このとき、例えば塗りつぶし有りが１、塗りつぶし無しが０とすると、初期化された部分は０になり、塗りつぶされていない状態になる。次に、同図（ｂ）に示すように、スキャンラインＹｎの開始位置Ｘ０から交点Ｘｎ０までの区間（以下、スパンと呼ぶ。）を読み出し、読み出された０を反転して書き込むことで塗りつぶしを行っている。このときの反転は、既に書き込まれた部分の情報と、新たに書き込む部分の情報とをＥＸ−ＯＲ（Exclusive−OR）論理演算を行うことで実現している。このような処理を同図（ｃ），（ｄ），（ｅ）に示すようにＸｎ１〜Ｘｎ３についても同様に行うことで、結果として塗りつぶし処理を実行している。
【０００５】
上記の塗りつぶしを領域的な面から見た例を図２４に示すと、先ず同図に四角い枠で表されている設定された２次元パターン領域が初期化され、次に同図（ａ）に示すように、ベクトルＶ０が与えられると、そのベクトルの始点（Ｘ０，Ｙ０）から終点（Ｘ１，Ｙ１）に向かって図示しないスキャンラインとベクトルＶ０との各交点が計算され、その計算結果に基づき、２次元パターン領域上のこの場合スキャンラインの左端部分からベクトルＶ０との交点部分までの間の領域Ｒ０が塗りつぶされる。この領域Ｒ０の塗りつぶしは、上述の通り既に書き込まれた部分と新たに書き込まれる部分とをＥＸ−ＯＲ論理演算することにより行っている。同図（ｂ）はベクトルＶ１について、同図（ｃ）はベクトルＶ２について、同図（ｄ）はベクトルＶ３についてそれぞれその始点（Ｘ１，Ｙ１），（Ｘ２，Ｙ２），（Ｘ３，Ｙ３）から終点（Ｘ２，Ｙ２），（Ｘ３，Ｙ３），（Ｘ０，Ｙ０）に向かってスキャンラインとの各交点が計算され、それら交点部分とスキャンラインの左端部分との間の領域Ｒ１，Ｒ２，Ｒ３が同図に示すように塗りつぶされることを示しており、同図（ｅ），（ｆ），（ｇ）は、これらの塗りつぶし処理によりそれぞれ生成されるパターンを示している。最終的にはこうして塗りつぶされた各領域Ｒ０〜Ｒ３のＥＸ−ＯＲ論理演算をすることによってベクトルＶ０〜Ｖ３で囲まれた領域を塗りつぶしている。この場合、同図（ｈ）に示すように塗りつぶしの処理回数を見てみると、少なくとも４回は塗りつぶしをしており、奇数回のときに塗りつぶし、偶数回のときには塗りつぶさないという規則が成り立っている。
【０００６】
【発明が解決しようとする課題】
しかしながら、上述した２次元パターン生成装置での図形の塗りつぶしは、図形を構成するベクトルの方向には無関係に、常に２次元パターン領域の一端部から各ベクトルと走査ラインとの交点（例えば左端部から右端部）に向かって行われているため、塗りつぶす平均の画素数が多くなり塗りつぶし回数が増え、ベクトルの向きによっては塗りつぶされない画素部分も生じるため、ばらつきが出て画像の仕上がり具合があまり良くないという問題がある。
【０００７】
この発明は、このような問題点に鑑みなされたもので、ベクトルで構成された図形の塗りつぶしの精度を向上させることができる２次元パターン生成方法及び装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明に係る２次元パターン生成方法は、塗り潰しの対象となる対象図形を構成するベクトルを入力すると共に、前記各ベクトルと走査ラインとの交点を算出し、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の画素を反転させる処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを生成する２次元パターン生成方法において、前記対象図形は特定方向回りのベクトルによって表現されたものであり、前記ベクトルの上下方向の向きに基づいて前記ベクトル上の画素を反転させるかどうかを決定し、前記対象図形の塗り潰しを制御するようにしたことを特徴とする。
【０００９】
この発明に係る２次元パターン生成方法としては、塗り潰しの対象となる対象図形を構成するベクトルを入力すると共に、前記各ベクトルと走査ラインとの交点を算出し、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の画素を反転させる処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを生成する２次元パターン生成方法において、前記対象図形は特定方向回りのベクトルによって表現されたものであり、前記ベクトルの上下方向の向きに基づいて前記ベクトル上の画素を反転させるかどうかを決定し、前記対象図形の輪郭部分の塗り潰しを１画素単位で制御するようにしたものなどが考えられる。
【００１０】
この発明に係る２次元パターン生成装置は、塗り潰し処理された対象図形の画像データが記憶されるメモリと、前記塗り潰し処理される対象図形を特定する特定方向回りのベクトルを入力し、各ベクトルと各走査ラインとの交点を計算すると共に、各走査ライン上の所定の基準点から当該走査ラインとベクトルとの交点までの間の塗り潰し処理すべきスパンを、その始点及び／又は終点の画素を描画するかどうかを前記ベクトルの上下方向の向きによって決定しつつ算出し、この算出されたスパンに相当する前記メモリ上の画像データを反転させて再描画する処理を、全てのベクトルと走査ラインとの交点について実行することにより前記対象図形の内部を塗り潰した２次元パターンを前記メモリ上に生成する描画処理手段とを備えたことを特徴とする。
【００１１】
この発明によれば、ベクトルと走査ラインとの交点座標成分データからベクトルの向きを検出し、その向きに応じて塗りわけ制御をかけることにより、その塗りつぶす領域上で塗りつぶされない部分が発生することをなくすことができ、きめの細かい塗りつぶし画像を作成することができる。ここでいう、ベクトルの向きに応じて塗りわけ制御をかけることとは、例えばベクトルが下向き（以下、ダウンエッジという。）の場合にはその向きに応じた塗りつぶしパターンが採用され、逆に上向き（以下、アップエッジという。）の場合には別の塗りつぶしパターンが採用されて、別々に塗りつぶし処理が行われるというようなことである。
【００１２】
この発明に係る２次元パターン生成方法におけるベクトルとしては、次のようなものが考えられる。即ち、前記ベクトルが反時計回りで表現されている場合、前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は反転、前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は非反転、前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は反転とするものである。
【００１３】
一方、前記ベクトルが時計回りで表現されている場合、前記基準点よりも左側に位置する下向きベクトルと走査ラインとの交点の画素は非反転、前記基準点よりも右側に位置する下向きベクトルと走査ラインとの交点の画素は反転、前記基準点よりも左側に位置する上向きベクトルと走査ラインとの交点の画素は反転、前記基準点よりも右側に位置する上向きベクトルと走査ラインとの交点の画素は非反転とするものである。
【００１４】
【発明の実施の形態】
以下、図面を参照して、この発明の好ましい実施の形態について説明する。
図１は、この発明の一実施例に係る２次元パターン生成装置の基本構成を説明するためのブロック図である。
【００１５】
ＣＰＵ１は、水平方向をＸ方向、垂直方向をＹ方向として塗りつぶしの対象図形を構成するベクトルの各始点，終点、例えば（Ｘ０，Ｙ０），（Ｘ１，Ｙ１），（Ｘ２，Ｙ２），．．．，（Ｘｎ，Ｙｎ）等のデータを出力する。ＣＰＵ１から出力される図形データとしてのベクトルは、インターフェイス２を介して２次元パターン計算部３に供給されている。２次元パターン計算部３では、ＣＰＵ１から供給されたベクトルに基づき塗りつぶす領域を論理演算により算出する。算出された塗りつぶし領域は、２次元描画部４に入力され、そこで例えばビデオＲＡＭ（ＶＲＡＭ）等に描画され塗りつぶし処理が施される。２次元描画部４は、塗りつぶし処理を実行する際に逐次ローカルメモリ５に２次元パターン計算部３から送られてきたデータを書き込み保存し、書き込みの際には、既に書き込まれているデータと新しく書き込まれるデータとの論理演算を行っている。ローカルメモリ５は、２次元描画部４からのデータを保存・出力し、そのデータは１バイト毎の単位でアクセスされるようローカルメモリ５内の記憶領域に構築されている。なお、２次元パターン計算部３と２次元描画部４とでこの発明における描画処理手段が構成されている。
【００１６】
次に、上記の２次元パターン計算部３を詳しく説明する。
図２は、２次元パターン計算部３内部の基本構成を示す図である。
【００１７】
ＣＰＵ１から出力され２次元パターン計算部３に入力されたベクトルは、先ず交点計算部６に入力され、ベクトルとスキャンラインとの交点座標等のデータが計算される。計算された交点座標等のデータは、スパン計算部７に出力され、スパン計算部７は、入力された交点座標等のデータに基づき塗りつぶす領域の画素数等を表すスパンデータを算出する。算出されたスパンデータは、スパンモノクローム変換部８に出力され、スパンモノクローム変換部８は、入力されたスパンデータを後段の２次元描画部４で使用されるモノクロームデータ（ローカルメモリ５のアクセスに適したデータ）に変換し、２次元描画部４に出力する。
【００１８】
このように構成された２次元パターン計算部３について更に詳しく説明する。図３は、交点計算部６の処理を示す図である。なお、本実施例では、ベクトルは反時計回りの方向性を持って定義されているものとする。
【００１９】
まず、図３（ａ）に示すように、入力されたベクトルに基づき交点計算部６は、ベクトルＶ０，Ｖ１，Ｖ２，Ｖ３とスキャンラインＹｎとの頂点座標、例えば（Ｘ０，Ｙ０），（Ｘ１，Ｙ１），（Ｘ２，Ｙ２），（Ｘ３，Ｙ３）を取得する。この交点計算部６で取得されるデータは、同図（ｂ）に示すように、上記ベクトルとスキャンラインとの交点のＸ座標値（Ｘ），Ｙ座標値（Ｙ）の他、ベクトルが最初にスキャンラインと交わる点の有無を表すエッジスタートフラグ（ＥＳＦ）、ベクトルが最後にスキャンラインと交わる点の有無を表すエッジエンドフラグ（ＥＥＦ）、２次元パターンを構成する最初のベクトルと最初のスキャンラインとの交点を表すプレーンスタートフラグ（ＰＳＦ）、２次元パターンを構成する最後のベクトルと最後のスキャンラインとの交点を表すプレーンエンドフラグ（ＰＥＦ）、下向きのベクトルを表すダウンフラグ（ＤＷＦ）等がある。このうち、ＤＷＦは、ベクトルの始点のＹ座標値が終点のＹ座標値よりも小さいときに付与される。すなわち、同図（ａ）のベクトルＶ０を例にとると、Ｙ０＜Ｙ１であるからＤＷＦ＝１となっているのが分かる。また、同図（ｃ）は、取得されたデータのうちベクトルＶ０〜Ｖ３に設けられたスキャンラインとの交点ａ〜ｈのフラグの状態を示している。
【００２０】
上記の処理により、交点計算部６で取得されたデータは、次にスパン計算部７に入力される。図４は、スパン計算部７の基本構成を示すブロック図である。
【００２１】
スパン計算部７に入力されたデータのうち、ベクトルとスキャンラインとの交点の座標値Ｘ，Ｙは、それぞれＸＣレジスタ１０及びＹＣレジスタ１２に格納される。また、ＸＭレジスタ１１は、予め２次元パターン計算部３で設定され、図示しない表示装置画面上の所定の基準点のＸ座標値ＸＭを格納する。なお、本実施例では、この基準点のＸ座標値ＸＭでスキャンライン毎にＸＭに対してベクトルのＸ座標値の位置及びそのベクトルの方向を検出することにより、塗りつぶしパターンを適応的に変化させ塗りつぶし処理を行っている。そのため、以後この実施例の２次元パターン計算部３では、常にＸＭ座標値を採用していることとする。
【００２２】
次に、各種フラグデータＥＳＦ，ＰＳＦ，ＥＥＦ，ＰＥＦ，ＤＷＦは、それぞれＥＳＦレジスタ１４，ＰＳＦレジスタ１５，ＥＥＦレジスタ１６，ＰＥＦレジスタ１７，ＤＷＦＣレジスタ１３に格納される。ＸＣレジスタ１０，ＸＭレジスタ１１から出力されたデータ及びＤＷＦＣレジスタ１３から出力されたデータのうちの一部を算術論理ユニット（ＡＬＵ）２２は入力し、演算処理によって塗りつぶしの始まるＸ座標値ＸＳ、塗りつぶしの終わるＸ座標値ＸＥを算出し後段へ出力すると共に、塗りつぶし処理を実行するか否かを決定するフラグデータＦＬＥＮを算出し制御部（ＣＮＴＬ）２３に出力する。
【００２３】
ＹＣレジスタ１２から出力されたデータは、ＹＰレジスタ１８、比較器（Ｙ＿ＣＯＭＰ）２０に入力されると共に、そのデータのうちの一部はそのまま後段へ出力される。ＹＰレジスタ１８は、現在のベクトルとスキャンラインとの交点よりも一つ前に処理されたベクトルとスキャンラインとの交点のＹ座標値を格納するものであり、比較器２０は、ＹＣレジスタ１２及びＹＰレジスタ１８からの出力を取り込み、現在のベクトルとスキャンラインとの交点のＹ座標値と、その一つ前に処理されたベクトルとスキャンラインとの交点のＹ座標値とを比較し、その結果ＹＥＱを制御部（ＣＮＴＬ）２３に出力する。
【００２４】
ＤＷＦＣレジスタ１３から出力されたデータは、ＤＷＦＰレジスタ１９、比較器（ＤＷＦ＿ＣＯＭＰ）２１及び前述のように算術論理ユニット２２に入力される。ＤＷＦＰレジスタ１９は、現在のベクトルとスキャンラインとの交点よりも一つ前に処理されたベクトルとスキャンラインとの交点のＤＷＦフラグデータを格納するものであり、比較器２１は、ＤＷＦＣレジスタ１３及びＤＷＦＰレジスタ１９からの出力を取り込み、現在のベクトルとスキャンラインとの交点のＤＷＦフラグデータと、その一つ前に処理されたベクトルとスキャンラインとの交点のＤＷＦフラグデータとを比較し、その結果ＤＷＦＥＱを制御部（ＣＮＴＬ）２３に出力する。
【００２５】
比較器（Ｙ＿ＣＯＭＰ）２０及び比較器（ＤＷＦ＿ＣＯＭＰ）２１から出力される結果ＹＥＱ及びＤＷＦＥＱは、図５に示すように、比較対象同士が等しいときは１になり、等しくないときは０になる。制御部２３は、レジスタ１４〜１７の出力データと算術論理ユニット２２からの出力データ（ＦＬＥＮ）及び比較器２０，２１からの出力データ（ＹＥＱ，ＤＷＦＥＱ）を入力し、ベクトルとスキャンラインとの現在の交点から算出されたスパンの塗りつぶしを行うかどうかを示すフラグＷＥＮを計算する。
【００２６】
図６は、制御部２３に入力された各データとこのようにして計算されたフラグＷＥＮとの関係を示す図であり、どのような条件でフラグＷＥＮをオン／オフ状態に切替えているのかを表している。
【００２７】
同図によると、例えば図７（ａ），（ｂ）に示すように、先行するベクトルＶａと次のベクトルＶｂとを連結する頂点ｄがスキャンラインＹｎと交わり且つベクトルＶａ，ＶｂがスキャンラインＹｎを境として互いに異なる側に存在する場合、ＦＬＥＮはオンでＰＥＦ，ＰＳＦ，ＥＥＦは０に、ＥＳＦ，ＹＥＱ，ＤＷＦＥＱは１になり、ＦＬＥＮはオンであるがスパンの塗りつぶしを実施するフラグＷＥＮはオフ状態に選択されていることが分かる。これは、ベクトルＶａ側での描画によって得られたパターンをベクトルＶｂ側の描画によって反転させてしまうのを防止するためである。
【００２８】
このようにしてスパン計算部７で計算され、結果として後段に出力されるデータは、図８に示すように、スパンの始まりを示すＸ座標値ＸＳ、スパンの終わりを示すＸ座標値ＸＥ、スパンのＹ座標値Ｙ、２次元描画部４にスパンを書き込むかどうかを示すフラグＷＥＮである。
【００２９】
なお、上記の算術論理ユニット２２は、先ず入力されたＸＣとＸＭとの値を比較し、次にＤＷＦ値が１か０か（下向きか上向きか）を認定して塗りつぶしパターンを決定する。この塗りつぶしパターンは、図９に示すように全部で６通りのパターンがある。例えば、ＸＣ＜ＸＭでＤＷＦ値が１（下向き）のときは、塗りつぶしパターンＮｏ．１が採用されＸ及びＸＭを含むスキャンラインに沿った方向の画素が塗りつぶされるという具合である。即ち、ベクトルが下向き（ダウンエッジ）のときは、パターンＮｏ．１〜Ｎｏ．３が採用され、ベクトルが上向き（アップエッジ）のときは、パターンＮｏ．４〜Ｎｏ．６が採用される。また、この塗りつぶしパターンは、ベクトルのもつ方向性によって変化する。即ち、本実施例のようにベクトルが反時計回りの方向性に定義されているときは図９の通りだが、ベクトルが時計回りの方向性に定義されているときは塗りつぶしパターン１，２，３と４，５，６とが入れ替わった塗りつぶしパターンが採用されるのである。
【００３０】
スパン計算部７で計算されたデータは、次にスパンモノクローム変換部８に入力される。スパンモノクローム変換部８は、入力されたスパンデータを後段の２次元描画部４で使用されるモノクロームデータに変換して出力する役割を担っており、ここで変換され出力されるデータはモノクロームデータといい、図１０に示すようにローカルメモリ５のアドレスを示すデータ（ＡＤＲ）とアドレスに対応したモノクロームパターンを示すデータ（ＤＡＴＡ）とがある。このモノクロームデータは、１画素をローカルメモリ５の１ビットに対応させたデータであり、２次元描画部４を経てローカルメモリ５に保存される。例えば、図１１に示すように、２次元描画部４のメモリ内で１６×１６のパターンで構成された領域では、ローカルメモリ５は１バイト単位毎にアクセスされるものとすると、モノクロームデータは、その１バイト内の各ビットを１画素に対応させたものである。即ち、塗りつぶされている領域R0は、アドレスＡＤＲ（ｎ＋６）のＤＡＴＡ［７：０］ の範囲ではＤＡＴＡ＝ＦＥとあるのでＤＡＴＡ［７：１］の範囲を反転する。このように、スパンモノクローム変換部８では、２次元描画部４及びローカルメモリ５でスパン計算部７からのデータを利用できるようにして整合をとっている。
【００３１】
次に、このようにして構成された本実施例の２次元パターン生成装置の動作について説明する。
【００３２】
図１２（ａ）は、１６×１６のパターン領域にあるベクトルＶ０〜Ｖ３からなる２次元パターンを視覚的に表現した図であり、同図（ｂ）は、ベクトルＶ０〜Ｖ３とスキャンラインＹ０〜Ｙ４との交点をまとめたものである。
【００３３】
先ず、スキャンラインＹ０において、スキャンラインＹ０がベクトルＶ０及びＶ３と交わったときの交点Ｘ００，Ｘ０１についてみると、交点Ｘ００ではスパン計算部７で算出された図９に示す塗りつぶしパターンのうちのＮｏ．２が採用されＸＭの領域が塗りつぶされる。また、交点Ｘ０１では、塗りつぶしパターンＮｏ．５が採用されＸＭの領域は塗りつぶされない。従って、これらの塗りつぶしパターンをＥＸ−ＯＲ論理演算することにより導出された塗りつぶし動作の結果は、図１３に示すようにＸＭ領域を塗りつぶすということになる。
【００３４】
スキャンラインＹ１とベクトルＶ０及びＶ３との交点Ｘ１０，Ｘ１１では、塗りつぶしパターンＮｏ．１及びＮｏ．６が採用されＸ１０からＸＭまでの領域が塗りつぶされると共にＸＭを除いたＸＭからＸ１１までの領域が塗りつぶされる。従って、演算による結果は、図１４に示すようにＸ１０からＸ１１までの領域が塗りつぶされることとなる。
【００３５】
また、スキャンラインＹ２では、ベクトルＶ０，Ｖ１，Ｖ２，Ｖ３との交点Ｘ２０，Ｘ２１，Ｘ２２，Ｘ２３においてそれぞれ塗りつぶしパターンＮｏ．１，Ｎｏ．５，Ｎｏ．２，Ｎｏ．６が採用される。塗りつぶしパターンＮｏ．１のときは、Ｘ２０からＸＭまでの範囲が塗りつぶされ、Ｎｏ．５のときは塗りつぶしは行われない。また、Ｎｏ．２のときは、Ｘ２２（ＸＭ座標値と同一）が塗りつぶされ、Ｎｏ．６のときは、ＸＭを除くＸＭからＸ２３までの範囲が塗りつぶされる。これらの演算による結果は、図１５に示すようにＸＭを除くＸ２０からＸ２３までの範囲が塗りつぶされることとなる。
【００３６】
スキャンラインＹ３では、図１６に示すようにベクトルＶ０〜Ｖ３との交点Ｘ３０，Ｘ３１，Ｘ３２，Ｘ３３においてそれぞれ塗りつぶしパターンＮｏ．１，Ｎｏ．４，Ｎｏ．３，Ｎｏ．６が採用され、Ｘ３０ではＸ３０からＸＭまでの範囲が塗りつぶされ、Ｘ３１ではＸ３１を除くＸ３１からＸＭまでの範囲が塗りつぶされる。Ｘ３２では、ＸＭ及びＸ３２を除くＸＭからＸ３２までの範囲が塗りつぶされ、Ｘ３３ではＸＭを除くＸＭからＸ３３までの範囲が塗りつぶされる。従って、演算の結果により得られる塗りつぶしはＸ３０からＸ３１までの範囲とＸ３２からＸ３３までの範囲となる。
【００３７】
また、スキャンラインＹ４では、ベクトルＶ０〜Ｖ３との交点Ｘ４０，Ｘ４１，Ｘ４２，Ｘ４３においてそれぞれ塗りつぶしパターンＮｏ．１，Ｎｏ．４，Ｎｏ．３，Ｎｏ．６が採用される。Ｘ４０ではＸ４０からＸＭまでの範囲が、また、Ｘ４１ではＸ４１を除くＸ４１からＸＭまでの範囲が塗りつぶされ、Ｘ４２ではＸＭ及びＸ４２を除くＸＭからＸ４２までの範囲が、Ｘ４３ではＸＭを除くＸＭからＸ４３までの範囲が塗りつぶされる。これらを演算し得られた結果は、図１７に示すようにＸ４０及びＸ４１（Ｘ４０，Ｘ４１は同一Ｘ座標値）の範囲とＸ４２及びＸ４３（Ｘ４２，Ｘ４３は同一Ｘ座標値）の範囲とが塗りつぶされることとなる。このような塗りつぶし動作が行われることにより、特に塗りつぶし対象領域の輪郭線上において、塗りつぶされたり塗りつぶされなかったりという塗りつぶし処理のばらつきが皆無となり、塗りつぶしの精度が向上する。
【００３８】
図１８は、このような塗りつぶし処理により塗りつぶされた２次元パターン領域を説明するための図である。
【００３９】
同図のスキャンラインＹｎは、ベクトルＶ０〜Ｖ３と交点Ｘｎ０〜Ｘｎ３で交わっており、図１６で説明したような実施形態の塗りつぶし処理になるため、最終的な塗りつぶしはＸｎ０からＸｎ１までの範囲とＸｎ２からＸｎ３までの範囲となる。この場合ダウンエッジとアップエッジとで塗りつぶしを分けて制御し実行するため、図２２や図２３の従来例で見られたように塗りつぶされない箇所（Ｘｎ０及びＸｎ２がかかる画素）を作り出すことがなく、綺麗な塗りつぶしを得ることができる。また、図１９に示すスキャンラインとベクトルとの交点Ｘｎ０〜Ｘｎ３についての塗りつぶしを図２３で示した従来例と照らし合わせ、反転させる画素数（１枠を一画素）の合計で比較して見てみると、従来例では６＋８＋１６＋１８＝４８画素であるのに対し、本実施例では、７＋４＋３＋６＝２０画素で済むことになり、塗りつぶし処理量も同時に軽減されていることがわかる。従って、精細な塗りつぶしを従来例よりも素早く行うことが可能であるという利点もある。更に、図２３ではＸｎ０及びＸｎ２を含む画素が最終的には塗りつぶされないこととなったが、図１９では塗りつぶしパターンとＥＸ−ＯＲ論理演算との併用により塗りつぶされることとなり、図２０に示すような一画素内に入り込んでしまうような細いベクトルや多角形の頂点部分も塗りつぶしパターンと論理演算との併用により一画素として認識・表示されるので、きめ細かく良好な画像の塗りつぶし結果を得ることができる。
【００４０】
なお、上記実施例では、ベクトルの方向性を反時計回りと定義したが、本発明はこれに限定されるものではなく、例えば時計回りの方向性をもっているものとすれば、図９で示した塗りつぶしパターンＮｏ．１，Ｎｏ．２，Ｎｏ．３とＮｏ．４，Ｎｏ．５，Ｎｏ．６とを入れ替えて採用すれば良いので、ベクトルの方向性にとらわれることなく種々の図形を塗りつぶすことが可能である。
【００４１】
【発明の効果】
以上述べたように、この発明によれば、塗りつぶす領域の塗りつぶし対象図形を構成するベクトルの向きを判断してその向きに応じて塗りわけ制御をかけることにより、塗りつぶし処理のばらつきがない精細な塗りつぶし画像を得ることができるという効果を奏する。
【図面の簡単な説明】
【図１】  この発明の一実施例に係る２次元パターン生成装置の基本構成を示すブロック図である。
【図２】  同装置における２次元パターン計算部の基本構成を示すブロック図である。
【図３】  同部内の交点計算部の処理を説明するための図である。
【図４】  同部内のスパン計算部の基本構成を示すブロック図である。
【図５】  同部内の比較器の出力結果を説明するための図である。
【図６】  同部内の制御部に入力されたデータとフラグＷＥＮとの関係を示す図である。
【図７】  同関係の一実施例をベクトルとスキャンラインとで表した図である。
【図８】  同装置における２次元パターン計算部内のスパン計算部からの出力結果を説明するための図である。
【図９】  同部内の算術論理ユニットで得られる塗りつぶしパターンを説明するための図である。
【図１０】  同装置における２次元パターン計算部内のスパンモノクローム変換部からの出力結果を説明するための図である。
【図１１】  同装置における２次元描画部内のメモリ上に構築されたパターン領域を示す図である。
【図１２】  同パターン領域でのベクトル及びスキャンラインの交点を説明するための図である。
【図１３】  同パターン領域での塗りつぶしと塗りつぶしパターンとの関係を示す図である。
【図１４】  同関係を示す図である。
【図１５】  同関係を示す図である。
【図１６】  同関係を示す図である。
【図１７】  同関係を示す図である。
【図１８】  本発明の他の実施例にかかる２次元パターン生成装置による塗りつぶし処理を説明するための図である。
【図１９】  同装置による塗りつぶし処理を更に詳しく説明するための図である。
【図２０】  同装置による塗りつぶし処理を更に詳しく説明するための図である。
【図２１】  本発明の他の実施例に係る２次元パターン生成装置による塗りつぶしと従来装置による塗りつぶしとを示す図である。
【図２２】  従来装置により塗りつぶされた２次元パターン領域を示す図である。
【図２３】  同装置による塗りつぶし処理を説明するための図である。
【図２４】  同装置による塗りつぶし処理を説明するための図である。
【符号の説明】
１…ＣＰＵ、２…インターフェイス、３…２次元パターン計算部、４…２次元描画部、５…ローカルメモリ、６…交点計算部、７…スパン計算部、８…スパンモノクローム変換部、１０〜１９…レジスタ、２０，２１…比較器、２２…算術論理ユニット、２３…制御部。
【図１】
0004214643.tif 000002
【図２】
0004214643.tif 000003
【図３】
0004214643.tif 000004
【図４】
0004214643.tif 000005
【図５】
0004214643.tif 000006
【図６】
0004214643.tif 000007
【図７】
0004214643.tif 000008
【図８】
0004214643.tif 000009
【図９】
0004214643.tif 000010
【図１０】
0004214643.tif 000011
【図１１】
0004214643.tif 000012
【図１２】
0004214643.tif 000013
【図１３】
0004214643.tif 000014
【図１４】
0004214643.tif 000015
【図１５】
0004214643.tif 000016
【図１６】
0004214643.tif 000017
【図１７】
0004214643.tif 000018
【図１８】
0004214643.tif 000019
【図１９】
0004214643.tif 000020
【図２０】
0004214643.tif 000021
【図２１】
0004214643.tif 000022
【図２２】
0004214643.tif 000023
【図２３】
0004214643.tif 000024
【図２４】
0004214643.tif 000025