(57)【要約】【課題】  アンチエイリアス処理を施した円を単純な演算で高速に描画することができる図形描画装置を提供する。【解決手段】  開始ピクセルの座標及び開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部１と、前処理部１が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部２と、ピクセル生成部２が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部３と、ブレンド係数算出部３が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファ５に保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部４とを備える。【選択図】        図１
2006331209.tif 000002
【特許請求の範囲】
【請求項１】
入力された円の情報に基づいて円の描画を行う図形描画装置において、
入力された円の情報から開始ピクセルの座標及び前記開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部と、
前記前処理部が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部と、
前記ピクセル生成部が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部と、
前記ブレンド係数算出部が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファに保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部とを備えたことを特徴とする図形描画装置。
【請求項２】
ピクセル生成部は、１回の動作で円の一部領域毎に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成し、前処理部からの前記領域毎の描画指示に応じて順次全領域数回起動することにより前記円の全領域のピクセルの座標及びそのピクセルにおける決定変数を生成することを特徴とする請求項１記載の図形描画装置。
【請求項３】
ピクセル生成部は、前処理部が求めた開始ピクセルから順次一定方向のスキャンラインを移動しながら円の外側の輪郭線を越えるまで前記円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成し、この順次処理が完了すると前記スキャンラインに垂直な方向へ移動して次段のスキャンラインにて再び順次処理を実行し、前記順次処理において、生成した基準のピクセルの直前に生成されたピクセルの座標に対して当該順次処理後の次段のスキャンラインに位置するピクセルが前記円の内側の輪郭線よりも前記円の中心側の領域にある場合には前記基準のピクセルを退避させ、当該順次処理の完了の際に前記退避させたピクセルから次段のスキャンラインに移動して再び順次処理を実行することを特徴とする請求項１または請求項２記載の図形描画装置。
【請求項４】
ブレンド係数算出部は、図形がピクセルのどの程度の割合を占めているかを示す占有率を指標とするブレンド係数のテーブルを備え、ピクセル生成部により生成されたピクセルの決定変数から近似した占有率を指標として前記テーブルを引くことによりブレンド係数を求めることを特徴とする請求項１から請求項３のうちのいずれか１項記載の図形描画装置。
【請求項５】
入力された円の情報に基づいて円の描画を行う図形描画装置としてコンピュータを機能させるためのプログラムにおいて、
入力された円の情報から開始ピクセルの座標及び前記開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部、前記前処理部が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部、前記ピクセル生成部が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらいの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部、前記ブレンド係数算出部が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファに保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部として前記コンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アンチエイリアス処理を施した円を描画する図形描画装置及びこの機能をコンピュータに実現させるためのプログラムに関するものである。
【背景技術】
【０００２】
表示画面上に円を描画する従来の方法として、Ｂｒｅｓｅｎｈａｍのアルゴリズムがある（例えば、非特許文献１参照）。Ｂｒｅｓｅｎｈａｍのアルゴリズムでは、円弧上の座標として選択されたピクセルから円弧に沿って次に位置する２つのピクセルのうち、どちらが真の円に近いかを判定し近い方を選択することを繰り返して表示画面上に円を描画する。これにより、単純な演算で円を描画することができる。
【０００３】
また、太い円を描画する方法としては、Ｂｒｅｓｅｎｈａｍのアルゴリズムで円弧上のピクセルを生成し、その座標を始点とする法線ベクトルを描画することにより太い円を描画するものが提案されている（特許文献１参照）。この方法によれば、太さを一定に保ちながら円を描画することができる。
【０００４】
図形の輪郭がギザギザになるのを目立たなくし画質を向上させるための方法としてアンチエリアス処理がある。アンチエイリアス処理の方法としては、例えば解像度の高い図形を描画した後で複数のピクセルの平均を取ることによりギザギザを目立たなくするスーパーサンプリング手法がある（例えば、非特許文献２参照）。
【０００５】
直線にアンチエイリアス処理を施す方法として、例えば特許文献２に開示されるものがある。この方法では、ピクセルの中心から直線までの距離により直線が各ピクセルに占める割合を求め、その割合によりブレンド処理を行うことでギザギザを目立たなくする。
【０００６】
【特許文献１】特開平９−２７００１８号公報
【特許文献２】特開平６−２７４６４１号公報
【非特許文献１】James D.Forey, Andries van Dam, Steven K.Feiner, John F.Hughes共著「コンピュータグラフィックス理論と実践」オーム社、平成１３年３月２３日、ｐ８５−９０
【非特許文献２】Alan Watt著「3D  Computer Graphics Third Edition」ADDISON-WESLEY PUB(Sd)、１９９９年１０月、ｐ４０４−４０６
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来の特許文献１及び非特許文献１による円の描画方法では、アンチエイリアス処理が考慮されていなかった。
【０００８】
また、特許文献１による太い円の描画方法は、円上のピクセルを生成しその座標を始点とする法線ベクトルを描画するため、ピクセルを描画する際にフレームバッファ上の隣接するアドレスが連続してアクセスされることが少ない。このため、例えばフレームバッファとしてＳＤＲＡＭを使用する場合にはバースト転送によりメモリアクセスの高速化を図ることが困難であった。
【０００９】
さらに、非特許文献２のスーパーサンプリング手法によるアンチエイリアス処理では、解像度の高い図形を描画する必要があるため、大容量の記憶領域が必要であり、処理するピクセルの数が増えるため処理の負荷が大きいという問題点があった。
【００１０】
さらに、特許文献２によるアンチエイリアス処理方法を円描画に適用するためには、各ピクセルの中心から円までの距離を求める必要があり、距離を求めるためには平方根等の複雑な演算が必要になるという問題点があった。
【００１１】
この発明は、上記のような課題を解決するためになされたもので、アンチエイリアス処理を施した円を単純な演算で高速に描画することができる図形描画装置及びこの機能をコンピュータに実現させるためのプログラムを得ることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係る図形描画装置は、入力された円の情報から開始ピクセルの座標及び開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部と、前処理部が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部と、ピクセル生成部が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部と、ブレンド係数算出部が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファに保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部とを備えるものである。
【発明の効果】
【００１３】
この発明よれば、入力された円の情報から開始ピクセルの座標及び開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部と、前処理部が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部と、ピクセル生成部が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部と、ブレンド係数算出部が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファに保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部とを備えるので、アンチエイリアス処理を施した円を単純な演算で高速に描画することができるという効果がある。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
図１は、この発明の実施の形態１による図形描画装置の構成を示すブロック図である。本実施の形態１による図形描画装置６は、前処理部１、ピクセル生成部２、ブレンド係数算出部３及びブレンド演算部４から構成される。図形描画装置６により生成されたピクセルデータは、フレームバッファ５に保持される。また、図形描画装置６は、コンピュータに搭載されてそのＣＰＵにより制御される。そして、ＣＰＵから入力された円の情報により図形描画装置６が生成したピクセルデータをフレームバッファ５に保持し、このピクセルデータに基づいて当該コンピュータの表示装置の表示画面上に図形が表示される。
【００１５】
前処理部１は、入力された円の情報から開始ピクセルの座標及び開始ピクセルにおける決定変数を算出する。ピクセル生成部２は、前処理部１で求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成する。ブレンド係数算出部３は、ピクセル生成部２で求めたピクセルについてどのくらいの割合で描画を行うかを示すブレンド係数を算出する。ブレンド演算部４は、ブレンド係数算出手段３で算出されたブレンド係数に基づきブレンド処理を行う。
【００１６】
また、図形描画装置６の構成要素である前処理部１、ピクセル生成部２、ブレンド係数算出部３及びブレンド演算部４は、本発明の趣旨に従う図形描画プログラムをコンピュータに読み込ませてその動作を制御することにより、当該コンピュータ上でソフトウエアとハードウエアが協働した具体的な手段として実現することもできる。なお、コンピュータ自体の構成及びその基本的な機能については、当業者が当該技術分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
【００１７】
図２は、この発明における円の描画方法を説明するための図であり、原点Ｏを中心とし、半径がｒ、線幅がｗの円の一部を表している。ここでは、左下をＸ−Ｙ座標系の原点Ｏと仮定している。また、図示の円は、半径が（ｒ＋ｗ／２）である外側の円（外側の輪郭）と、半径が（ｒ−ｗ／２）である内側の円（内側の輪郭）で囲まれる領域で表すことができる。内側の円と外側の円の方程式は、それぞれ下記式（１）、（２）で表される。
ｘ2＋ｙ2＝（ｙ＋ｗ／２）2      ・・・（１）
ｘ2＋ｙ2＝（ｙ−ｗ／２）2      ・・・（２）
【００１８】
上記式（１）より、ある座標（ｘ，ｙ）のピクセルにおいて下記式（３）が成立する場合、そのピクセルの中心は外側の円の内側にあると判断することができる。
ｘ2＋ｙ2＜（ｙ＋ｗ／２）2      ・・・（３）
【００１９】
また、同様に上記式（２）より、下記式（４）が成立する場合、そのピクセルの中心は内側の円の外側にあると判断することができる。
ｘ2＋ｙ2＞（ｙ−ｗ／２）2      ・・・（４）
【００２０】
上記式（３）と上記式（４）が同時に成立すれば、そのピクセルの中心は、図２中に斜線を施した両円で囲まれる領域に含まれるため描画する円のピクセルであると判断することができる。
【００２１】
ここで、ピクセル（ｘ，ｙ）においてそのピクセルを描画するか否かを判断するための決定変数として下記式（５）を定義する。
ｄ(x,y)＝ｘ2＋ｙ2−ｒ2−（ｗ／２）2      ・・・（５）
【００２２】
上記式（３）と上記式（４）は上記式（５）を代入することにより、それぞれ下記式（６）と下記式（７）で表すことができる。
ｄ(x,y)＜ｒ・ｗ      ・・・（６）
ｄ(x,y)＞−ｒ・ｗ      ・・・（７）
【００２３】
また、ピクセル（ｘ，ｙ）の１つ右のピクセル（ｘ＋１，ｙ）における決定変数は、下記式（８）で表すことができる。
ｄ(x+1,y)
＝（ｘ＋１）2＋ｙ2−ｒ2−（ｗ／２）2＝ｄ(x,y)＋２ｘ＋１      ・・・（８）
【００２４】
同様に、ピクセル（ｘ，ｙ）の１つ下のピクセル（ｘ，ｙ−１）における決定変数は、下記式（９）で表すことができる。
ｄ(x,y-1)＝ｄ(x,y)−２ｙ＋１      ・・・（９）
【００２５】
以上のように、最初のピクセルの決定変数を求めれば、残りのピクセルの決定変数はシフトと加算によって求めることができる。そして、各ピクセルについて上記式（６）と上記式（７）が同時に成立する場合にそのピクセルを描画することにより円を描画することができる。また、中心が原点Ｏではない円の場合には、ピクセルを描画する際に円の中心の座標を加算すればよい。
【００２６】
次に動作について説明する。
図形描画装置６は、自装置６が搭載されたコンピュータのＣＰＵから円の情報として中心の座標、半径、線幅及び描画色等の情報が設定され、起動命令を受けることにより動作を開始する。起動命令を受けると、先ず、前処理部１が、開始ピクセルの座標及び開始ピクセルにおける決定変数を算出する。
【００２７】
図３及び図４は、前処理部１による処理を説明するための図である。図示の例では、ＣＰＵから設定された半径をｒ、線幅をｗとする。前処理部１は、図３に示すように、円の中心が原点ＯであるＸＹ座標を仮定し、ＸＹ座標が共に正の領域（領域１）について処理を行う。このとき、前処理部１は、開始ピクセルの座標として、決定変数の計算が単純になり、かつ後述するピクセル生成部２における処理を効率よく行うために、Ｘ座標に０を選択し、Ｙ座標に最も円の中で大きいＹ座標を選択する。
【００２８】
また、アンチエイリアス処理を施した円を描画する場合、図形の輪郭付近ではピクセルの中心が円に含まれていない場合でも描画をする必要がある。このため、前処理部１が、線幅が（ｗ＋１）である円を想定してピクセルを描画するか否かを判定することとする。すなわち、上記式（５）におけるｗに（ｗ＋１）を代入した下記式（１０）を決定変数とする。
ｄ(x,y)＝ｘ2＋ｙ2−ｒ2−｛（ｗ＋１）／２｝2      ・・・（１０）
【００２９】
図４（ａ）に示すように、線幅ｗが奇数の場合では、開始ピクセルのＸ座標に０を選択し、Ｙ座標をｒ＋（ｗ＋１）/２とする。この開始ピクセルにおける決定変数は、その座標を上記式（１０）へ代入することにより下記式（１１）で求められる。
ｄ(0,r+(w+1)/2)＝ｒ・（ｗ＋１）      ・・・（１１）
【００３０】
また、図４（ｂ）に示すように、線幅ｗが偶数の場合には、開始ピクセルのＸ座標に０を選択し、Ｙ座標は整数にするために（ｒ＋ｗ/２）とする。この開始ピクセルにおける決定変数は、下記式（１２）で求められる。
ｄ(0,r+w/2)＝ｒ・ｗ−ｗ／２−１／４      ・・・（１２）
【００３１】
上述のように、開始ピクセルにおける決定変数は、乗算と加減算とシフトで求めることができる。前処理部１は、上記処理により開始ピクセルの座標及び開始ピクセルにおける決定変数を求めると、ピクセル生成部２に対して出力し、領域１に描画を行うことを指示してピクセル生成部２を起動する。
【００３２】
ピクセル生成部２では、前処理部１からの指示により動作を開始する。図５及び図６はピクセル生成部の処理を説明するための図である。図６に示すように、ピクセル生成部２は、開始ピクセルから順にスキャンライン毎に右方向（Ｘ軸の正方向）へピクセルを生成する。
【００３３】
図５に示すピクセル生成部の処理についてのフローチャートを用いてピクセル生成処理を説明する。
先ず、ピクセル生成部２は、前処理部１から入力された開始ピクセルを現在のピクセルとして処理の対象に設定する（ステップＳＴ１）。次に、現在のピクセルを退避させるか否かを示すフラグを“１”にセットする（ステップＳＴ２）。この後、ピクセル生成部２は、以下のステップＳＴ３からステップＳＴ１０までの処理により１スキャンラインの処理を行う。
【００３４】
ステップＳＴ３において、ピクセル生成部２は、フラグが“１”であるか否かを判定する。このとき、フラグが“１”である場合には現在のピクセルの座標及びその決定変数を一時的に退避させる（ステップＳＴ４）。また、フラグが“０”であれば、退避させずにステップＳＴ５の処理へ進む。なお、最初のピクセルを処理する時点ではフラグが“１”に設定されているため、必ず現在のピクセルを退避させることになる。
【００３５】
次に、ピクセル生成部２は、現在のピクセルを描画する必要があるか否かを判定する（ステップＳＴ５）。ここでは、線幅が（ｗ＋１）である円を想定してピクセルを生成するため、ピクセルを描画するか否かの判定は、下記式（１３）及び下記式（１４）を用いて行う。
ｄ(x,y)＜ｒ・（ｗ＋１）      ・・・（１３）
ｄ(x,y)＞−ｒ・（ｗ＋１）      ・・・（１４）
【００３６】
上記式（１３）と上記式（１４）が共に成立する場合は、現在のピクセルを描画する必要があるため、現在のピクセルの座標及び現在のピクセルにおける決定変数をブレンド係数算出部３へ出力する（ステップＳＴ６）。また、ピクセル生成部２は、前処理部１が中心を原点Ｏとした円を想定して処理を行っているため、出力する際にスクリーン上の実際の座標へ変換する。ここでは、領域１に対して描画を行うため、円の中心の座標に生成したピクセルの座標を加算することによりスクリーン上の座標へ変換する。
【００３７】
一方、上記式（１３）及び上記式（１４）のいずれかが不成立である場合、現在のピクセルは描画する必要が無いため、ピクセル生成部２は、ブレンド係数算出部３へ出力せずに次のステップＳＴ７の処理へ進む。
【００３８】
なお、上記式（１３）及び上記式（１４）におけるｒ・（ｗ＋１）の値は、ピクセルの座標に無関係であるため、毎回計算する必要は無く、最初に一度だけ計算すればよい。
【００３９】
次に、ピクセル生成部２は、現在のピクセルの１つ下のピクセルが内側の円の内側（円の内側の輪郭を境として円の中心側の領域）にあるか否かを判定する（ステップＳＴ７）。現在のピクセルの座標を（ｘ，ｙ）とすると、座標が（ｘ，ｙ−１）となる１つ下のピクセルの決定変数は、上記式（９）で表されるため、この判定は下記式（１５）に従って行う。このとき、下記式（１５）の関係が成立すれば、ピクセル生成部２は、フラグを“０”にクリアする（ステップＳＴ８）。
ｄ(x,y)−２ｙ＋１＞−ｒ・ｗ      ・・・（１５）
【００４０】
上述したステップＳＴ３からステップＳＴ８までの処理により１ピクセルの処理が行われる。
【００４１】
１ピクセルの処理が完了すると、ピクセル生成部２は、どのピクセルの処理を行うかを判断する。そのため、ピクセル生成部２は、現在のピクセルが外側の円よりも外側（円の外側の輪郭を境として円の中心とは反対側の領域）にあるか否かを判定する（ステップＳＴ９）。この判定には、ステップＳＴ５で使用した上記式（１３）による判定結果を用いることができる。
【００４２】
このとき、上記式（１３）が成立すると判定されると、ピクセル生成部２は、現在のスキャンラインにおいて現在のピクセルよりも右（Ｘ軸の正方向）に描画すべきピクセルが存在する可能性があるため、現在のピクセルを右に移動する（ステップＳＴ１０）。右のピクセルにおける決定変数は、上記式（８）に従って求める。
【００４３】
ステップＳＴ１０においてピクセルを移動すると再びステップＳＴ３の処理へ戻り、１ピクセルの処理を行う。ステップＳＴ１０で右（Ｘ軸の正方向）のピクセルに移動した場合、ステップＳＴ３のフラグの判定において、このフラグは、右に移動したピクセルの座標を（ｘ，ｙ）とすると座標（ｘ−１，ｙ−１）に位置する左下のピクセルが内側の円の内側であれば“１”、外側であれば“０”となる。このため、“１”であれば１つ下のスキャンラインにおいてピクセル（ｘ，ｙ−１）よりも左（Ｘ軸の負方向）に描画すべきピクセルが存在しないことを意味している。
【００４４】
ステップＳＴ９において、現在のピクセルが外側の円よりも外側（円の外側の輪郭を境として円の中心とは反対側の領域）にあると判定されると、現在のスキャンラインで現在のピクセルよりも右に描画すべきピクセルが存在しない。このため、ピクセル生成部２は、右方向の移動を終了し、現在のＹ座標が最終値であるか否かを判定する（ステップＳＴ１１）。なお、領域１におけるＹ座標の最終値は０である。
【００４５】
Ｙ座標が最終値でなければ１つ下のスキャンラインのピクセルを生成する必要があるため、ステップＳＴ４において退避させておいたピクセルを基点に下のピクセルへ移動する（ステップＳＴ１２）。下のピクセルにおける決定変数は、上記式（９）により求める。
【００４６】
下のピクセルへ移動したら再びステップＳＴ２へ戻り、ステップＳＴ３からステップＳＴ１０までの処理により１スキャンラインのピクセルを生成する。また、ステップＳＴ１１において、Ｙ座標が最終値であれば処理を終了する。
【００４７】
ブレンド係数算出部３は、ピクセル生成部２からピクセルの座標及び決定変数を入力されると、図形がそのピクセルのどのくらいの割合を占めているかを示す占有率を求める。図７は、ブレンド係数算出部による処理の流れをフローチャートであり、ブレンド係数の算出処理を説明する。
【００４８】
先ず、ブレンド係数算出部３は、入力されたピクセルが内側の円よりも外側の円に近いか否かを予想する（ステップＳＴ１３）。これは、決定変数が正であれば外側の円、負であれば内側の円が近いと予想することができる。ここで、外側の円の方が近いと判定されると、ブレンド係数算出部３は、ピクセルの中心と外側の円との距離により占有率を求める（ステップＳＴ１４）。
【００４９】
図８及び図９は、ステップＳＴ１４における占有率の算出方法を説明するための図である。図８（ａ）に示すように、ピクセルの中心が外側の円上にある場合には占有率ｃｖを０．５とする。また、図８（ｂ）のように、ピクセルの中心が外側の円の内側にある場合には、０．５にピクセルの中心と外側の円との距離を足した値を占有率ｃｖとする。図８（ｂ）の例では、距離が０．２であり、占有率ｃｖが０．７となる。さらに、図８（ｃ）に示すように、ピクセルの中心が外側の円の外側にある場合には、０．５からピクセルの中心と外側の円との距離を引いた値を占有率ｃｖとする。図８（ｃ）では、距離が０．２であり占有率ｃｖが０．３となる。
【００５０】
原点Ｏを中心とする円で座標（ｘ，ｙ）における占有率ｃｖは、図９より下記式（１６）で表すことができる。
【数１】
2006331209.tif 000003
【００５１】
占有率ｃｖはピクセル毎に求める必要があるため、演算量を削減するために近似により求めることとする。まず、上記式（１６）を下記式（１７）に変形する。
【数２】
2006331209.tif 000004
【００５２】
上記式（１７）において、｛ｒ＋（ｗ＋１）／２｝を左辺へ移項し、両辺を２乗してまとめると、下記式（１８）になる。
【数３】
2006331209.tif 000005
【００５３】
上記式（１８）において、外側の円すなわち図形の輪郭周辺のピクセルにおける占有率ｃｖは１．０以下となる。そのため、右辺の分母のｃｖは無視できるほど小さいものとし、下記式（１７）で近似することとする。また、下記式（１９）に上記式（１０）を代入することにより下記式（２０）の関係が得られる。
【数４】
2006331209.tif 000006
【００５４】
ステップＳＴ１３において、入力されたピクセルが内側の円に近いと判定されると、ブレンド係数算出部３は、同様にしてピクセルの中心と内側の円との距離により占有率ｃｖを求める（ステップＳＴ１５）。
【００５５】
図１０及び図１１は、ステップＳＴ１５における占有率の算出方法を説明するための図である。図１０（ａ）に示すように、ピクセルの中心が内側の円上にある場合には占有率ｃｖを０．５とする。また、図１０（ｂ）に示すように、ピクセルの中心が内側の円の内側にある場合では、０．５からピクセルの中心と外側の円との距離を引いた値を占有率ｃｖとする。
【００５６】
図１０（ｂ）の例では、距離が０．２であり、占有率ｃｖが０．３となる。さらに、図１０（ｃ）に示すように、ピクセルの中心が内側の円の外側にある場合には、０．５にピクセルの中心と外側の円との距離を足した値を占有率ｃｖとする。図１０（ｃ）の例では、距離が０．２であり、占有率ｃｖが０．７となる。
【００５７】
原点Ｏを中心とする円で座標（ｘ，ｙ）における占有率ｃｖは、図１１より下記式（２１）で表すことができる。なお、ここでは、下記式（２１）を近似して下記式（２２）で表すこととする。
【数５】
2006331209.tif 000007
【００５８】
上述のようにして占有率ｃｖを求めると、ブレンド係数算出部３は、求めた占有率ｃｖが１．０以上か否かを判定する（ステップＳＴ１６）。ここで、占有率が１．０以上であれば、そのピクセルは図形に完全に含まれていると判断し、ブレンド係数算出部３は、ブレンド係数を１．０に設定する（ステップＳＴ１７）。
【００５９】
また、占有率ｃｖが１．０未満であれば、ブレンド係数算出部３は、占有率ｃｖを指標としてテーブルを引くことによりブレンド係数を求める（ステップＳＴ１８）。アンチエイリアス処理により画質を向上させるためには占有率に対してガンマ補正を施す必要がある。本実施の形態１では、このガンマ補正による演算量を減らすために、予め占有率に対応するガンマ補正済みのブレンド係数をテーブルに用意しておくこととする。
【００６０】
なお、ステップＳＴ１６における判定は、実際に上記式（２０）及び上記式（２２）における除算を行わずに、分子と分母の比較により判定することができる。また、例えばブレンド係数のテーブルを１６エントリとすると、ステップＳＴ１８において指標となる占有率は４ビットあれば十分であるため、上記式（２０）及び上記式（２２）における除算は４回の減算により実現することができる。
【００６１】
ブレンド係数算出部３は、ステップＳＴ１３からステップＳＴ１８までの処理により入力されたピクセルにおけるブレンド係数を求めると、そのピクセルの座標及びブレンド係数をブレンド演算部４へ出力する。
【００６２】
ブレンド演算部４は、ブレンド係数算出部３から入力されたブレンド係数に基づき、入力されたピクセルとフレームバッファ５に保持されて既に描画されているピクセルとの間でブレンド処理を行い、フレームバッファへ書き戻す。このブレンド処理には、既存のアルファブレンド処理技術を用いる。
【００６３】
以上の処理により、図１２のように、図３の領域１に対応する円を描画することができる。一方、前処理部１は、ピクセル生成部２が動作を終了すると、領域２に対して描画を行うことを指示して再びピクセル生成部２を起動する。
【００６４】
ピクセル生成部２は、前処理部１からの指示により再び動作を開始する。このとき、ピクセル生成部２は、領域２に対して描画を行うことを指示されているため、ステップＳＴ６においてピクセルを出力する際に、円の中心のＸ座標から現在のピクセルのＸ座標を引いた値を、出力するピクセルのＸ座標とし、円の中心のＹ座標に現在のピクセルのＹ座標を足した値を、出力するピクセルのＹ座標とする。また、同じピクセルが複数回描画されるのを防ぐために、ステップＳＴ５において現在のピクセルのＸ座標が０であれば、ピクセルを出力しないように判定を行う。
【００６５】
領域２に対するピクセル生成部２の処理が終了すると、前処理部1は、領域３に対して描画を行うことを指示して再びピクセル生成部２を起動する。ピクセル生成部２は、前処理部１からの指示により再び動作を開始する。このとき、ピクセル生成部２は、領域３に対して描画を行うことを指示されているため、ステップＳＴ６においてピクセルを出力する際に、円の中心のＸ座標に現在のピクセルのＸ座標を足した値を、出力するピクセルのＸ座標とし、円の中心のＹ座標から現在のピクセルのＹ座標を引いた値を、出力するピクセルのＹ座標とする。また、同じピクセルが複数回描画されるのを防ぐために、ステップＳＴ１１においてＹ座標が１であれば、Ｙ座標の最終値であると判定を行う。
【００６６】
領域３に対するピクセル生成部２の処理が終了すると、前処理部1は、領域４に対して描画を行うことを指示して再びピクセル生成部２を起動する。ピクセル生成部２は、前処理部１からの指示により再び動作を開始する。このとき、ピクセル生成部２は、領域４に対して描画を行うことを指示されているため、ステップＳＴ６においてピクセルを出力する際に、円の中心のＸ座標から現在のピクセルのＸ座標を引いた値を、出力するピクセルのＸ座標とし、円の中心のＹ座標から現在のピクセルのＹ座標を引いた値を、出力するピクセルのＹ座標とする。また、同じピクセルが複数回描画されるのを防ぐために、ステップＳＴ５において現在のピクセルのＸ座標が０であればピクセルを出力しないように判定を行い、ステップＳＴ１１においてＹ座標が１であれば、Ｙ座標の最終値であると判定を行う。
【００６７】
領域１から４の全ての領域に対する描画が終了すると、図形描画装置６は動作を終了する。
【００６８】
以上のように、この実施の形態１によれば、入力された円の情報から開始ピクセルの座標及び開始ピクセルにおいてピクセルを描画するか否かを判定するための決定変数を算出する前処理部１と、前処理部１が求めた開始ピクセルから順次円に含まれるピクセルの座標及びそのピクセルにおける決定変数を生成するピクセル生成部２と、ピクセル生成部２が生成したピクセルの座標及び決定係数に基づいて、そのピクセルをどのくらの割合で描画するかを表すブレンド係数を算出するブレンド係数算出部３と、ブレンド係数算出部３が算出したブレンド係数に基づき、描画しようとしているピクセルとフレームバッファ５に保持された描画されているピクセルとの間でブレンド処理を行うブレンド演算部４とを備えるので、単純な演算でアンチエイリアス処理を施した円を高速に描画することができるという効果がある。また、ピクセル生成部２が、Ｘ座標の連続するピクセルを連続して生成するように構成したため、例えばフレームバッファ５にＳＤＲＡＭを使用する場合であってもバースト転送機能を有効に活用することができるという効果がある。
【図面の簡単な説明】
【００６９】
【図１】この発明の実施の形態１による図形描画装置の構成を示すブロック図である。
【図２】この発明における円の描画方法を説明するための図である。
【図３】描画対象の円を示す図である。
【図４】円の線幅に応じた開始ピクセルの選択を説明するための図である。
【図５】ピクセル生成部の処理についてのフローチャートである。
【図６】ピクセル生成部によるピクセル生成及びピクセル退避を説明するための図である。
【図７】ブレンド係数算出部による処理の流れをフローチャートである。
【図８】ピクセルと外側の円との距離から占有率を求める処理を説明するための図である。
【図９】ピクセルと外側の円との距離から占有率を求める処理を説明するための図である。
【図１０】ピクセルと内側の円との距離から占有率を求める処理を説明するための図である。
【図１１】ピクセルと内側の円との距離から占有率を求める処理を説明するための図である。
【図１２】実施の形態１の図形描画装置による円の一部の描画例を示す図である。
【符号の説明】
【００７０】
１  前処理部、２  ピクセル生成部、３  ブレンド係数算出部、４  ブレンド演算部、５  フレームバッファ、６  図形描画装置。
【図１】
2006331209.tif 000008
【図２】
2006331209.tif 000009
【図３】
2006331209.tif 000010
【図４】
2006331209.tif 000011
【図５】
2006331209.tif 000012
【図６】
2006331209.tif 000013
【図７】
2006331209.tif 000014
【図８】
2006331209.tif 000015
【図９】
2006331209.tif 000016
【図１０】
2006331209.tif 000017
【図１１】
2006331209.tif 000018
【図１２】
2006331209.tif 000019