(57)【特許請求の範囲】
【請求項１】
多角形の輪郭線を構成するドットを除いて多角形の内部を塗りつぶす輪郭線無し多角形描画部と、
前記多角形の輪郭線を構成するドットに対してアンチエイリアス処理を施すアンチエイリアス輪郭線描画部と、
前記輪郭線無し多角形描画部と前記アンチエイリアス輪郭線描画部によって設定される前記多角形の色データを格納するフレームメモリとを備え、
前記アンチエイリアス輪郭線描画部は、
前記多角形の輪郭線部分を構成する各ドットについて、整数部および小数部からなるＸ座標値を生成するＸ座標生成部と、
前記多角形の輪郭線部分を構成する各ドットについて、整数部および小数部からなるＹ座標値を生成するＹ座標生成部と、
前記Ｘ座標値またはＹ座標値の小数部と、着目している輪郭線に対する前記多角形の内部の位置関係とから、各ドットに占める図形部分の割合を定め、これを透過度として、前記Ｘ座標値およびＹ座標値の整数部に対応する前記フレームメモリに予め格納されている色データと、前記多角形の色データとを半透明処理する半透明処理部とを備え、
前記輪郭線と多角形の内部の位置関係は、前記輪郭線が右回りの場合であるか前記輪郭線が左回りの場合であるかと、前記輪郭線の傾きとに基づいて求めることを特徴とする図形描画装置。
【請求項２】
前記輪郭線の傾きとＸ座標の変位量とＹ座標の変位量に基づいて半透明処理を行う請求項１に記載の図形描画装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・グラフィックスの分野における、図形の輪郭部分にあらわれる階段状のギザギザ（ジャギー）現象による不自然さ（エイリアス）を除去するためのアンチエイリアス処理を行ない、図形を高品質に描画する装置に関する。
【０００２】
【従来の技術】
従来、アンチエイリアス描画方式として、物体が画素に占める面積率から物体の色と背景の色との平均をとって画素の色を決定する方式が、太田昌孝著の応用グラフィックス（ｐ．１３６〜ｐ．１３９）に示されている。
【０００３】
また、別のアンチエイリアス描画方式として、まずエイリアスのついたポリゴンを描画し、その後アンチエイリアス処理を施した直線をポリゴンの輪郭部分に対応させて描画して、アンチエイリアスされたポリゴンを描画する方式が、特開平７−２８２２７４号公報に開示されている。
【０００４】
図１５は、かかる従来のアンチエイリアス描画方式を実現するためのグラフィックス表示装置のブロック図である。図１５において、１はエイリアス付き２次元ポリゴンの生成を行なうポリゴン生成回路、２は色データを格納するためのフレームメモリ、３はアンチエイリアスされたポリゴンのエッジピクセルの生成を行なうアンチエイリアス直線生成回路、４はアンチエイリアス直線生成回路３からのデータとフレームメモリ２からのデータを半透明処理するアルファブレンダ、５はフレームメモリ２へのピクセルの書き込み制御を行なう描画制御回路である。なお、本明細書における色データとは、色を表すのに必要なＲＧＢ値を持ったものである。
【０００５】
以下に、上記構成における動作を説明する。
【０００６】
まず、ポリゴン生成回路１は、ポリゴンを構成する左エッジと右エッジをディジタル微分解析（以下、ＤＤＡと称する）により求め、左エッジと右エッジで挟まれたピクセルの座標、そのＲＧＢ値をスキャンライン方向に順次生成する。ここで生成されたピクセルのＲＧＢ値は、描画制御回路５からの書き込み制御により、フレームメモリ２に書き込まれる。
【０００７】
一方、アンチエイリアス直線生成回路３は、ポリゴン生成回路１で生成されたものと同一のポリゴンのアンチエイリアスされた辺の座標、そのＲＧＢ値、および透明度を生成する。この際、真の直線をまたがって隣接する２ピクセルの中心から真の直線までの距離をそれぞれ求め、それをもとにそれぞれのピクセルの透明度を決定する。
【０００８】
アンチエイリアス直線生成回路３で生成されたピクセルのＲＧＢ値は、アルファブレンダ４により、フレームメモリ２のデータと半透明処理され、フレームメモリ２に書き込まれる。ここで、書き込みの制御は、描画制御回路５により行なう。
【０００９】
最後に、フレームメモリ２に書き込まれたアンチエイリアスポリゴンの画像がディスプレイ６に表示される。
【００１０】
【発明が解決しようとする課題】
従来のアンチエイリアス描画方式で、図１６に示すように、各頂点座標がＰ１（６，０）、Ｐ２（０，２）、Ｐ３（７，７）の三角形を描画した場合、エイリアスの付いたポリゴンは図１７のようになり、アンチエイリアス処理を施したポリゴンの辺は図１８のようになる。図１８の中で、ピクセルのハッチングが濃いほど透過度が低い、すなわち背景色に対するポリゴンの色の割合が高いことを示す。図１９は、図１７のエイリアスポリゴンと図１８のアンチエイリアス辺を重ね合わせたもので、アンチエイリアスされたポリゴンを表している。
【００１１】
図１９中、（Ｘ，Ｙ）＝（１，３）、（７，４）、（７，５）、（７，６）の座標の各ピクセルはエイリアスが残ってしまっている。これは、エイリアスポリゴンとアンチエイリアス辺とでピクセルの重なりがあるためである。
【００１２】
また、アンチエイリアス直線を生成する際、真の直線をまたがって隣接する２ピクセルに対して半透明処理を施すため、８点連結（Ｘ６８０００マシン語プログラミング、グラフィックス編、村田敏幸著、ｐ．１０６参照）で描かれた直線に対して約２倍のピクセル数を処理する必要があり、処理量が多くなる。
【００１３】
本発明の目的は、上記従来技術の問題を解決し、アンチエイリアスされた任意多角形を高速かつ高品質に描画できる図形描画装置を提供することにある。
【００１４】
【課題を解決するための手段】
前記の目的を達成するため、本発明に係る図形描画装置は、多角形の輪郭線を構成するドットを除いて多角形の内部を塗りつぶす輪郭線無し多角形描画部と、前記多角形の輪郭線を構成するドットに対してアンチエイリアス処理を施すアンチエイリアス輪郭線描画部と、前記輪郭線無し多角形描画部と前記アンチエイリアス輪郭線描画部によって設定される前記多角形の色データを格納するフレームメモリとを備え、前記アンチエイリアス輪郭線描画部は、前記多角形の輪郭線部分を構成する各ドットについて、整数部および小数部からなるＸ座標値を生成するＸ座標生成部と、前記多角形の輪郭線部分を構成する各ドットについて、整数部および小数部からなるＹ座標値を生成するＹ座標生成部と、前記Ｘ座標値またはＹ座標値の小数部と、着目している輪郭線に対する前記多角形の内部の位置関係とから、各ドットに占める図形部分の割合を定め、これを透過度として、前記Ｘ座標値およびＹ座標値の整数部に対応する前記フレームメモリに予め格納されている色データと、前記多角形の色データとを半透明処理する半透明処理部とを備え、前記輪郭線と多角形の内部の位置関係は、前記輪郭線が右回りの場合であるか前記輪郭線が左回りの場合であるかと、前記輪郭線の傾きとに基づいて求めることを特徴とする。
【００１５】
この構成において好ましくは、前記輪郭線の傾きとＸ座標の変位量とＹ座標の変位量に基づいて半透明処理を行う。
【００１７】
上記の構成によれば、輪郭線部分をアンチエイリアス直線で描画する場合、８点連結で直線を描画するため、従来技術に対して処理するピクセル数を減らすことができ、高速化が図れる。
【００１８】
また、多角形内部とアンチエイリアス輪郭線とでピクセルの重なりが生じないため、多角形内部の塗りつぶしとアンチエイリアス輪郭線の描画を並列に行なうことができ、アンチエイリアス多角形を品質良く、高速に描画することができる。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して詳しく説明する。
【００２０】
図１は、本発明の一実施形態による図形描画装置の構成を示すブロック図である。
【００２１】
図１において、２は色データを格納するためのフレームメモリ、６はフレームメモリ２に格納された色データに基づいて図形を表示するためのディスプレイ、７は輪郭線を除いた多角形を描画する輪郭線無し多角形描画部、８は多角形の輪郭線部分に位置するドットに対してアンチエイリアス処理した直線で描画するアンチエイリアス直線描画部である。
【００２２】
図２は、輪郭線無し多角形描画部７の内部構成を示すブロック図である。
【００２３】
図２において、９は図形の輪郭線上の各ドットに垂直属性ドット又は水平属性ドットを割り当てる輪郭線ドット属性設定部、１０は前記割り当てられた属性をドット毎に格納するためのワークメモリ、１１はワークメモリ１０に格納されたドット属性情報を参照して、図形の輪郭部分を除いた内部を構成するドットの各々に色データを設定するための色データ設定部である。
【００２４】
図２に示す輪郭線ドット属性設定部９は、任意のスキャンライン上に存在する垂直属性ドットの数が必ず０又は偶数になるように、図形の輪郭線上の各ドットに垂直属性ドット又は水平属性ドットを割り当てる。そのための具体的な手法としては、特願平１１−１４４８５７号公報（ｐ．６〜ｐ．１１）に開示されている。
【００２５】
図３は、塗りつぶし対象となる図形の具体例を示している。図中のＰ１〜Ｐ５は各々頂点である。輪郭線ドット属性設定部９によって、図３の輪郭線上の各ドットに垂直属性ドット及び水平属性ドットが割り当てられ、図４に示すように、ワークメモリ１０の中に、図形の輪郭線上の各ドットに対する属性情報が書き込まれる。
【００２６】
図２に示す色データ設定部１１は、塗りつぶし対象の図形に外接する矩形の中を、各Ｙ座標毎、Ｘ座標軸正方向にスキャンする。更に、色データ設定部１１は、Ｘ座標軸方向の複数のスキャンラインに順次着目して、着目スキャンライン上の奇数番目の垂直属性ドットと次の偶数番目の垂直属性ドットとの間に位置するドットのうち、垂直属性ドットと水平属性ドットを除く全てに色データを設定する。図４に例示されたスキャンラインＳＬの場合には、座標（２，５）、（３，５）、（６，５）、（７，５）に位置する４個のドットにそれぞれ色データが設定される。
【００２７】
色データ設定部１１により設定されたドット毎の色データは、フレームメモリ２の中に格納され、図５に示すように、輪郭線部分が除かれた多角形が描画される。
【００２８】
図６は、図２に示すアンチエイリアス直線描画部８の内部構成を示すブロック図である。
【００２９】
図６において、１２は輪郭線上の各ドットについて、Ｘ座標値を生成するＸ座標生成部、１３は輪郭線上の各ドットについて、Ｙ座標値を生成するＹ座標生成部、１４は図形の色データと、輪郭線上の座標に対応するフレームメモリ２に格納されている色データとを半透明処理して、新たに生成した色データをフレームメモリ２に書き込む半透明処理部である。
【００３０】
ここで、ある輪郭線の始点から終点へのＸ方向の変位をｄＸ、ｄＸの絶対値を｜ｄＸ｜、Ｙ方向の変位をｄＹ、ｄＹの絶対値を｜ｄＹ｜とする。
【００３１】
Ｘ座標生成部１２は、始点Ｘ座標に四捨五入のための０．５を加算した値に対して、｜ｄＸ｜＜｜ｄＹ｜であればｄＸ／ｄＹを、｜ｄＸ｜≧｜ｄＹ｜かつｄＸが正であれば１を、｜ｄＸ｜≧｜ｄＹ｜かつｄＸが負であれば−１を、ドットを更新する度に加算し、Ｘ座標値として出力する。なお、Ｘ座標値は整数部と小数部を含めて出力される。
【００３２】
Ｙ座標生成部１３は、始点Ｙ座標に四捨五入のための０．５を加算した値に対して、｜ｄＹ｜＜｜ｄＸ｜であればｄＹ／ｄＸを、｜ｄＹ｜≧｜ｄＸ｜かつｄＹが正であれば１を、｜ｄＹ｜≧｜ｄＸ｜かつｄＹが負であれば−１を、ドットを更新する度に加算し、Ｙ座標値として出力する。なお、Ｙ座標値も整数部と小数部を含めて出力される。
【００３３】
例として、図３に示す図形の、Ｐ３（９，７）からＰ４（４，５）までの直線について、Ｘ座標生成部１２とＹ座標生成部１３がそれぞれ出力するＸ座標値、Ｙ座標値を図７に示す。この直線について、ｄＸ＝−５、ｄＹ＝２、ｄＹ／ｄＸ＝−０．４である。
【００３４】
半透明処理部１４は、輪郭線上の各ドット毎のＸ座標値、Ｙ座標値それぞれの整数部に対応するフレームメモリ２に格納されている色データを読み出し、それと図形の色データとを、Ｘ座標値の小数部もしくはＹ座標値の小数部を用いて半透明処理して新たに色データを生成し、フレームメモリ２に書き込む。
【００３５】
図８に、輪郭線が右回りの場合の半透明処理内容を示す。また、図９に、輪郭線が左回りの場合の半透明処理内容を示す。なお、図８および図９中で、ＢＲ、ＢＧ、ＢＢはフレームメモリ２に予め格納されている色データのＲ、Ｇ、Ｂ各成分、ＰＲ、ＰＧ、ＰＢは図形の色データのＲ、Ｇ、Ｂ各成分、ＮＲ、ＮＧ、ＮＢは半透明処理して新たに生成された色データのＲ、Ｇ、Ｂ成分、ＸＤはＸ座標値の小数部、ＹＤはＹ座標値の小数部を示す。
【００３６】
図１０は、輪郭線が右回りの場合の輪郭線に対して図形内部がどこに存在するかを示す図である。また、図１１は、輪郭線が左回りの場合の輪郭線に対して図形内部がどこに存在するかを示す図である。なお、図１０および図１１中でハッチングを施した部分が図形内部である。
【００３７】
図８および図９に示す半透明処理は、輪郭線に対する図形内部の位置関係と、Ｘ座標値、Ｙ座標値の小数部からドットに占める図形の割合を求めることを基にしている。
【００３８】
ここで、具体例として、輪郭線が右回りでｄＸ、ｄＹ共に正、｜ｄＸ｜＞｜ｄＹ｜、ｄＹ／ｄＸ＝０．４である輪郭線の３個のドットを図１２に示す。
【００３９】
（ＰＲ，ＰＧ，ＰＢ）＝（１００，１００，１００）、（ＢＲ，ＢＧ，ＢＢ）＝（１０，１０，１０）として、ＤＯＴ１、ＤＯＴ２、ＤＯＴ３の（ＮＲ，ＮＧ，ＮＢ）をそれぞれ求める。
【００４０】
ＤＯＴ１について、Ｙ座標値の小数部ＹＤは０．５である。これを図８の｜ｄＸ｜≧｜ｄＹ｜、ｄＸが正の場合の処理に当てはめると、
ＮＲ＝１００×０．５＋１０×（１−０．５）＝５５
ＮＧ＝１００×０．５＋１０×（１−０．５）＝５５
ＮＢ＝１００×０．５＋１０×（１−０．５）＝５５
となる。
【００４１】
ＤＯＴ２について、Ｙ座標値の小数部ＹＤは０．９である。これを図８の｜ｄＸ｜≧｜ｄＹ｜、ｄＸが正の場合の処理に当てはめると、
ＮＲ＝１００×０．９＋１０×（１−０．９）＝９１
ＮＧ＝１００×０．９＋１０×（１−０．９）＝９１
ＮＢ＝１００×０．９＋１０×（１−０．９）＝９１
となる。
【００４２】
ＤＯＴ３について、Ｙ座標値の小数部ＹＤは０．３である。これを図８の｜ｄＸ｜≧｜ｄＹ｜、ｄＸが正の場合の処理に当てはめると、
ＮＲ＝１００×０．３＋１０×（１−０．３）＝３７
ＮＧ＝１００×０．３＋１０×（１−０．３）＝３７
ＮＢ＝１００×０．３＋１０×（１−０．３）＝３７
となる。
【００４３】
図１に示すアンチエイリアス直線描画部８は、図形を構成する複数の輪郭線に対して、それぞれの輪郭線の始点から終点の１ドット手前まで、前述した半透明処理を行なう。
【００４４】
アンチエイリアス直線描画部８が、図３に示す図形の輪郭線に対してアンチエイリアス処理を施した結果は、図１３のようになる。図１３中で、ピクセルのハッチングが濃いほど透過度が低い、すなわち背景色に対する多角形の色の割合が高いことを示す。
【００４５】
図３に示す図形にアンチエイリアス処理を施す場合、輪郭線無し多角形描画部７によって、図５に示すように輪郭線部分が除かれた多角形の塗りつぶしが行なわれ、アンチエイリアス直線描画部８によって、図１３に示すように、アンチエイリアス処理した輪郭線が描画され、輪郭線無し多角形とアンチエイリアス輪郭線を重ね合わせることにより、図１４に示すようなアンチエイリアスされた多角形を描画できる。図１４中で、ピクセルのハッチングが濃いほど透過度が低い、すなわち背景色に対する多角形の色の割合が高いことを示す。
【００４６】
【発明の効果】
以上説明したように、本発明によれば、輪郭線部分をアンチエイリアス直線で描画する場合、８点連結で直線を描画するため、従来技術に対して処理するピクセル数を減らすことができ、高速化が図れる。
【００４７】
また、多角形内部とアンチエイリアス輪郭線とでピクセルの重なりが生じないため、多角形内部の塗りつぶしとアンチエイリアス輪郭線の描画を並列に行なうことができ、アンチエイリアス多角形を品質良く、高速に描画することができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態による図形描画装置の構成を示すブロック図
【図２】  図１に示す輪郭線無し多角形描画部７の内部構成を示すブロック図
【図３】  塗りつぶし対象となる図形の具体例を示す図
【図４】  図３に示す図形に対して、輪郭線ドット属性設定部９によって、輪郭線上の各ドットに属性情報が割り当てられた結果を示す図
【図５】  図３に示す図形に対して、色データ設定部１１によって、輪郭線部分が除かれた多角形が描画された結果を示す図
【図６】  図１に示すアンチエイリアス直線描画部８の内部構成を示すブロック図
【図７】  図３に示す図形の、Ｐ３（９，７）からＰ４（４，５）までの直線について、Ｘ座標生成部１２とＹ座標生成部１３がそれぞれ出力するＸ座標値、Ｙ座標値を示す図
【図８】  輪郭線が右回りの場合の半透明処理内容を示す図
【図９】  輪郭線が左回りの場合の半透明処理内容を示す図
【図１０】  輪郭線が右回りの場合の輪郭線に対して図形内部がどこに存在するかを示す図
【図１１】  輪郭線が左回りの場合の輪郭線に対して図形内部がどこに存在するかを示す図
【図１２】  輪郭線が右回りでｄＸ、ｄＹ共に正、｜ｄＸ｜＞｜ｄＹ｜、ｄＹ／ｄＸ＝０．４である輪郭線の３個のドットを示す図
【図１３】  図１に示すアンチエイリアス直線描画部８が、図３に示す図形の輪郭線に対してアンチエイリアス処理を施した結果を示す図
【図１４】  図３に示す図形に対して、本実施形態に係る図形描画装置によってアンチエイリアス処理が施された結果のアンチエイリアス多角形を示す図
【図１５】  従来のアンチエイリアス描画方式を実現するためのグラフィックス表示装置のブロック図
【図１６】  従来のアンチエイリアス描画方式について、描画対象となる図形の具体例を示す図
【図１７】  図１６に示す図形に対して、従来技術で描画されたエイリアスの付いたポリゴンを示す図
【図１８】  図１６に示す図形に対して、従来技術でアンチエイリアス処理を施したポリゴンの辺を示す図
【図１９】  図１６に示す図形に対して、従来技術でアンチエイリアスされたポリゴンを示す図
【符号の説明】
１    ポリゴン生成回路
２    フレームメモリ
３    アンチエイリアス直線生成回路
４    アルファブレンダ
５    描画制御回路
６    ディスプレイ
７    輪郭線無し多角形描画部
８    アンチエイリアス輪郭線描画部
９    輪郭線ドット属性設定部
１０  ワークメモリ
１１  色データ設定部
１２  Ｘ座標生成部
１３  Ｙ座標生成部
１４  半透明処理部
ＤＯＴ１〜ＤＯＴ３  輪郭線上のドット
Ｐ１〜Ｐ５  頂点ドット
ＳＬ  スキャンライン
【図１】
0003898426.tif 000002
【図２】
0003898426.tif 000003
【図３】
0003898426.tif 000004
【図４】
0003898426.tif 000005
【図５】
0003898426.tif 000006
【図６】
0003898426.tif 000007
【図７】
0003898426.tif 000008
【図８】
0003898426.tif 000009
【図９】
0003898426.tif 000010
【図１０】
0003898426.tif 000011
【図１１】
0003898426.tif 000012
【図１２】
0003898426.tif 000013
【図１３】
0003898426.tif 000014
【図１４】
0003898426.tif 000015
【図１５】
0003898426.tif 000016
【図１６】
0003898426.tif 000017
【図１７】
0003898426.tif 000018
【図１８】
0003898426.tif 000019
【図１９】
0003898426.tif 000020