(57)【要約】【課題】  Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインを描画する際に、複数のラインの長さや端点を揃える。【解決手段】  描画装置は、ラインの始点および終点の座標を示す情報を受け、ラインの第１方向の長さがラインの第２方向の長さ以上のとき、第１方向をラインの主方向と判定し、ラインの第１方向の長さがラインの第２方向の長さより短いとき、第２方向をラインの主方向と判定する解析部と、始点を含む画素の主方向の終点側の境界から始点までの距離に基づいて、始点を含む画素を描画するか否かを判定し、終点を含む画素の主方向の始点側の境界から終点までの距離に基づいて、終点を含む画素を描画するか否かを判定する判定部とを有している。【選択図】  図１
2015005087.tif 000002
【特許請求の範囲】
【請求項１】
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置であって、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定する解析部と、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する判定部と
を備えていることを特徴とする描画装置。
【請求項２】
請求項１記載の描画装置において、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離と第１閾値との比較結果に基づいて、前記始点の座標を補正し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離と第２閾値との比較結果に基づいて、前記終点の座標を補正する補正部を備えていることを特徴とする描画装置。
【請求項３】
請求項１または請求項２に記載の描画装置において、
２つの前記ラインのうちの一方のラインの前記終点の座標と、前記２つの前記ラインのうちの他方のラインの前記始点の座標とが同じ座標の場合に、
前記判定部は、前記一方のラインの前記終点を含む前記画素を描画すると判定した場合、前記他方のラインの前記始点を含む前記画素を描画しないと判定する
ことを特徴とする描画装置。
【請求項４】
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画方法であって、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定し、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する
ことを特徴とする描画方法。
【請求項５】
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置を備え、
前記描画装置は、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定する解析部と、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する判定部と
を備えていることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画装置、描画方法およびシステムに関する。
【背景技術】
【０００２】
描画装置は、例えば、２次元行列状に配置された複数の画素を含む表示領域にラインを描画する際、ライン描画用のデータを所定のアルゴリズムにしたがって生成する。ライン描画用のデータを生成するためのアルゴリズムの１つとして、Diamond Exit Ruleが知られている。例えば、Diamond Exit Ruleを適用した場合、画素内に定義したひし形（以下、ダイヤモンド枠とも称する）の中から外に向かう線分を含む画素が描画される。
【０００３】
近年、Diamond Exit Ruleを適用する描画方法において、ラインの端点を補正して、長さが１画素未満のラインの描画を効率よく実現する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−９３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ライン描画では、例えば、Ｘ軸に垂直で互いに同じ長さの複数のラインを描画する場合、複数のラインの始点のＹ座標が互いに同じであれば、ラインのＸ座標に拘わらず、複数のラインの長さおよび端点は、複数のラインで揃っていることが望ましい。例えば、Ｘ軸に垂直で互いに同じ長さの複数のラインをDiamond Exit Rule等のアルゴリズムに基づいて描画する場合、複数のラインの始点のＹ座標が互いに同じであるにも拘わらず、描画される複数のラインの長さや端点が揃わない場合がある。
【０００６】
なお、長さが１画素未満のラインの描画を効率よく実現するためにラインの端点を補正する描画方法では、複数のラインの長さや端点を揃えることを目的としていないため、複数のラインの長さや端点が揃わない場合がある。
【０００７】
１つの側面では、本件開示の描画装置、描画方法およびシステムは、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインを描画する際に、複数のラインの長さや端点を揃えることを目的とする。
【課題を解決するための手段】
【０００８】
一観点によれば、第１方向および第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置は、ラインの始点および終点の座標を示す情報を受け、ラインの第１方向の長さがラインの第２方向の長さ以上のとき、第１方向をラインの主方向と判定し、ラインの第１方向の長さがラインの第２方向の長さより短いとき、第２方向をラインの主方向と判定する解析部と、始点を含む画素の主方向の終点側の境界から始点までの距離に基づいて、始点を含む画素を描画するか否かを判定し、終点を含む画素の主方向の始点側の境界から終点までの距離に基づいて、終点を含む画素を描画するか否かを判定する判定部とを有している。
【０００９】
別の観点によれば、第１方向および第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画方法は、ラインの始点および終点の座標を示す情報を受け、ラインの第１方向の長さがラインの第２方向の長さ以上のとき、第１方向をラインの主方向と判定し、ラインの第１方向の長さがラインの第２方向の長さより短いとき、第２方向をラインの主方向と判定し、始点を含む画素の主方向の終点側の境界から始点までの距離に基づいて、始点を含む画素を描画するか否かを判定し、終点を含む画素の主方向の始点側の境界から終点までの距離に基づいて、終点を含む画素を描画するか否かを判定する。
【００１０】
別の観点によれば、システムは、第１方向および第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置を有し、描画装置は、ラインの始点および終点の座標を示す情報を受け、ラインの第１方向の長さがラインの第２方向の長さ以上のとき、第１方向をラインの主方向と判定し、ラインの第１方向の長さがラインの第２方向の長さより短いとき、第２方向をラインの主方向と判定する解析部と、始点を含む画素の主方向の終点側の境界から始点までの距離に基づいて、始点を含む画素を描画するか否かを判定し、終点を含む画素の主方向の始点側の境界から終点までの距離に基づいて、終点を含む画素を描画するか否かを判定する判定部とを有している。
【発明の効果】
【００１１】
本件開示の描画装置、描画方法およびシステムは、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインを描画する際に、複数のラインの長さや端点を揃えることができる。
【図面の簡単な説明】
【００１２】
【図１】描画装置、描画方法およびシステムの一実施形態を示す図である。
【図２】主軸判定の概要を示す図である。
【図３】描画判定の概要を示す図である。
【図４】図１に示したレジスタ部に設定される閾値の一例を示す図である。
【図５】図１に示した描画装置の動作の一例を示す図である。
【図６】図１に示した描画装置により描画されるラインの一例を示す図である。
【図７】連続するラインの描画の一例を示す図である。
【図８】描画装置、描画方法およびシステムの別の実施形態を示す図である。
【図９】図８に示した補正部による補正処理の一例を示す図である。
【図１０】図８に示した描画装置の動作の一例を示す図である。
【図１１】Ｘ軸を主軸とする正方向ラインに対する補正処理の一例を示す図である。
【図１２】Ｘ軸を主軸とする負方向ラインに対する補正処理の一例を示す図である。
【図１３】Ｙ軸を主軸とする正方向ラインに対する補正処理の一例を示す図である。
【図１４】Ｙ軸を主軸とする負方向ラインに対する補正処理の一例を示す図である。
【図１５】図８に示した補正部により補正される端点の一例を示す図である。
【図１６】描画装置、描画方法およびシステムの別の実施形態を示す図である。
【図１７】描画装置、描画方法およびシステムの別の実施形態を示す図である。
【図１８】図１７に示した描画装置を含むグラフィックチップの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施形態を図面を用いて説明する。
【００１４】
図１は、描画装置、描画方法およびシステムの一実施形態を示している。この実施形態の描画装置１００は、例えば、グラフィックチップに搭載される。描画装置１００が搭載されるグラフィックチップもシステムの一態様である。描画装置１００は、例えば、第１方向および第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、所定のルールに基づいてラインを描画する。第１方向および第２方向は、例えば、表示領域を２次元座標系で表した場合、２次元座標系のＸ軸に沿う方向およびＹ軸に沿う方向に対応する。
【００１５】
例えば、Ｘ軸に垂直な画素境界のＸ座標およびＹ軸に垂直な画素境界のＹ座標は、整数で表される。画素境界は、互いに隣接する画素の境界である。なお、Ｘ軸に垂直な画素境界のＸ座標およびＹ軸に垂直な画素境界のＹ座標は、小数で表されてもよい。以下、Ｘ軸に垂直な画素境界のＸ座標およびＹ軸に垂直な画素境界のＹ座標が整数で表されるものとして説明する。また、以下、軸に沿う方向を軸方向とも称する。例えば、Ｘ軸に沿う方向をＸ軸方向とも称し、Ｙ軸に沿う方向をＹ軸方向とも称する。
【００１６】
ラインを描画する際の所定のルールは、例えば、Diamond Exit Ruleである。なお、描画装置１００は、Diamond Exit Ruleとは別の所定のルール（アルゴリズム）に基づいて、ラインを描画してもよい。以下、ラインを描画する際の所定のルールとしてDiamond Exit Ruleが使用されるものとして説明する。
【００１７】
描画装置１００は、例えば、ラインの頂点データを受け、２次元座標系の表示領域に描画するラインの端点（始点および終点）の座標を算出する。そして、描画装置１００は、ライン描画用のデータをラインの端点の座標に基づいて生成し、表示領域に描画するラインに対応する画素のデータをライン描画用のデータに基づいて生成する。ライン描画用のデータは、例えば、ラインの始点、傾き、長さ等を含むパラメータであり、ラインに対応する画素の色等を内挿で求める際に使用される。
【００１８】
例えば、描画装置１００は、ラインの端点の座標からライン描画用のデータをDiamond Exit Ruleにしたがって生成するラインセットアップ部１０を有している。なお、この実施形態では、ラインセットアップ部１０は、ラインの始点および終点をそれぞれ含む画素に対しては、Diamond Exit Ruleを適用せずに、予め決められた閾値に基づく描画判定（画素を描画するか否かの判定）を実行する。
【００１９】
描画装置１００のラインセットアップ部１０は、例えば、レジスタ部２０、解析部３０および判定部４０を有している。レジスタ部２０は、ラインの始点および終点をそれぞれ含む画素に対する描画判定に使用される閾値を保持する。レジスタ部２０に保持される閾値は、例えば、書き換え可能であり、描画装置１００の外部からＣＰＵ等を介して設定される。これにより、予め決められた閾値がレジスタ部２０に設定される。
【００２０】
解析部３０は、ラインの主方向を判定する解析部の一例である。例えば、解析部３０は、ラインの始点および終点の座標（Ｘ座標、Ｙ座標）を示す情報を受け、ラインの主軸判定の結果およびラインの描画方向の判定結果を判定部４０に出力する。解析部３０は、例えば、主軸判定をライン毎に実行する主軸判定部３２と、ラインの描画方向（正方向、負方向）を判定する方向判定部３４とを有している。
【００２１】
主軸判定部３２は、ラインの第１方向（例えば、Ｘ軸方向）の長さがラインの第２方向（例えば、Ｙ軸方向）の長さ以上のとき、第１方向をラインの主方向と判定する。また、主軸判定部３２は、ラインの第１方向の長さがラインの第２方向の長さより短いとき、第２方向をラインの主方向と判定する。
【００２２】
例えば、主軸判定部３２は、ラインの始点および終点の座標（Ｘ座標、Ｙ座標）を示す情報を受ける。そして、主軸判定部３２は、ラインの始点および終点のＸ座標の差分の絶対値がラインの始点および終点のＹ座標の差分の絶対値以上の場合、Ｘ軸をラインの主軸と判定し、Ｙ軸をラインの副軸と判定する。また、例えば、主軸判定部３２は、ラインの始点および終点のＸ座標の差分の絶対値がラインの始点および終点のＹ座標の差分の絶対値より小さい場合、Ｙ軸をラインの主軸と判定し、Ｘ軸をラインの副軸と判定する。主軸判定の結果は、例えば、方向判定部３４および判定部４０に転送される。
【００２３】
方向判定部３４は、例えば、ラインの始点および終点の座標（Ｘ座標、Ｙ座標）を示す情報と主軸判定の結果とを受け、ラインの終点の主軸座標から始点の主軸座標を引く演算を実行する。そして、方向判定部３４は、演算結果に基づいてラインの描画方向を判定する。
【００２４】
例えば、方向判定部３４は、Ｘ軸が主軸のラインに対しては、終点のＸ座標から始点のＸ座標を引いた値が正の場合、描画方向を正方向と判定し、終点のＸ座標から始点のＸ座標を引いた値が負の場合、描画方向を負方向と判定する。また、例えば、方向判定部３４は、Ｙ軸が主軸のラインに対しては、終点のＹ座標から始点のＹ座標を引いた値が正の場合、描画方向を正方向と判定し、終点のＹ座標から始点のＹ座標を引いた値が負の場合、描画方向を負方向と判定する。描画方向の判定結果は、例えば、判定部４０に転送される。以下、描画方向が正方向であるラインを正方向ラインとも称し、描画方向が負方向であるラインを負方向ラインとも称する。
【００２５】
判定部４０は、ラインの端点を含む画素を描画するか否かを判定する判定部の一例である。例えば、判定部４０は、ラインの始点を含む画素を描画するか否かを判定する始点描画判定部４２と、ラインの終点を含む画素を描画するか否かを判定する終点描画判定部４４とを有している。
【００２６】
始点描画判定部４２は、始点を含む画素を描画するか否かを、Diamond Exit Ruleを適用せずに判定する。例えば、始点描画判定部４２は、ラインの始点の座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果と、レジスタ部２０に保持されている閾値とを受ける。そして、始点描画判定部４２は、始点を含む画素の主方向（主軸に沿う方向）の終点側の境界から始点までの距離が予め決められた第１閾値以上か否かに基づいて、始点を含む画素を描画するか否かを判定する。以下、始点を含む画素の主方向（主軸に沿う方向）の終点側の境界から始点までの距離を、始点から画素境界までの距離とも称する。
【００２７】
例えば、レジスタ部２０に設定されている閾値が基準の長さを示している場合、始点描画判定部４２は、始点から画素境界までの距離がレジスタ部２０から受けた閾値以上か否かに基づいて、始点を含む画素を描画するか否かを判定する。なお、レジスタ部２０に設定されている閾値が基準の長さに対応する主軸座標の小数部を示している場合、始点描画判定部４２は、始点の主軸座標の小数部とレジスタ部２０から受けた閾値とを比較してもよい。すなわち、始点描画判定部４２は、始点の主軸座標の小数部とレジスタ部２０から受けた閾値とを比較することにより、始点から画素境界までの距離が予め決められた第１閾値（基準の長さ）以上か否かを判定してもよい。
【００２８】
終点描画判定部４４は、終点を含む画素を描画するか否かを、Diamond Exit Ruleを適用せずに判定する。例えば、終点描画判定部４４は、ラインの終点の座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果と、レジスタ部２０に保持されている閾値とを受ける。そして、終点描画判定部４４は、終点を含む画素の主方向（主軸に沿う方向）の始点側の境界から終点までの距離が予め決められた第２閾値以上か否かに基づいて、終点を含む画素を描画するか否かを判定する。以下、終点を含む画素の主方向（主軸に沿う方向）の始点側の境界から終点までの距離を、終点から画素境界までの距離とも称する。
【００２９】
例えば、レジスタ部２０に設定されている閾値が基準の長さを示している場合、終点描画判定部４４は、終点から画素境界までの距離がレジスタ部２０から受けた閾値以上か否かに基づいて、終点を含む画素を描画するか否かを判定する。なお、レジスタ部２０に設定されている閾値が基準の長さに対応する主軸座標の小数部を示している場合、終点描画判定部４４は、終点の主軸座標の小数部とレジスタ部２０から受けた閾値とを比較してもよい。すなわち、終点描画判定部４４は、終点の主軸座標の小数部とレジスタ部２０から受けた閾値とを比較することにより、終点から画素境界までの距離が予め決められた第２閾値（基準の長さ）以上か否かを判定してもよい。
【００３０】
このように、描画装置１００は、ラインの主方向を判定する解析部３０と、ラインの端点を含む画素を描画するか否かをDiamond Exit Ruleを適用せずに判定する判定部４０とを有している。例えば、描画装置１００は、Diamond Exit Ruleにしたがってライン描画用のデータを生成する際に、ラインの始点および終点をそれぞれ含む画素を描画するか否かを予め決められた閾値に基づいて判定する。
【００３１】
なお、描画装置１００の構成は、この例に限定されない。例えば、解析部３０は、方向判定部３４を含まずに定義されてもよい。また、例えば、判定部４０は、ラインの始点および終点の座標（Ｘ座標、Ｙ座標）を示す情報を、解析部３０を介して受けてもよいし、解析部３０を介さずに受けてもよい。また、例えば、描画装置１００は、始点を含む画素および終点を含む画素の両方が描画されるように、始点の座標および終点の座標に基づいて閾値を自動的に生成してもよい。あるいは、描画装置１００は、始点を含む画素および終点を含む画素のうちの一方のみが描画されるように、始点の座標および終点の座標に基づいて閾値を自動的に生成してもよい。すなわち、描画装置１００は、始点の座標および終点の座標に基づいて閾値を自動的に生成する演算部を有してもよい。
【００３２】
図２は、主軸判定の概要を示している。図２の例では、２次元行列状に配置された複数の画素ＰＸを含む表示領域ＤＲにラインＬ１０、Ｌ２０が描画される。ラインＬ１０は、Ｘ軸を主軸とするライン（以下、Ｘ主軸ラインとも称する）の一例である。また、ラインＬ２０は、Ｙ軸を主軸とするライン（以下、Ｙ主軸ラインとも称する）の一例である。
【００３３】
図２では、Ｘ座標は、右側にいくほど大きくなり、Ｙ座標は、下側にいくほど大きくなる。図２の丸印は、ラインＬ（Ｌ１０、Ｌ２０）の始点ＳＰ（ＳＰ１０、ＳＰ２０）を示している。また、図２の四角形は、ラインＬ（Ｌ１０、Ｌ２０）の終点ＥＰ（ＥＰ１０、ＥＰ２０）を示している。
【００３４】
例えば、主軸判定部３２は、始点ＳＰおよび終点ＥＰのＸ座標の差分の絶対値をΔＸとし、始点ＳＰおよび終点ＥＰのＹ座標の差分の絶対値をΔＹとした場合、ΔＸ≧ΔＹの条件を満たすラインＬを、Ｘ主軸ラインと判定する。例えば、ラインＬ１０の始点ＳＰ１０のＸ座標から終点ＥＰ１０のＸ座標を引いた値の絶対値ΔＸ１０は、始点ＳＰ１０のＹ座標から終点ＥＰ１０のＹ座標を引いた値の絶対値ΔＹ１０より大きい。したがって、主軸判定部３２は、ラインＬ１０をＸ主軸ラインと判定する。なお、ラインＬ１０は、終点ＥＰ１０のＸ座標から始点ＳＰ１０のＸ座標を引いた値が正であるため、描画方向は、正方向である。
【００３５】
また、主軸判定部３２は、例えば、ΔＸ＜ΔＹの条件を満たすラインＬを、Ｙ主軸ラインと判定する。例えば、ラインＬ２０の始点ＳＰ２０のＸ座標から終点ＥＰ２０のＸ座標を引いた値の絶対値ΔＸ２０は、始点ＳＰ２０のＹ座標から終点ＥＰ２０のＹ座標を引いた値の絶対値ΔＹ２０より小さい。したがって、主軸判定部３２は、ラインＬ２０をＹ主軸ラインと判定する。なお、ラインＬ２０は、終点ＥＰ２０のＹ座標から始点ＳＰ２０のＹ座標を引いた値が負であるため、描画方向は、負方向である。
【００３６】
このように、ラインＬは、Ｘ主軸ラインおよびＹ主軸ラインのいずれかに分類される。なお、Ｘ主軸ラインでは、主軸座標はＸ座標であり、副軸座標はＹ座標である。また、Ｙ主軸ラインでは、主軸座標はＹ座標であり、副軸座標はＸ座標である。
【００３７】
ここで、例えば、描画装置１００は、ライン描画を実行する際、ラインＬの始点ＳＰから終点ＥＰに向かって主軸座標を１ずつ加算し、主軸座標に１を加算する毎にラインの傾きを副軸座標に加算することにより、描画する座標を決定する。ラインＬの傾きは、例えば、ラインＬの副軸方向の変化量をラインＬの主軸方向の変化量で割ることにより算出される。例えば、ラインＬ１０の傾きは、“ΔＹ１０／ΔＸ１０”で表される。また、ラインＬ２０の傾きは、“−ΔＹ２０／ΔＸ２０”で表される。
【００３８】
図３は、描画判定の概要を示している。なお、図３は、Ｘ軸を主軸とする正方向ラインＬに対する描画判定の一例を示している。図３の丸印および四角形の意味は、図２の丸印および四角形の意味と同様である。
【００３９】
符号ＬＮｓは、ラインＬの始点ＳＰを含む画素ＰＸの主軸方向（図３では、Ｘ軸方向）の終点ＥＰ側の境界から始点ＳＰまでの距離を示している。なお、始点ＳＰから画素境界までの距離ＬＮｓは、始点ＳＰを含む画素ＰＸの副軸方向の終点ＥＰ側の境界をラインＬが横切る場合（例えば、図２のラインＬ１０）でも、始点ＳＰを含む画素ＰＸの主軸方向の終点ＥＰ側の境界から始点ＳＰまでの距離である。
【００４０】
したがって、正方向ラインＬの場合、始点ＳＰから画素境界までの距離ＬＮｓは、例えば、始点ＳＰの主軸座標（図３では、Ｘ座標）の小数部を１から引くことにより算出される。また、負方向ラインＬの場合、始点ＳＰから画素境界までの距離ＬＮｓは、例えば、始点ＳＰの主軸座標（図３では、Ｘ座標）の小数部で表される。なお、例えば、Ｘ軸やＹ軸に垂直なラインＬでは、始点ＳＰから画素境界までの距離ＬＮｓは、ラインＬの始点ＳＰを含む画素ＰＸ内のラインＬの主軸方向（図３では、Ｘ軸方向）の長さに対応している。
【００４１】
符号ＬＮｅは、ラインＬの終点ＥＰを含む画素ＰＸの主軸方向（図３では、Ｘ軸方向）の始点ＳＰ側の境界から終点ＥＰまでの距離を示している。なお、終点ＥＰから画素境界までの距離ＬＮｅは、終点ＥＰを含む画素ＰＸの副軸方向の始点ＳＰ側の境界をラインＬが横切る場合でも、終点ＥＰを含む画素ＰＸの主軸方向の始点ＳＰ側の境界から終点ＥＰまでの距離である。
【００４２】
したがって、正方向ラインＬの場合、終点ＥＰから画素境界までの距離ＬＮｅは、例えば、終点ＥＰの主軸座標（図３では、Ｘ座標）の小数部で表される。また、負方向ラインＬの場合、終点ＥＰから画素境界までの距離ＬＮｅは、例えば、終点ＥＰの主軸座標（図３では、Ｘ座標）の小数部を１から引くことにより算出される。なお、例えば、Ｘ軸やＹ軸に垂直なラインＬでは、終点ＥＰから画素境界までの距離ＬＮｅは、ラインＬの終点ＥＰを含む画素ＰＸ内のラインＬの主軸方向（図３では、Ｘ軸方向）の長さに対応している。
【００４３】
図の破線の枠は、画素ＰＸ内に定義されたダイヤモンド枠ＤＢを示している。例えば、ダイヤモンド枠ＤＢは、画素ＰＸの各辺の中点を頂点とするひし形の枠である。Diamond Exit Ruleを適用した場合、例えば、ダイヤモンド枠ＤＢの中から外に向かうラインＬを含む画素ＰＸが描画される。また、例えば、閾値ＴＬ１は、始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さを示し、閾値ＴＬ２は、終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さを示している。
【００４４】
ケース１は、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸが描画されるときの一例を示している。例えば、ケース１では、ラインＬの端点（始点ＳＰ、終点ＥＰ）から画素境界までの距離ＬＮ（ＬＮｓ、ＬＮｅ）は、閾値ＴＬ（ＴＬ１、ＴＬ２）以上である。このため、判定部４０は、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸを描画すると判定する。
【００４５】
なお、ケース１−１は、判定部４０の判定結果とDiamond Exit Ruleでの判定結果とが一致するときの一例を示している。また、ケース１−２は、判定部４０の判定結果とDiamond Exit Ruleでの判定結果とが異なるときの一例を示している。
【００４６】
例えば、ケース１−１およびケース１−２では、判定部４０は、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１以上であるため、始点ＳＰを含む画素ＰＸを描画すると判定する。また、ケース１−１およびケース１−２では、判定部４０は、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２以上であるため、終点ＥＰを含む画素ＰＸを描画すると判定する。
【００４７】
ここで、例えば、Diamond Exit Ruleが適用された場合、ケース１−１では、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有しているため、描画と判定される。これに対し、ケース１−２では、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸは、Diamond Exit Ruleが適用された場合、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していないため、非描画と判定される。
【００４８】
ケース２は、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸが描画されないときの一例を示している。例えば、ケース２では、ラインＬの端点（始点ＳＰ、終点ＥＰ）から画素境界までの距離ＬＮ（ＬＮｓ、ＬＮｅ）は、閾値ＴＬ（ＴＬ１、ＴＬ２）より小さい。このため、判定部４０は、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸを描画しないと判定する。
【００４９】
なお、ケース２−１は、判定部４０の判定結果とDiamond Exit Ruleでの判定結果とが一致するときの一例を示している。また、ケース２−２は、判定部４０の判定結果とDiamond Exit Ruleでの判定結果とが異なるときの一例を示している。
【００５０】
例えば、ケース２−１およびケース２−２では、判定部４０は、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１より小さいため、始点ＳＰを含む画素ＰＸを描画しないと判定する。また、ケース２−１およびケース２−２では、判定部４０は、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２より小さいため、終点ＥＰを含む画素ＰＸを描画しないと判定する。
【００５１】
ここで、例えば、Diamond Exit Ruleが適用された場合、ケース２−１では、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していないため、非描画と判定される。これに対し、ケース２−２では、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸは、Diamond Exit Ruleが適用された場合、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有しているため、描画と判定される。なお、ダイヤモンド枠ＤＢ上は、ダイヤモンド枠ＤＢ外と定義されている。
【００５２】
このように、判定部４０（より詳細には、始点描画判定部４２および終点描画判定部４４）は、ラインＬの端点を含む画素ＰＸを描画するか否かを、Diamond Exit Ruleを適用せずに、端点から画素境界までの距離ＬＮおよび閾値ＴＬに基づいて判定する。なお、判定部４０は、端点から画素境界までの距離ＬＮを求めずに、端点から画素境界までの距離ＬＮが閾値ＴＬ以上か否かを判定してもよい。例えば、判定部４０は、レジスタ部２０から受けた閾値が基準の長さ（例えば、閾値ＴＬ）に対応する主軸座標の小数部を示している場合、端点（始点ＳＰ、終点ＥＰ）の主軸座標の小数部と閾値（例えば、図４に示す閾値ＴＤ）とを比較してもよい。
【００５３】
図４は、図１に示したレジスタ部２０に設定される閾値の一例を示している。レジスタ部２０に設定される閾値は、例えば、図４に示した４つのパターンのいずれでもよい。また、レジスタ部２０に設定される閾値は、長さを示す閾値ＴＬ（ＴＬ０−ＴＬ２２２）でもよいし、小数部で表した閾値ＴＤ（ＴＤ０−ＴＤ２２２）でもよい。以下、閾値ＴＬ、ＴＤを、区別せずに、閾値Ｔとも称する。
【００５４】
例えば、閾値ＴＬは、端点（始点ＳＰ、終点ＥＰ）から画素境界までの距離ＬＮと比較される基準の長さを示している。また、例えば、閾値ＴＤは、基準の長さに対応する主軸座標の小数部を示している。例えば、閾値ＴＤが“０．４”の場合、正方向のラインＬの始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、“０．６”であり、正方向のラインＬの終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さは、“０．４”である。
【００５５】
主軸座標の小数部で表された閾値ＴＤは、例えば、端点（始点ＳＰ、終点ＥＰ）の主軸座標の小数部と比較される。例えば、判定部４０は、端点の主軸座標の小数部と閾値ＴＤとを比較することにより、端点から画素境界までの距離ＬＮが基準の長さ（例えば、閾値ＴＬ）以上か否かを判定する。
【００５６】
パターン１では、レジスタ部２０は、始点ＳＰ、終点ＥＰ、正方向ラインＬ、負方向ラインＬ、Ｘ主軸ラインＬおよびＹ主軸ラインＬの組み合わせ毎に設定された閾値Ｔを保持している。
【００５７】
例えば、閾値ＴＬ１１１、ＴＤ１１１は、Ｘ軸を主軸とする正方向ラインＬの始点ＳＰ用の閾値Ｔである。閾値ＴＬ１１２、ＴＤ１１２は、Ｙ軸を主軸とする正方向ラインＬの始点ＳＰ用の閾値Ｔである。閾値ＴＬ１２１、ＴＤ１２１は、Ｘ軸を主軸とする負方向ラインＬの始点ＳＰ用の閾値Ｔである。閾値ＴＬ１２２、ＴＤ１２２は、Ｙ軸を主軸とする負方向ラインＬの始点ＳＰ用の閾値Ｔである。
【００５８】
また、例えば、閾値ＴＬ２１１、ＴＤ２１１は、Ｘ軸を主軸とする正方向ラインＬの終点ＥＰ用の閾値Ｔである。閾値ＴＬ２１２、ＴＤ２１２は、Ｙ軸を主軸とする正方向ラインＬの終点ＥＰ用の閾値Ｔである。閾値ＴＬ２２１、ＴＤ２２１は、Ｘ軸を主軸とする負方向ラインＬの終点ＥＰ用の閾値Ｔである。閾値ＴＬ２２２、ＴＤ２２２は、Ｙ軸を主軸とする負方向ラインＬの終点ＥＰ用の閾値Ｔである。
【００５９】
パターン２では、レジスタ部２０は、始点ＳＰ、終点ＥＰ、正方向ラインＬおよび負方向ラインＬの組み合わせ毎に設定された閾値Ｔを保持している。すなわち、パターン２は、Ｘ軸を主軸とするラインＬとＹ軸を主軸とするラインＬとを区別していない。例えば、閾値ＴＬ１１、ＴＤ１１は、正方向ラインＬの始点ＳＰ用の閾値Ｔである。閾値ＴＬ１２、ＴＤ１２は、負方向ラインＬの始点ＳＰ用の閾値Ｔである。また、例えば、閾値ＴＬ２１、ＴＤ２１は、正方向ラインＬの終点ＥＰ用の閾値Ｔである。閾値ＴＬ２２、ＴＤ２２は、負方向ラインＬの終点ＥＰ用の閾値Ｔである。
【００６０】
パターン３では、レジスタ部２０は、始点ＳＰ用の閾値Ｔと終点ＥＰ用の閾値Ｔとを保持している。例えば、閾値ＴＬ１、ＴＤ１は、始点ＳＰ用の閾値Ｔである。また、例えば、閾値ＴＬ２、ＴＤ２は、終点ＥＰ用の閾値Ｔである。すなわち、パターン３は、正方向ラインＬと負方向ラインＬとを区別していない。
【００６１】
なお、パターン３の閾値ＴＤでは、例えば、閾値ＴＤ１、ＴＤ２が“０．５”以外に設定された場合、始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、負方向ラインＬと正方向ラインＬとで異なる。また、閾値ＴＤ１、ＴＤ２が“０．５”以外に設定された場合、終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さは、負方向ラインＬと正方向ラインＬとで異なる。
【００６２】
例えば、閾値ＴＤ１が“０．４”の場合、正方向のラインＬの始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、“０．６”であり、負方向のラインＬの始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、“０．４”である。
【００６３】
パターン４では、レジスタ部２０は、始点ＳＰと終点ＥＰとで兼用される閾値Ｔを保持している。なお、パターン４の閾値ＴＤでは、例えば、閾値ＴＤ０が“０．５”以外に設定された場合、始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さと異なる。例えば、閾値ＴＤ０が“０．４”の場合、正方向のラインＬの始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さは、“０．６”であり、正方向のラインＬの終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さは、“０．４”である。
【００６４】
なお、レジスタ部２０に設定される閾値は、この例に限定されない。また、描画装置１００は、例えば、基準の長さを示す閾値ＴＬを外部から受けた場合、主軸座標の小数部で表した閾値ＴＤを閾値ＴＬに基づいて生成し、生成した閾値ＴＤをレジスタ部２０に設定してもよい。
【００６５】
図５は、図１に示した描画装置１００の動作の一例を示している。すなわち、図５は、描画方法の一例を示している。なお、図５は、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸに対する処理の一例を示している。図５の例では、ステップＳ１００が実行される前に、図４に示したパターン３の閾値ＴＬ１、ＴＬ２（長さを示す閾値ＴＬ）がレジスタ部２０に設定されている。
【００６６】
図５の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、ライン描画プログラム等のソフトウエアは、プロセッサに図５の動作を実行させてもよい。すなわち、プロセッサは、ライン描画プログラムを読み取り、図５の動作を実行してもよい。
【００６７】
ステップＳ１００では、主軸判定部３２は、描画対象のラインＬの主軸を判定する。例えば、主軸判定部３２は、ラインＬの始点ＳＰおよび終点ＥＰのＸ座標の差分の絶対値ΔＸがラインＬの始点ＳＰおよび終点ＥＰのＹ座標の差分の絶対値ΔＹ以上の場合、Ｘ軸をラインＬの主軸と判定し、Ｙ軸をラインＬの副軸と判定する。また、例えば、主軸判定部３２は、ラインＬの始点ＳＰおよび終点ＥＰのＸ座標の差分の絶対値ΔＸがラインＬの始点ＳＰおよび終点ＥＰのＹ座標の差分の絶対値ΔＹより小さい場合、Ｙ軸をラインＬの主軸と判定し、Ｘ軸をラインＬの副軸と判定する。
【００６８】
ステップＳ１１０では、方向判定部３４は、ラインＬの描画方向を判定する。例えば、Ｘ主軸ラインＬに対しては、方向判定部３４は、終点ＥＰのＸ座標から始点ＳＰのＸ座標を引いた値が正の場合、描画方向を正方向と判定し、終点ＥＰのＸ座標から始点ＳＰのＸ座標を引いた値が負の場合、描画方向を負方向と判定する。また、例えば、Ｙ主軸ラインＬに対しては、方向判定部３４は、終点ＥＰのＹ座標から始点ＳＰのＹ座標を引いた値が正の場合、描画方向を正方向と判定し、終点ＥＰのＹ座標から始点ＳＰのＹ座標を引いた値が負の場合、描画方向を負方向と判定する。
【００６９】
ステップＳ２００では、判定部４０は、Diamond Exit Ruleを適用せずに、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸを描画するか否かを判定する。なお、この実施形態では、始点ＳＰを含む画素ＰＸを描画するか否かを判定する始点描画判定処理と、終点ＥＰを含む画素ＰＸを描画するか否かを判定する終点描画判定処理とが並列に実行される。このため、図５では、ステップＳ２００で実行される始点描画判定処理（ステップＳ２１０、Ｓ２２０、Ｓ２３０）および終点描画判定処理（ステップＳ２４０、Ｓ２５０、Ｓ２６０）を破線枠内に示している。
【００７０】
例えば、ステップＳ２１０、Ｓ２２０、Ｓ２３０を含む始点描画判定処理は、判定部４０の始点描画判定部４２により実行される。また、例えば、ステップＳ２４０、Ｓ２５０、Ｓ２６０を含む終点描画判定処理は、判定部４０の終点描画判定部４４により実行される。先ず、始点描画判定処理について説明する。
【００７１】
ステップＳ２１０では、始点描画判定部４２は、ラインＬの始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１以上か否かを判定する。なお、始点描画判定部４２は、始点ＳＰの主軸座標の小数部と閾値ＴＤ（閾値ＴＬ１に対応する主軸座標の小数部）とを比較することにより、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１以上か否かを判定してもよい。
【００７２】
始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１以上のとき（ステップＳ２１０のＹｅｓ）、始点描画判定部４２の動作は、ステップＳ２３０に移る。一方、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１より小さいとき（ステップＳ２１０のＮｏ）、始点描画判定部４２の動作は、ステップＳ２２０に移る。
【００７３】
ステップＳ２２０では、始点描画判定部４２は、始点ＳＰを含む画素ＰＸを描画しない画素ＰＸに設定する。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１より小さい場合、始点ＳＰを含む画素ＰＸは、Diamond Exit Ruleに基づく判定結果に拘わらず、描画されない。以下、描画されない画素ＰＸを非描画の画素ＰＸとも称する。
【００７４】
ステップＳ２３０では、始点描画判定部４２は、始点ＳＰを含む画素ＰＸを描画する画素ＰＸに設定する。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが閾値ＴＬ１以上の場合、始点ＳＰを含む画素ＰＸは、Diamond Exit Ruleに基づく判定結果に拘わらず、描画される。以下、描画される画素ＰＸを描画対象の画素ＰＸとも称する。このように、始点描画判定部４２は、始点ＳＰから画素境界までの距離ＬＮｓと閾値ＴＬ１との大小関係に基づいて、始点ＳＰを含む画素ＰＸを描画するか否かを判定する。次に、終点描画判定処理について説明する。
【００７５】
ステップＳ２４０では、終点描画判定部４４は、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２以上か否かを判定する。なお、終点描画判定部４４は、終点ＥＰの主軸座標の小数部と閾値ＴＤ（閾値ＴＬ２に対応する主軸座標の小数部）とを比較することにより、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２以上か否かを判定してもよい。
【００７６】
終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２以上のとき（ステップＳ２４０のＹｅｓ）、終点描画判定部４４の動作は、ステップＳ２６０に移る。一方、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２より小さいとき（ステップＳ２４０のＮｏ）、終点描画判定部４４の動作は、ステップＳ２５０に移る。
【００７７】
ステップＳ２５０では、終点描画判定部４４は、ラインＬの終点ＥＰを含む画素ＰＸを描画しない画素ＰＸに設定する。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２より小さい場合、終点ＥＰを含む画素ＰＸは、Diamond Exit Ruleに基づく判定結果に拘わらず、描画されない。
【００７８】
ステップＳ２６０では、終点描画判定部４４は、終点ＥＰを含む画素ＰＸを描画する画素ＰＸに設定する。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが閾値ＴＬ２以上の場合、終点ＥＰを含む画素ＰＸは、Diamond Exit Ruleに基づく判定結果に拘わらず、描画される。このように、終点描画判定部４４は、終点ＥＰから画素境界までの距離ＬＮｅと閾値ＴＬ２との大小関係に基づいて、終点ＥＰを含む画素ＰＸを描画するか否かを判定する。
【００７９】
例えば、描画装置１００は、Diamond Exit Ruleにしたがって生成するライン描画用のデータに、ステップ２００の判定結果（始点描画判定部４２および終点描画判定部４４による判定結果）を反映させる。
【００８０】
なお、描画装置１００の動作は、この例に限定されない。例えば、判定部４０は、始点描画判定処理（ステップＳ２１０、Ｓ２２０、Ｓ２３０）が終了した後に、終点描画判定処理（ステップＳ２４０、Ｓ２５０、Ｓ２６０）を実行してもよい。あるいは、判定部４０は、終点描画判定処理が終了した後に、始点描画判定処理を実行してもよい。
【００８１】
図６は、図１に示した描画装置１００により描画されるラインＬの一例を示している。図６の丸印および四角形の意味は、図２の丸印および四角形の意味と同様である。また、図６の星印は、描画される画素ＰＸを示している。なお、図６では、描画されるラインＬの画素ＰＸのうち、始点の画素ＰＸおよび終点の画素ＰＸを太線の星印で示している。始点の画素ＰＸは、始点ＳＰを含む画素ＰＸと異なる場合もある。同様に、終点の画素ＰＸは、終点ＥＰを含む画素ＰＸと異なる場合もある。以下、描画されるラインＬの画素ＰＸのうち、始点の画素ＰＸを始点画素ＰＸとも称し、終点の画素ＰＸを終点画素ＰＸとも称する。
【００８２】
ラインＬ３０、Ｌ３２、Ｌ３４、Ｌ３６、Ｌ３８は、Ｙ軸を主軸とする正方向ラインＬである。先ず、ラインＬ３０、Ｌ３２、Ｌ３４について説明する。
【００８３】
ラインＬ３０、Ｌ３２、Ｌ３４は、Ｘ軸に垂直で互いに同じ長さのラインである。また、ラインＬ３０、Ｌ３２、Ｌ３４の始点ＳＰ３０、ＳＰ３２、ＳＰ３４のＹ座標は、互いに同じである。したがって、ラインＬ３０、Ｌ３２、Ｌ３４の終点ＥＰ３０、ＥＰ３２、ＥＰ３４のＹ座標は、互いに同じである。この場合、ラインＬ３０、Ｌ３２、Ｌ３４のＸ座標に拘わらず、描画されるラインＬ３０、Ｌ３２、Ｌ３４の長さおよび端点（例えば、始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）は、ラインＬ３０、Ｌ３２、Ｌ３４で揃っていることが望ましい。
【００８４】
例えば、ラインＬ３０、Ｌ３２、Ｌ３４では、始点ＳＰ（ＳＰ３０、ＳＰ３２、ＳＰ３４）から画素境界までの距離ＬＮｓは、閾値ＴＬ１以上である。このため、始点ＳＰ３０、ＳＰ３２、ＳＰ３４をそれぞれ含む画素ＰＸは、描画される。また、終点ＥＰ（ＥＰ３０、ＥＰ３２、ＥＰ３４）から画素境界までの距離ＬＮｅは、閾値ＴＬ２より小さい。このため、終点ＥＰ３０、ＥＰ３２、ＥＰ３４をそれぞれ含む画素ＰＸは、描画されない。
【００８５】
すなわち、描画装置１００は、４画素ＰＸ分の長さで、Ｘ軸に垂直なラインを、始点ＳＰ（ＳＰ３０、ＳＰ３２、ＳＰ３４）を含む画素ＰＸを始点画素ＰＸとして描画する。これにより、ラインＬ３０、Ｌ３２、Ｌ３４が描画される。このように、描画装置１００は、ラインＬ３０、Ｌ３２、Ｌ３４を、端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）を揃えて描画できる。
【００８６】
ここで、ダイヤモンド枠ＤＢ上の始点ＳＰ３２を含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していない。また、ダイヤモンド枠ＤＢ外の終点ＥＰ３２を含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。
【００８７】
このため、始点描画判定部４２および終点描画判定部４４による判定結果を反映させずに、Diamond Exit Ruleを適用して描画されるラインＬ３２では、始点ＳＰ３２を含む画素ＰＸが描画されず、終点ＥＰ３２を含む画素ＰＸが描画される。この場合、描画されるラインＬ３０、Ｌ３２の長さは互いに同じになるが、端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）はラインＬ３０、Ｌ３２で揃わない。
【００８８】
また、ダイヤモンド枠ＤＢ上の終点ＥＰ３４を含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。このため、終点描画判定部４４による判定結果を反映させずに、Diamond Exit Ruleを適用して描画されるラインＬ３４では、終点ＥＰ３４を含む画素ＰＸは、描画される。この場合、描画されるラインＬ３４の長さは、描画されるラインＬ３０、Ｌ３２の長さと異なる。すなわち、描画されるラインＬ３０、Ｌ３２、Ｌ３４の長さおよび端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）がラインＬ３０、Ｌ３２、Ｌ３４で揃わない。
【００８９】
これに対し、この実施形態の描画装置１００は、例えば、Diamond Exit Ruleにしたがって生成するライン描画用のデータに、始点描画判定部４２および終点描画判定部４４による判定結果を反映させる。このため、描画装置１００により描画されるラインＬ３０、Ｌ３２、Ｌ３４の長さおよび端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）は、ラインＬ３０、Ｌ３２、Ｌ３４で揃っている。このように、この実施形態では、Ｘ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、描画される複数のラインＬの長さや端点を揃えることができる。次に、ラインＬ３６、Ｌ３８について説明する。
【００９０】
ラインＬ３６、Ｌ３８は、互いに同じ長さでＹ軸に対して斜めのラインである。例えば、ラインＬ３６、Ｌ３８の始点ＳＰ３６、ＳＰ３８のＹ座標は、互いに同じである。また、ラインＬ３６、Ｌ３８の終点ＥＰ３６、ＥＰ３８のＹ座標は、互いに同じである。この場合、ラインＬ３６、Ｌ３８のＸ軸方向の位置に拘わらず、ラインＬ３６、Ｌ３８の端点（例えば、始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）は、ラインＬ３６、Ｌ３８で揃っていることが望ましい。
【００９１】
例えば、ラインＬ３６、Ｌ３８では、始点ＳＰ（ＳＰ３６、ＳＰ３８）から画素境界までの距離ＬＮｓは、閾値ＴＬ１より小さい。このため、始点ＳＰ３６、ＳＰ３８をそれぞれ含む画素ＰＸは、描画されない。また、終点ＥＰ（ＥＰ３６、ＥＰ３８）から画素境界までの距離ＬＮｅは、閾値ＴＬ２以上である。このため、終点ＥＰ３６、ＥＰ３８をそれぞれ含む画素ＰＸは、描画される。
【００９２】
すなわち、描画されるラインＬ３６、Ｌ３８の始点画素ＰＸは、例えば、始点ＳＰ（ＳＰ３６、ＳＰ３８）を含む画素ＰＸのＹ軸方向の正側に隣接する画素ＰＸ（図６では、始点ＳＰを含む画素ＰＸの下側の画素ＰＸ）である。また、描画されるラインＬ３６、Ｌ３８の終点画素ＰＸは、終点ＥＰ（ＥＰ３６、ＥＰ３８）を含む画素ＰＸである。このように、描画装置１００は、ラインＬ３６、Ｌ３８を、端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）を揃えて描画できる。
【００９３】
ここで、ダイヤモンド枠ＤＢ内の始点ＳＰ３６を含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。このため、始点描画判定部４２による判定結果を反映させずに、Diamond Exit Ruleを適用して描画されるラインＬ３６では、始点ＳＰ３６を含む画素ＰＸは、描画される。また、ダイヤモンド枠ＤＢ内の終点ＥＰ３８を含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していない。
【００９４】
このため、終点描画判定部４４による判定結果を反映させずに、Diamond Exit Ruleを適用して描画されるラインＬ３８では、終点ＥＰ３８を含む画素ＰＸは、描画されない。この場合、描画されるラインＬ３６、Ｌ３８の長さや端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）は、ラインＬ３６、Ｌ３８で揃わない。
【００９５】
これに対し、この実施形態の描画装置１００は、例えば、Diamond Exit Ruleにしたがって生成するライン描画用のデータに、始点描画判定部４２および終点描画判定部４４による判定結果を反映させる。このため、描画装置１００により描画されるラインＬ３６、Ｌ３８の長さや端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）は、ラインＬ３６、Ｌ３８で揃っている。このように、この実施形態では、互いに同じ長さでＹ軸に対して斜めの複数のラインＬを描画する際に、描画される複数のラインＬの長さや端点を揃えることができる。
【００９６】
なお、描画装置１００は、Ｘ主軸ラインＬにおいても、端点（始点ＳＰ、終点ＥＰ）のＸ座標が互いに同じ複数のラインＬを、端点（始点画素ＰＸの中心のＹ座標、終点画素ＰＸの中心のＹ座標）を揃えて描画できる。すなわち、この実施形態では、端点（始点ＳＰ、終点ＥＰ）の主軸座標が互いに同じ複数のラインＬを描画する際に、描画される複数のラインＬの端点を揃えることができる。例えば、この実施形態では、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、描画される複数のラインＬの長さや端点を揃えることができる。
【００９７】
図７は、連続するラインＬ４０、Ｌ４２の描画の一例を示している。図７の丸印、四角形および星印の意味は、図６の丸印、四角形および星印の意味と同様である。例えば、太線の星印は、始点画素ＰＸあるいは終点画素ＰＸを示している。なお、図７では、網掛けの星印は、ラインＬ４０の終点画素ＰＸであり、かつ、ラインＬ４２の始点画素ＰＸである２度うちされる画素ＰＸを示している。
【００９８】
画素ＰＸｃには、Ｙ軸を主軸とする正方向ラインＬ４０の終点ＥＰ４０であり、Ｘ軸を主軸とする負方向ラインＬ４２の始点ＳＰ４２でもある座標が存在する。すなわち、画素ＰＸｃは、ラインＬ４０の終点ＥＰ４０とラインＬ４２の始点ＳＰ４２との両方を含む画素ＰＸである。したがって、画素ＰＸｃでは、ラインＬ４０の終点ＥＰ４０を含む画素ＰＸに対する終点描画判定処理と、ラインＬ４２の始点ＳＰ４２を含む画素ＰＸに対する始点描画判定処理との２回の描画判定が実行される。
【００９９】
例えば、終点ＥＰ４０から画素境界までの距離ＬＮｅは、“０．７”である。また、始点ＳＰ４２から画素境界までの距離ＬＮｓは、“０．５”である。以下、画素ＰＸｃの描画判定について、２つのケース（図７のケース１、ケース２）に分けて説明する。
【０１００】
図７のケース１は、始点ＳＰ用の閾値ＴＬ１と終点ＥＰ用の閾値ＴＬ２との両方が“０”に設定された場合を示している。例えば、ケース１では、終点描画判定部４４は、終点ＥＰ４０から画素境界までの距離ＬＮｅ（＝０．７）が閾値ＴＬ２（＝０）以上であるため、終点ＥＰ４０を含む画素ＰＸｃを描画すると判定する。したがって、ラインＬ４０の終点ＥＰ４０を含む画素ＰＸｃは、ラインＬ４０の終点画素ＰＸとして描画される。
【０１０１】
また、始点描画判定部４２は、始点ＳＰ４２から画素境界までの距離ＬＮｓ（＝０．５）が閾値ＴＬ１（＝０）以上であるため、始点ＳＰ４２を含む画素ＰＸｃを描画すると判定する。したがって、ラインＬ４２の始点ＳＰ４２を含む画素ＰＸｃは、ラインＬ４２の始点画素ＰＸとしても描画される。このように、ケース１では、画素ＰＸｃで２度うちが発生する。
【０１０２】
図７のケース２は、始点ＳＰ用の閾値ＴＬ１が“０．７５”に設定され、終点ＥＰ用の閾値ＴＬ２が“０”に設定された場合を示している。例えば、ケース２では、終点描画判定部４４は、終点ＥＰから画素境界までの距離ＬＮｅ（＝０．７）が閾値ＴＬ２（＝０）以上であるため、終点ＥＰ４０を含む画素ＰＸｃを描画すると判定する。したがって、ラインＬ４０の終点ＥＰ４０を含む画素ＰＸｃは、ラインＬ４０の終点画素ＰＸとして描画される。
【０１０３】
また、始点描画判定部４２は、始点ＳＰ４２から画素境界までの距離ＬＮｓ（＝０．５）が閾値ＴＬ１（＝０．７５）より小さいため、始点ＳＰ４２を含む画素ＰＸｃを描画しないと判定する。したがって、ラインＬ４２の始点ＳＰ４２を含む画素ＰＸｃは、ラインＬ４２の始点画素ＰＸとしては、描画されない。すなわち、画素ＰＸｃでは、２度うちは発生しない。なお、描画されるラインＬ４２の始点画素ＰＸは、例えば、画素ＰＸｃのＸ軸方向の負側に隣接する画素ＰＸ（図７では、画素ＰＸｃの左側の画素ＰＸ）である。このように、ケース２では、画素ＰＸｃで２度うちが発生することを回避できる。
【０１０４】
したがって、この実施形態では、閾値ＴＬ１、ＴＬ２を任意に設定可能にすることにより、画素ＰＸの２度うちを回避できる。これにより、この実施形態では、画素ＰＸの２度うちに起因する画質の劣化を防止できる。また、この実施形態では、画素ＰＸの２度うちによる不要な画像処理の発生を低減できる。
【０１０５】
なお、判定部４０は、２つのラインＬのうちの一方のラインＬの終点ＥＰが他方のラインＬの始点ＳＰであり、かつ、一方のラインＬの終点ＥＰを含む画素ＰＸを描画すると判定した場合、他方のラインＬに対しては、他方のラインＬの始点ＳＰを含む画素ＰＸを描画しないと判定してもよい。例えば、判定部４０は、連続するラインＬ４０、Ｌ４２のうちの一方のラインＬ４０の終点ＥＰ４０を含む画素ＰＸｃを描画すると判定した場合、閾値ＴＬ１に拘わらず、他方のラインＬ４２に対しては、ラインＬ４２の始点ＳＰ４２を含む画素ＰＸｃを描画しないと判定してもよい。
【０１０６】
以上、図１から図７に示した実施形態の描画装置１００、描画方法およびシステムは、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸに対しては、ラインＬを描画する際の所定のルール（例えば、Diamond Exit Rule）を適用せずに、描画するか否かを判定する。例えば、描画装置１００は、解析部３０および判定部４０を有している。解析部３０は、ラインＬの第１方向の長さがラインＬの第２方向の長さ以上のとき、第１方向をラインＬの主方向と判定し、ラインＬの第１方向の長さがラインＬの第２方向の長さより短いとき、第２方向をラインＬの主方向と判定する。
【０１０７】
そして、判定部４０は、所定のルールを適用せずに、始点ＳＰを含む画素ＰＸの主方向の終点ＥＰ側の境界から始点ＳＰまでの距離ＬＮｓが予め決められた第１閾値以上か否かに基づいて、始点ＳＰを含む画素ＰＸを描画するか否かを判定する。また、判定部４０は、所定のルールを適用せずに、終点ＥＰを含む画素ＰＸの主方向の始点ＳＰ側の境界から終点ＥＰまでの距離ＬＮｅが予め決められた第２閾値以上か否かに基づいて、終点ＥＰを含む画素ＰＸを描画するか否かを判定する。
【０１０８】
例えば、Ｘ軸やＹ軸に垂直なラインの描画では、判定部４０は、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸ内のラインＬの主方向（主軸方向）の長さＬＮｓが閾値ＴＬ以上の場合、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸを描画すると判定する。また、例えば、Ｘ軸やＹ軸に垂直なラインの描画では、判定部４０は、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸ内のラインＬの主方向（主軸方向）の長さＬＮｅが閾値ＴＬより小さい場合、ラインＬの端点（始点ＳＰ、終点ＥＰ）を含む画素ＰＸを描画しないと判定する。
【０１０９】
このように、判定部４０は、端点（始点ＳＰ、終点ＥＰ）から画素境界までの距離ＬＮと閾値ＴＬとの大小関係に基づいて、端点を含む画素ＰＸを描画するか否かを判定する。このため、この実施形態では、端点の主軸座標が互いに同じ複数のラインＬを描画する際に、端点の副軸座標に拘わらず、描画される複数のラインＬの端点を揃えることができる。例えば、この実施形態では、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、複数のラインＬの長さや端点を揃えることができる。
【０１１０】
図８は、描画装置、描画方法およびシステムの別の実施形態を示している。この実施形態の描画装置１００Ａは、補正部５０およびデータ生成部６０が図１に示した描画装置１００に追加されている。描画装置１００Ａのその他の構成は、図１に示した描画装置１００と同様である。図１から図７で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
【０１１１】
例えば、描画装置１００Ａは、ラインＬの端点（始点ＳＰ、終点ＥＰ）の座標からライン描画用のデータをDiamond Exit Ruleにしたがって生成するラインセットアップ部１０Ａを有している。なお、ラインセットアップ部１０Ａは、ラインＬの始点ＳＰおよび終点ＥＰをそれぞれ含む画素ＰＸに対しては、Diamond Exit Ruleを適用せずに、予め決められた閾値に基づく描画判定（画素を描画するか否かの判定）を実行する。
【０１１２】
描画装置１００Ａのラインセットアップ部１０Ａは、例えば、レジスタ部２０と、解析部３０と、判定部４０と、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正する補正部５０と、Diamond Exit Rule処理を実行するデータ生成部６０とを有している。すなわち、ラインセットアップ部１０Ａでは、補正部５０およびデータ生成部６０が図１に示したラインセットアップ部１０に追加されている。ラインセットアップ部１０Ａのその他の構成は、図１に示したラインセットアップ部１０と同様である。
【０１１３】
例えば、レジスタ部２０は、ラインＬの始点ＳＰおよび終点ＥＰをそれぞれ含む画素ＰＸに対する描画判定に使用される閾値を保持する。また、例えば、解析部３０は、主軸判定をラインＬ毎に実行する主軸判定部３２と、ラインＬの描画方向（正方向、負方向）を判定する方向判定部３４とを有している。判定部４０は、例えば、ラインＬの始点ＳＰを含む画素ＰＸを描画するか否かを判定する始点描画判定部４２と、ラインＬの終点ＥＰを含む画素ＰＸを描画するか否かを判定する終点描画判定部４４とを有している。判定部４０による判定結果は、例えば、補正部５０に転送される。
【０１１４】
補正部５０は、例えば、ラインＬの始点ＳＰおよび終点ＥＰの座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果と、判定部４０による描画判定の結果とを受ける。そして、補正部５０は、ラインＬの始点ＳＰおよび終点ＥＰの座標を、判定部４０による描画判定の結果に基づいて補正する。例えば、補正部５０は、判定部４０による描画判定（第１閾値および第２閾値に基づく描画判定）の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正する。これにより、ラインＬが補正される。補正されたラインＬの情報（始点ＳＰおよび終点ＥＰの座標）は、データ生成部６０に転送される。
【０１１５】
このように、補正部５０は、始点ＳＰおよび終点ＥＰの座標を補正し、補正前の始点ＳＰを含む画素ＰＸおよび補正前の終点ＥＰを含む画素ＰＸを描画するか否かの判定結果を、補正後のラインＬに所定のルール（例えば、Diamond Exit Rule）を適用したときの結果に反映させる。例えば、補正部５０は、始点描画判定部４２による描画判定の結果に基づいてラインＬの始点ＳＰを補正する始点補正部５２と、終点描画判定部４４による描画判定の結果に基づいてラインＬの終点ＥＰを補正する終点補正部５４とを有している。
【０１１６】
例えば、始点補正部５２は、ラインＬの始点ＳＰの座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果と、始点描画判定部４２による描画判定の結果とを受ける。そして、始点補正部５２は、始点描画判定部４２による描画判定の結果に基づいてラインＬの始点ＳＰの座標を補正し、補正した始点ＳＰの座標をデータ生成部６０に出力する。例えば、始点補正部５２は、始点ＳＰの座標の補正処理として、図９に示す補正処理１から補正処理３のいずれかを実行する。
【０１１７】
また、例えば、終点補正部５４は、ラインＬの終点ＥＰの座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果と、終点描画判定部４４による描画判定の結果とを受ける。そして、終点補正部５４は、終点描画判定部４４による描画判定の結果に基づいてラインＬの終点ＥＰの座標を補正し、補正した終点ＥＰの座標をデータ生成部６０に出力する。例えば、終点補正部５４は、終点ＥＰの座標の補正処理として、図９に示す補正処理１から補正処理３のいずれかを実行する。
【０１１８】
データ生成部６０は、補正部５０で補正されたラインＬの始点ＳＰおよび終点ＥＰの座標（Ｘ座標、Ｙ座標）を示す情報と、主軸判定の結果と、描画方向の判定結果とを受ける。そして、データ生成部６０は、補正後のラインＬの端点（補正後の始点ＳＰおよび終点ＥＰ）の座標からライン描画用のデータをDiamond Exit Ruleにしたがって生成する。例えば、描画装置１００Ａは、データ生成部６０で生成したライン描画用のデータに基づいて、表示領域ＤＲに描画するラインＬに対応する画素ＰＸのデータを生成する。
【０１１９】
なお、描画装置１００Ａの構成は、この例に限定されない。例えば、補正部５０は、ラインの始点および終点の座標（Ｘ座標、Ｙ座標）を示す情報を、解析部３０や判定部４０を介して受けてもよい。また、データ生成部６０は、解析部３０による判定結果（主軸判定の結果、描画方向の判定結果）を、判定部４０や補正部５０を介して受けてもよい。
【０１２０】
図９は、図８に示した補正部５０による補正処理の一例を示している。すなわち、図９は、図８に示した始点補正部５２および終点補正部５４による補正処理の一例を示している。
【０１２１】
補正処理１は、例えば、ラインＬ（正方向ラインＬ、負方向ラインＬ）の始点ＳＰを含む画素ＰＸが描画対象の画素ＰＸのとき、始点ＳＰに対して実行される。あるいは、補正処理１は、ラインＬ（正方向ラインＬ、負方向ラインＬ）の終点ＥＰを含む画素ＰＸが非描画の画素ＰＸのとき、終点ＥＰに対して実行される。例えば、補正処理１では、補正部５０は、端点（始点ＳＰや終点ＥＰ）の主軸座標の整数部の値を維持したまま、端点の主軸座標の小数部を“０．５”に補正する。これにより、端点の主軸座標が補正される。また、例えば、補正部５０は、端点の主軸座標の補正量に応じた変化量を副軸座標に加算することにより、端点の副軸座標を補正する。
【０１２２】
例えば、補正処理１の内容は、端点の補正後の主軸座標Ｍｏ、補正前の主軸座標Ｍｉ、端点の補正後の副軸座標Ｓｏ、補正前の副軸座標Ｓｉ、ラインＬの傾きａを用いて、式（１）および式（２）で表される。なお、傾きａは、例えば、ラインＬの副軸方向の変化量をラインＬの主軸方向の変化量で割ることにより算出される。また、式中のｉｎｔ（）は、括弧内の値の整数部を示している。例えば、式中の“ｉｎｔ（Ｍｉ）”は、補正前の主軸座標Ｍｉの整数部である。
【０１２３】
Ｍｏ＝ｉｎｔ（Ｍｉ）＋０．５                        ・・・（１）
Ｓｏ＝Ｓｉ＋ａ・（ｉｎｔ（Ｍｉ）＋０．５−Ｍｉ）    ・・・（２）
このように、補正処理１では、補正後の端点の主軸座標は、式（１）により求められる。また、補正後の端点の副軸座標は、式（２）により求められる。
【０１２４】
補正処理２は、例えば、正方向ラインＬの始点ＳＰを含む画素ＰＸが非描画の画素ＰＸのとき、始点ＳＰに対して実行される。あるいは、補正処理２は、正方向ラインＬの終点ＥＰを含む画素ＰＸが描画対象の画素ＰＸのとき、終点ＥＰに対して実行される。例えば、補正処理２では、補正部５０は、端点（始点ＳＰや終点ＥＰ）の主軸座標の整数部の値（補正前の値）に“１”を加算し、端点の主軸座標の小数部を“０．５”に補正する。これにより、端点の主軸座標が補正される。また、例えば、補正部５０は、端点の主軸座標の補正量に応じた変化量を副軸座標に加算することにより、端点の副軸座標を補正する。
【０１２５】
例えば、補正処理２の内容は、端点の補正後の主軸座標Ｍｏ、補正前の主軸座標Ｍｉ、端点の補正後の副軸座標Ｓｏ、補正前の副軸座標Ｓｉ、ラインＬの傾きａを用いて、式（３）および式（４）で表される。
【０１２６】
Ｍｏ＝ｉｎｔ（Ｍｉ）＋１．５                        ・・・（３）
Ｓｏ＝Ｓｉ＋ａ・（ｉｎｔ（Ｍｉ）＋１．５−Ｍｉ）    ・・・（４）
このように、補正処理２では、補正後の端点の主軸座標は、式（３）により求められる。また、補正後の端点の副軸座標は、式（４）により求められる。
【０１２７】
補正処理３は、例えば、負方向ラインＬの始点ＳＰを含む画素ＰＸが非描画の画素ＰＸのとき、始点ＳＰに対して実行される。あるいは、補正処理３は、負方向ラインＬの終点ＥＰを含む画素ＰＸが描画対象の画素ＰＸのとき、終点ＥＰに対して実行される。例えば、補正処理３では、補正部５０は、端点（始点ＳＰや終点ＥＰ）の主軸座標の整数部の値（補正前の値）に“−１”を加算し、端点の主軸座標の小数部を“０．５”に補正する。これにより、端点の主軸座標が補正される。また、例えば、補正部５０は、端点の主軸座標の補正量に応じた変化量を副軸座標に加算することにより、端点の副軸座標を補正する。
【０１２８】
例えば、補正処理３の内容は、端点の補正後の主軸座標Ｍｏ、補正前の主軸座標Ｍｉ、端点の補正後の副軸座標Ｓｏ、補正前の副軸座標Ｓｉ、ラインＬの傾きａを用いて、式（５）および式（６）で表される。
【０１２９】
Ｍｏ＝ｉｎｔ（Ｍｉ）−０．５                        ・・・（５）
Ｓｏ＝Ｓｉ＋ａ・（ｉｎｔ（Ｍｉ）−０．５−Ｍｉ）    ・・・（６）
このように、補正処理３では、補正後の端点の主軸座標は、式（５）により求められる。また、補正後の端点の副軸座標は、式（６）により求められる。なお、式（２）、式（４）および式（６）から分かるように、副軸に垂直なラインＬ（傾きａ＝０）では、端点の副軸座標は、補正前後で変化しない。
【０１３０】
図１０は、図８に示した描画装置１００Ａの動作の一例を示している。すなわち、図１０は、描画方法の一例を示している。なお、図１０は、ラインＬの描画処理の一例を示している。また、図１０のステップＳ３００、Ｓ４００、Ｓ５００、Ｓ６００の一例を図１１から図１４にそれぞれ示している。図１０の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、ライン描画プログラム等のソフトウエアは、プロセッサに図１０の動作を実行させてもよい。すなわち、プロセッサは、ライン描画プログラムを読み取り、図１０の動作を実行してもよい。
【０１３１】
ステップＳ１０２では、主軸判定部３２は、描画対象のラインＬの主軸がＸ軸か否かを判定する。例えば、主軸判定部３２は、ラインＬの始点ＳＰおよび終点ＥＰのＸ座標の差分の絶対値ΔＸがラインＬの始点ＳＰおよび終点ＥＰのＹ座標の差分の絶対値ΔＹ以上の場合、Ｘ軸をラインＬの主軸と判定し、Ｙ軸をラインＬの副軸と判定する。また、例えば、主軸判定部３２は、ラインＬの始点ＳＰおよび終点ＥＰのＸ座標の差分の絶対値ΔＸがラインＬの始点ＳＰおよび終点ＥＰのＹ座標の差分の絶対値ΔＹより小さい場合、Ｙ軸をラインＬの主軸と判定し、Ｘ軸をラインＬの副軸と判定する。
【０１３２】
ラインＬの主軸がＸ軸のとき（ステップＳ１０２のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ１１２に移る。一方、ラインＬの主軸がＹ軸のとき（ステップＳ１０２のＮｏ）、描画装置１００Ａの動作は、ステップＳ１１４に移る。先ず、ラインＬの主軸がＸ軸のときの描画装置１００Ａの動作（ステップＳ１１２、Ｓ３００、Ｓ４００）について説明する。
【０１３３】
ステップＳ１１２では、方向判定部３４は、ラインＬの描画方向が正方向か否かを判定する。例えば、方向判定部３４は、終点ＥＰのＸ座標から始点ＳＰのＸ座標を引いた値が正の場合、描画方向を正方向と判定し、終点ＥＰのＸ座標から始点ＳＰのＸ座標を引いた値が負の場合、描画方向を負方向と判定する。ラインＬの描画方向が正方向のとき（ステップＳ１１２のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ３００に移る。一方、ラインＬの描画方向が負方向のとき（ステップＳ１１２のＮｏ）、描画装置１００Ａの動作は、ステップＳ４００に移る。
【０１３４】
ステップＳ３００では、判定部４０および補正部５０は、Ｘ軸を主軸とする正方向ラインＬに対する補正処理を実行する。例えば、判定部４０の始点描画判定部４２および補正部５０の始点補正部５２は、図１１に示す始点補正処理（ステップＳ３１０−Ｓ３４０）を実行する。また、例えば、判定部４０の終点描画判定部４４および補正部５０の終点補正部５４は、図１１に示す終点補正処理（ステップＳ３５０−Ｓ３８０）を実行する。
【０１３５】
ステップＳ４００では、判定部４０および補正部５０は、Ｘ軸を主軸とする負方向ラインＬに対する補正処理を実行する。例えば、判定部４０の始点描画判定部４２および補正部５０の始点補正部５２は、図１２に示す始点補正処理（ステップＳ４１０−Ｓ４４０）を実行する。また、例えば、判定部４０の終点描画判定部４４および補正部５０の終点補正部５４は、図１２に示す終点補正処理（ステップＳ４５０−Ｓ４８０）を実行する。
【０１３６】
ステップＳ３００、Ｓ４００のいずれかが実行されることにより、Ｘ軸を主軸とするラインＬの始点ＳＰおよび終点ＥＰの座標が補正される。次に、ラインＬの主軸がＹ軸のときの描画装置１００Ａの動作（ステップＳ１１４、Ｓ５００、Ｓ６００）について説明する。
【０１３７】
ステップＳ１１４では、方向判定部３４は、ラインＬの描画方向が正方向か否かを判定する。例えば、方向判定部３４は、終点ＥＰのＹ座標から始点ＳＰのＹ座標を引いた値が正の場合、描画方向を正方向と判定し、終点ＥＰのＹ座標から始点ＳＰのＹ座標を引いた値が負の場合、描画方向を負方向と判定する。ラインＬの描画方向が正方向のとき（ステップＳ１１４のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ５００に移る。一方、ラインＬの描画方向が負方向のとき（ステップＳ１１４のＮｏ）、描画装置１００Ａの動作は、ステップＳ６００に移る。
【０１３８】
ステップＳ５００では、判定部４０および補正部５０は、Ｙ軸を主軸とする正方向ラインＬに対する補正処理を実行する。例えば、判定部４０の始点描画判定部４２および補正部５０の始点補正部５２は、図１３に示す始点補正処理（ステップＳ５１０−Ｓ５４０）を実行する。また、例えば、判定部４０の終点描画判定部４４および補正部５０の終点補正部５４は、図１３に示す終点補正処理（ステップＳ５５０−Ｓ５８０）を実行する。
【０１３９】
ステップＳ６００では、判定部４０および補正部５０は、Ｙ軸を主軸とする負方向ラインＬに対する補正処理を実行する。例えば、判定部４０の始点描画判定部４２および補正部５０の始点補正部５２は、図１４に示す始点補正処理（ステップＳ６１０−Ｓ６４０）を実行する。また、例えば、判定部４０の終点描画判定部４４および補正部５０の終点補正部５４は、図１４に示す終点補正処理（ステップＳ６５０−Ｓ６８０）を実行する。
【０１４０】
ステップＳ５００、Ｓ６００のいずれかが実行されることにより、Ｙ軸を主軸とするラインＬの始点ＳＰおよび終点ＥＰの座標が補正される。描画装置１００Ａは、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正した後（ステップＳ３００、Ｓ４００、Ｓ５００、Ｓ６００のいずれかを実行した後）、ステップＳ７００を実行する。
【０１４１】
ステップＳ７００では、データ生成部６０は、ステップＳ３００、Ｓ４００、Ｓ５００、Ｓ６００のいずれかで始点ＳＰおよび終点ＥＰの座標が補正されたラインＬに対して、Diamond Exit Ruleに基づく処理を実行する。すなわち、データ生成部６０は、補正後のラインＬにDiamond Exit Ruleを適用して、ライン描画用のデータを生成する。例えば、描画装置１００Ａは、ステップＳ７００で生成したライン描画用のデータに基づいて、表示領域ＤＲに描画するラインＬに対応する画素ＰＸのデータを生成し、表示領域ＤＲにラインＬを描画する。
【０１４２】
図１１から図１４は、図１０のステップＳ３００、Ｓ４００、Ｓ５００、Ｓ６００の一例をそれぞれ示している。なお、図１１から図１４の例では、図１０に示したステップＳ１０２が実行される前に、基準の長さに対応する主軸座標の小数部で表された閾値ＴＤがレジスタ部２０に設定されている。図１１から図１４の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。例えば、ライン描画プログラム等のソフトウエアは、プロセッサに図１１から図１４の動作を実行させてもよい。すなわち、プロセッサは、ライン描画プログラムを読み取り、図１１から図１４の動作を実行してもよい。
【０１４３】
図１１は、Ｘ軸を主軸とする正方向ラインＬに対する補正処理の一例を示している。すなわち、図１１は、図１０のステップＳ３００の一例を示している。なお、図１１の動作では、始点ＳＰの座標を補正する始点補正処理（ステップＳ３１０−Ｓ３４０）と、終点ＥＰの座標を補正する終点補正処理（ステップＳ３５０−Ｓ３８０）とが並列に実行される。このため、図１１では、始点補正処理（ステップＳ３１０−Ｓ３４０）と終点補正処理（ステップＳ３５０−Ｓ３８０）とを分けて示している。先ず、始点補正処理について説明する。
【０１４４】
ステップＳ３１０では、始点描画判定部４２は、Ｘ軸を主軸とする正方向ラインＬの始点ＳＰ用の閾値ＴＤを選択する。例えば、始点描画判定部４２は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン１の場合、閾値ＴＤ１１１を選択する。また、例えば、始点描画判定部４２は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン２の場合、閾値ＴＤ１１を選択する。例えば、ステップＳ３１０で選択される閾値は、始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さ（例えば、閾値ＴＬ）を１から引いた値に対応している。
【０１４５】
ステップＳ３２０では、始点描画判定部４２は、ステップＳ３１０で選択した閾値ＴＤが始点ＳＰのＸ座標の小数部以上か否かを判定する。すなわち、始点描画判定部４２は、始点ＳＰから画素境界までの距離ＬＮｓ（＝１−始点ＳＰのＸ座標の小数部）が基準の長さ（＝１−閾値ＴＤ）以上か否かを判定する。
【０１４６】
閾値ＴＤが始点ＳＰのＸ座標の小数部以上のとき（ステップＳ３２０のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ３３０に移る。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが基準の長さ（距離ＬＮｓに対する閾値ＴＬ）以上のとき、描画装置１００Ａの動作は、ステップＳ３３０に移る。したがって、始点描画判定部４２が始点ＳＰを含む画素ＰＸを描画対象の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ３３０に移る。
【０１４７】
一方、閾値ＴＤが始点ＳＰのＸ座標の小数部より小さいとき（ステップＳ３２０のＮｏ）、描画装置１００Ａの動作は、ステップＳ３４０に移る。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが基準の長さ（距離ＬＮｓに対する閾値ＴＬ）より小さいとき、描画装置１００Ａの動作は、ステップＳ３４０に移る。したがって、始点描画判定部４２が始点ＳＰを含む画素ＰＸを非描画の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ３４０に移る。
【０１４８】
ステップＳ３３０では、始点補正部５２は、図９で説明した補正処理１（式（１）、式（２））を始点ＳＰに対して実行する。例えば、始点ＳＰのＸ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＹ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１４９】
すなわち、始点補正部５２は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の始点ＳＰを含む画素ＰＸが描画されるように、始点ＳＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の始点ＳＰを含む画素ＰＸは、描画対象の画素ＰＸとして処理される。このように、始点補正部５２は、Ｘ軸を主軸とする正方向ラインＬの始点ＳＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）以下の場合、補正前の始点ＳＰを含む画素ＰＸを、描画対象の画素ＰＸに設定する。
【０１５０】
ステップＳ３４０では、始点補正部５２は、図９で説明した補正処理２（式（３）、式（４））を始点ＳＰに対して実行する。例えば、始点ＳＰのＸ座標の値が式（３）および式（４）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＹ座標の値が式（４）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１５１】
すなわち、始点補正部５２は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の始点ＳＰを含む画素ＰＸが描画されないように、始点ＳＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の始点ＳＰを含む画素ＰＸは、非描画の画素ＰＸとして処理される。このように、始点補正部５２は、Ｘ軸を主軸とする正方向ラインＬの始点ＳＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）より大きい場合、補正前の始点ＳＰを含む画素ＰＸを、非描画の画素ＰＸに設定する。
【０１５２】
このように、始点補正部５２は、始点描画判定部４２による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、始点描画判定部４２による描画判定の結果が反映される。次に、終点補正処理について説明する。
【０１５３】
ステップＳ３５０では、終点描画判定部４４は、Ｘ軸を主軸とする正方向ラインＬの終点ＥＰ用の閾値を選択する。例えば、終点描画判定部４４は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン１の場合、閾値ＴＤ２１１を選択する。また、例えば、終点描画判定部４４は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン２の場合、閾値ＴＤ２１を選択する。例えば、ステップＳ３５０で選択される閾値は、終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さ（例えば、閾値ＴＬ）に対応している。
【０１５４】
ステップＳ３６０では、終点描画判定部４４は、ステップＳ３５０で選択した閾値ＴＤが終点ＥＰのＸ座標の小数部以下か否かを判定する。すなわち、終点描画判定部４４は、終点ＥＰから画素境界までの距離ＬＮｅ（＝終点ＥＰのＸ座標の小数部）が基準の長さ（＝閾値ＴＤ）以上か否かを判定する。
【０１５５】
閾値ＴＤが終点ＥＰのＸ座標の小数部以下のとき（ステップＳ３６０のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ３７０に移る。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが基準の長さ（距離ＬＮｅに対する閾値ＴＬ）以上のとき、描画装置１００Ａの動作は、ステップＳ３７０に移る。したがって、終点描画判定部４４が終点ＥＰを含む画素ＰＸを描画対象の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ３７０に移る。
【０１５６】
一方、閾値ＴＤが終点ＥＰのＸ座標の小数部より大きいとき（ステップＳ３６０のＮｏ）、描画装置１００Ａの動作は、ステップＳ３８０に移る。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが基準の長さ（距離ＬＮｅに対する閾値ＴＬ）より小さいとき、描画装置１００Ａの動作は、ステップＳ３８０に移る。したがって、終点描画判定部４４が終点ＥＰを含む画素ＰＸを非描画の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ３８０に移る。
【０１５７】
ステップＳ３７０では、終点補正部５４は、図９で説明した補正処理２（式（３）、式（４））を終点ＥＰに対して実行する。例えば、終点ＥＰのＸ座標の値が式（３）および式（４）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＹ座標の値が式（４）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１５８】
すなわち、終点補正部５４は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の終点ＥＰを含む画素ＰＸが描画されるように、終点ＥＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の終点ＥＰを含む画素ＰＸは、描画対象の画素ＰＸとして処理される。このように、終点補正部５４は、Ｘ軸を主軸とする正方向ラインＬの終点ＥＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）以上の場合、補正前の終点ＥＰを含む画素ＰＸを、描画対象の画素ＰＸに設定する。
【０１５９】
ステップＳ３８０では、終点補正部５４は、図９で説明した補正処理１（式（１）、式（２））を終点ＥＰに対して実行する。例えば、終点ＥＰのＸ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＹ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１６０】
すなわち、終点補正部５４は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の終点ＥＰを含む画素ＰＸが描画されないように、終点ＥＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の終点ＥＰを含む画素ＰＸは、非描画の画素ＰＸとして処理される。このように、終点補正部５４は、Ｘ軸を主軸とする正方向ラインＬの終点ＥＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）より小さい場合、補正前の終点ＥＰを含む画素ＰＸを、非描画の画素ＰＸに設定する。
【０１６１】
このように、終点補正部５４は、終点描画判定部４４による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの終点ＥＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、終点描画判定部４４による描画判定の結果が反映される。
【０１６２】
なお、Ｘ軸を主軸とする正方向ラインＬに対する補正処理は、この例に限定されない。例えば、終点補正処理（ステップＳ３５０−Ｓ３８０）は、始点補正処理（ステップＳ３１０−Ｓ３４０）が終了した後に、実行されてもよい。あるいは、始点補正処理（ステップＳ３１０−Ｓ３４０）は、終点補正処理（ステップＳ３５０−Ｓ３８０）が終了した後に、実行されてもよい。
【０１６３】
図１２は、Ｘ軸を主軸とする負方向ラインＬに対する補正処理の一例を示している。すなわち、図１２は、図１０のステップＳ４００の一例を示している。なお、図１２の動作では、始点ＳＰの座標を補正する始点補正処理（ステップＳ４１０−Ｓ４４０）と、終点ＥＰの座標を補正する終点補正処理（ステップＳ４５０−Ｓ４８０）とが並列に実行される。このため、図１２では、始点補正処理（ステップＳ４１０−Ｓ４４０）と終点補正処理（ステップＳ４５０−Ｓ４８０）とを分けて示している。先ず、始点補正処理について説明する。
【０１６４】
ステップＳ４１０では、始点描画判定部４２は、Ｘ軸を主軸とする負方向ラインＬの始点ＳＰ用の閾値ＴＤを選択する。例えば、始点描画判定部４２は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン１の場合、閾値ＴＤ１２１を選択する。また、例えば、始点描画判定部４２は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン２の場合、閾値ＴＤ１２を選択する。例えば、ステップＳ４１０で選択される閾値は、始点ＳＰから画素境界までの距離ＬＮｓと比較される基準の長さ（例えば、閾値ＴＬ）に対応している。
【０１６５】
ステップＳ４２０では、始点描画判定部４２は、ステップＳ４１０で選択した閾値ＴＤが始点ＳＰのＸ座標の小数部以下か否かを判定する。すなわち、始点描画判定部４２は、始点ＳＰから画素境界までの距離ＬＮｓ（＝始点ＳＰのＸ座標の小数部）が基準の長さ（＝閾値ＴＤ）以上か否かを判定する。
【０１６６】
閾値ＴＤが始点ＳＰのＸ座標の小数部以下のとき（ステップＳ４２０のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ４３０に移る。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが基準の長さ（距離ＬＮｓに対する閾値ＴＬ）以上のとき、描画装置１００Ａの動作は、ステップＳ４３０に移る。したがって、始点描画判定部４２が始点ＳＰを含む画素ＰＸを描画対象の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ４３０に移る。
【０１６７】
一方、閾値ＴＤが始点ＳＰのＸ座標の小数部より大きいとき（ステップＳ４２０のＮｏ）、描画装置１００Ａの動作は、ステップＳ４４０に移る。すなわち、始点ＳＰから画素境界までの距離ＬＮｓが基準の長さ（距離ＬＮｓに対する閾値ＴＬ）より小さいとき、描画装置１００Ａの動作は、ステップＳ４４０に移る。したがって、始点描画判定部４２が始点ＳＰを含む画素ＰＸを非描画の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ４４０に移る。
【０１６８】
ステップＳ４３０では、始点補正部５２は、図９で説明した補正処理１（式（１）、式（２））を始点ＳＰに対して実行する。例えば、始点ＳＰのＸ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＹ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１６９】
すなわち、始点補正部５２は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の始点ＳＰを含む画素ＰＸが描画されるように、始点ＳＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の始点ＳＰを含む画素ＰＸは、描画対象の画素ＰＸとして処理される。このように、始点補正部５２は、Ｘ軸を主軸とする負方向ラインＬの始点ＳＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）以上の場合、補正前の始点ＳＰを含む画素ＰＸを、描画対象の画素ＰＸに設定する。
【０１７０】
ステップＳ４４０では、始点補正部５２は、図９で説明した補正処理３（式（５）、式（６））を始点ＳＰに対して実行する。例えば、始点ＳＰのＸ座標の値が式（５）および式（６）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＹ座標の値が式（６）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１７１】
すなわち、始点補正部５２は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の始点ＳＰを含む画素ＰＸが描画されないように、始点ＳＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の始点ＳＰを含む画素ＰＸは、非描画の画素ＰＸとして処理される。このように、始点補正部５２は、Ｘ軸を主軸とする負方向ラインＬの始点ＳＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）より小さい場合、補正前の始点ＳＰを含む画素ＰＸを、非描画の画素ＰＸに設定する。
【０１７２】
このように、始点補正部５２は、始点描画判定部４２による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、始点描画判定部４２による描画判定の結果が反映される。次に、終点補正処理について説明する。
【０１７３】
ステップＳ４５０では、終点描画判定部４４は、Ｘ軸を主軸とする負方向ラインＬの終点ＥＰ用の閾値を選択する。例えば、終点描画判定部４４は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン１の場合、閾値ＴＤ２２１を選択する。また、例えば、終点描画判定部４４は、レジスタ部２０に設定されている閾値ＴＤが図４に示したパターン２の場合、閾値ＴＤ２２を選択する。例えば、ステップＳ４５０で選択される閾値は、終点ＥＰから画素境界までの距離ＬＮｅと比較される基準の長さ（例えば、閾値ＴＬ）を１から引いた値に対応している。
【０１７４】
ステップＳ４６０では、終点描画判定部４４は、ステップＳ４５０で選択した閾値ＴＤが終点ＥＰのＸ座標の小数部以上か否かを判定する。すなわち、終点描画判定部４４は、終点ＥＰから画素境界までの距離ＬＮｅ（＝１−終点ＥＰのＸ座標の小数部）が基準の長さ（＝１−閾値ＴＤ）以上か否かを判定する。
【０１７５】
閾値ＴＤが終点ＥＰのＸ座標の小数部以上のとき（ステップＳ４６０のＹｅｓ）、描画装置１００Ａの動作は、ステップＳ４７０に移る。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが基準の長さ（距離ＬＮｅに対する閾値ＴＬ）以上のとき、描画装置１００Ａの動作は、ステップＳ４７０に移る。したがって、終点描画判定部４４が終点ＥＰを含む画素ＰＸを描画対象の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ４７０に移る。
【０１７６】
一方、閾値ＴＤが終点ＥＰのＸ座標の小数部より小さいとき（ステップＳ４６０のＮｏ）、描画装置１００Ａの動作は、ステップＳ４８０に移る。すなわち、終点ＥＰから画素境界までの距離ＬＮｅが基準の長さ（距離ＬＮｅに対する閾値ＴＬ）より小さいとき、描画装置１００Ａの動作は、ステップＳ４８０に移る。したがって、終点描画判定部４４が終点ＥＰを含む画素ＰＸを非描画の画素ＰＸと判定したとき、描画装置１００Ａの動作は、ステップＳ４８０に移る。
【０１７７】
ステップＳ４７０では、終点補正部５４は、図９で説明した補正処理３（式（５）、式（６））を終点ＥＰに対して実行する。例えば、終点ＥＰのＸ座標の値が式（５）および式（６）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＹ座標の値が式（６）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１７８】
すなわち、終点補正部５４は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の終点ＥＰを含む画素ＰＸが描画されるように、終点ＥＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の終点ＥＰを含む画素ＰＸは、描画対象の画素ＰＸとして処理される。このように、終点補正部５４は、Ｘ軸を主軸とする負方向ラインＬの終点ＥＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）以下の場合、補正前の終点ＥＰを含む画素ＰＸを、描画対象の画素ＰＸに設定する。
【０１７９】
ステップＳ４８０では、終点補正部５４は、図９で説明した補正処理１（式（１）、式（２））を終点ＥＰに対して実行する。例えば、終点ＥＰのＸ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＹ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１８０】
すなわち、終点補正部５４は、Diamond Exit Ruleを補正後のラインＬに適用したときに補正前の終点ＥＰを含む画素ＰＸが描画されないように、終点ＥＰの座標を補正する。これにより、例えば、図１０のステップＳ７００において、補正前の終点ＥＰを含む画素ＰＸは、非描画の画素ＰＸとして処理される。このように、終点補正部５４は、Ｘ軸を主軸とする負方向ラインＬの終点ＥＰのＸ座標の小数部が閾値ＴＤ（Ｘ座標の小数部に対する閾値ＴＤ）より大きい場合、補正前の終点ＥＰを含む画素ＰＸを、非描画の画素ＰＸに設定する。
【０１８１】
このように、終点補正部５４は、終点描画判定部４４による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの終点ＥＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、終点描画判定部４４による描画判定の結果が反映される。
【０１８２】
なお、Ｘ軸を主軸とする負方向ラインＬに対する補正処理は、この例に限定されない。例えば、終点補正処理（ステップＳ４５０−Ｓ４８０）は、始点補正処理（ステップＳ４１０−Ｓ４４０）が終了した後に、実行されてもよい。あるいは、始点補正処理（ステップＳ４１０−Ｓ４４０）は、終点補正処理（ステップＳ４５０−Ｓ４８０）が終了した後に、実行されてもよい。
【０１８３】
図１３は、Ｙ軸を主軸とする正方向ラインＬに対する補正処理の一例を示している。すなわち、図１３は、図１０のステップＳ５００の一例を示している。なお、図１３の動作では、始点ＳＰの座標を補正する始点補正処理（ステップＳ５１０−Ｓ５４０）と、終点ＥＰの座標を補正する終点補正処理（ステップＳ５５０−Ｓ５８０）とが並列に実行される。このため、図１３では、始点補正処理（ステップＳ５１０−Ｓ５４０）と終点補正処理（ステップＳ５５０−Ｓ５８０）とを分けて示している。
【０１８４】
図１３のステップＳ５１０−Ｓ５４０は、図１１のステップＳ３１０−Ｓ３４０に対応している。また、図１３のステップＳ５５０−Ｓ５８０は、図１１のステップＳ３５０−Ｓ３８０に対応している。図１３の動作は、図１１の“Ｘ軸”、“Ｘ座標”、“閾値ＴＤ１１１”および“閾値ＴＤ２１１”を、“Ｙ軸”、“Ｙ座標”、“閾値ＴＤ１１２”および“閾値ＴＤ２１２”にそれぞれ読み替えることで説明される。このため、図１３の動作については、詳細な説明を省略する。
【０１８５】
例えば、始点補正部５２は、Ｙ軸を主軸とする正方向ラインＬの始点ＳＰのＹ座標の小数部がＹ軸を主軸とする正方向ラインＬの始点ＳＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）以下の場合、図９で説明した補正処理１（式（１）、式（２））を始点ＳＰに対して実行する。この場合、例えば、始点ＳＰのＹ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＸ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１８６】
また、例えば、始点補正部５２は、Ｙ軸を主軸とする正方向ラインＬの始点ＳＰのＹ座標の小数部がＹ軸を主軸とする正方向ラインＬの始点ＳＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）より大きい場合、図９で説明した補正処理２（式（３）、式（４））を始点ＳＰに対して実行する。この場合、例えば、始点ＳＰのＹ座標の値が式（３）および式（４）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＸ座標の値が式（４）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１８７】
また、例えば、終点補正部５４は、Ｙ軸を主軸とする正方向ラインＬの終点ＥＰのＹ座標の小数部がＹ軸を主軸とする正方向ラインＬの終点ＥＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）以上の場合、図９で説明した補正処理２（式（３）、式（４））を終点ＥＰに対して実行する。この場合、例えば、終点ＥＰのＹ座標の値が式（３）および式（４）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＸ座標の値が式（４）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１８８】
また、例えば、終点補正部５４は、Ｙ軸を主軸とする正方向ラインＬの終点ＥＰのＹ座標の小数部がＹ軸を主軸とする正方向ラインＬの終点ＥＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）より小さい場合、図９で説明した補正処理１（式（１）、式（２））を終点ＥＰに対して実行する。この場合、例えば、終点ＥＰのＹ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＸ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１８９】
このように、補正部５０は、判定部４０による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、判定部４０による描画判定の結果が反映される。
【０１９０】
図１４は、Ｙ軸を主軸とする負方向ラインＬに対する補正処理の一例を示している。すなわち、図１４は、図１０のステップＳ６００の一例を示している。なお、図１４の動作では、始点ＳＰの座標を補正する始点補正処理（ステップＳ６１０−Ｓ６４０）と、終点ＥＰの座標を補正する終点補正処理（ステップＳ６５０−Ｓ６８０）とが並列に実行される。このため、図１４では、始点補正処理（ステップＳ６１０−Ｓ６４０）と終点補正処理（ステップＳ６５０−Ｓ６８０）とを分けて示している。
【０１９１】
図１４のステップＳ６１０−Ｓ６４０は、図１２のステップＳ４１０−Ｓ４４０に対応している。また、図１４のステップＳ６５０−Ｓ６８０は、図１２のステップＳ４５０−Ｓ４８０に対応している。図１４の動作は、図１２の“Ｘ軸”、“Ｘ座標”、“閾値ＴＤ１２１”および“閾値ＴＤ２２１”を、“Ｙ軸”、“Ｙ座標”、“閾値ＴＤ１２２”および“閾値ＴＤ２２２”にそれぞれ読み替えることで説明される。このため、図１４の動作については、詳細な説明を省略する。
【０１９２】
例えば、始点補正部５２は、Ｙ軸を主軸とする負方向ラインＬの始点ＳＰのＹ座標の小数部がＹ軸を主軸とする負方向ラインＬの始点ＳＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）以上の場合、図９で説明した補正処理１（式（１）、式（２））を始点ＳＰに対して実行する。この場合、例えば、始点ＳＰのＹ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＸ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１９３】
また、例えば、始点補正部５２は、Ｙ軸を主軸とする負方向ラインＬの始点ＳＰのＹ座標の小数部がＹ軸を主軸とする負方向ラインＬの始点ＳＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）より小さい場合、図９で説明した補正処理３（式（５）、式（６））を始点ＳＰに対して実行する。この場合、例えば、始点ＳＰのＹ座標の値が式（５）および式（６）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、始点ＳＰのＸ座標の値が式（６）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１９４】
また、例えば、終点補正部５４は、Ｙ軸を主軸とする負方向ラインＬの終点ＥＰのＹ座標の小数部がＹ軸を主軸とする負方向ラインＬの終点ＥＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）以下の場合、図９で説明した補正処理３（式（５）、式（６））を終点ＥＰに対して実行する。この場合、例えば、終点ＥＰのＹ座標の値が式（５）および式（６）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＸ座標の値が式（６）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１９５】
また、例えば、終点補正部５４は、Ｙ軸を主軸とする負方向ラインＬの終点ＥＰのＹ座標の小数部がＹ軸を主軸とする負方向ラインＬの終点ＥＰ用の閾値ＴＤ（Ｙ座標の小数部に対する閾値ＴＤ）より大きい場合、図９で説明した補正処理１（式（１）、式（２））を終点ＥＰに対して実行する。この場合、例えば、終点ＥＰのＹ座標の値が式（１）および式（２）のＭｉ（補正前の主軸座標Ｍｉ）に代入され、終点ＥＰのＸ座標の値が式（２）のＳｉ（補正前の副軸座標Ｓｉ）に代入される。
【０１９６】
このように、補正部５０は、判定部４０による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正する。これにより、Diamond Exit Ruleにしたがって生成されるライン描画用のデータに、判定部４０による描画判定の結果が反映される。
【０１９７】
図１５は、図８に示した補正部５０により補正される端点の一例を示している。図１５の丸印、四角形および星印の意味は、図６の丸印、四角形および星印の意味と同様である。なお、図１５では、白抜きの丸印および四角形は、補正前の始点ＳＰおよび終点ＥＰをそれぞれ示し、黒塗りの丸印および四角形は、補正後の始点ＳＰおよび終点ＥＰをそれぞれ示している。閾値ＴＬ１、ＴＬ２は、例えば、図４のパターン３の始点ＳＰ用および終点ＥＰ用のそれぞれの閾値（長さを示す閾値）に対応している。また、閾値ＴＤ１１、ＴＤ２１は、閾値ＴＬ１、ＴＬ２をＸ座標の小数部で表した閾値である。例えば、閾値ＴＬ１は、“０．３”であり、閾値ＴＬ２は、“０．４”である。この場合、閾値ＴＤ１１は、“０．７”であり、閾値ＴＤ２１は、“０．４”である。
【０１９８】
ラインＬ５０、Ｌ５２、Ｌ５４は、Ｘ軸を主軸とする正方向ラインＬである。先ず、ラインＬ５０、Ｌ５２について説明する。
【０１９９】
ラインＬ５０、Ｌ５２は、Ｙ軸に垂直で互いに同じ長さのラインである。また、ラインＬ５０、Ｌ５２の始点ＳＰ５０、ＳＰ５２のＸ座標は、互いに同じである。したがって、ラインＬ５０、Ｌ５２の終点ＥＰ５０、ＥＰ５２のＸ座標は、互いに同じである。例えば、始点ＳＰ５０および終点ＥＰ５０の座標（Ｘ座標、Ｙ座標）は、それぞれ座標（１．８、０．８）および座標（７．５、０．８）である。また、例えば、始点ＳＰ５２および終点ＥＰ５２の座標（Ｘ座標、Ｙ座標）は、それぞれ座標（１．８、２．５）および座標（７．５、２．５）である。
【０２００】
この場合、ラインＬ５０、Ｌ５２のＹ座標に拘わらず、描画されるラインＬ５０、Ｌ５２の長さおよび端点（例えば、始点画素ＰＸの中心のＸ座標、終点画素ＰＸの中心のＸ座標）は、ラインＬ５０、Ｌ５２で揃っていることが望ましい。
【０２０１】
例えば、ラインＬ５０、Ｌ５２の始点ＳＰ５０、ＳＰ５２のＸ座標の小数部（＝０．８）は、閾値ＴＤ１１（＝０．７）より大きい。このため、始点ＳＰ５０、ＳＰ５２をそれぞれ含む画素ＰＸは、描画されない。
【０２０２】
したがって、始点補正部５２は、例えば、図１１のステップＳ３４０において、図９で説明した補正処理２（式（３）、式（４））を、始点ＳＰ５０、ＳＰ５２に対して実行する。この結果、始点ＳＰ５０、ＳＰ５２のＸ座標は、“１．８”から“２．５”に補正される。なお、始点ＳＰ５０、ＳＰ５２のＹ座標は、ラインＬ５０、Ｌ５２の傾きが“０”のため、補正前後で変化しない。したがって、ラインＬ５０、Ｌ５２の補正後の始点ＳＰ５０ａ、ＳＰ５２ａの座標（Ｘ座標、Ｙ座標）は、それぞれ座標（２．５、０．８）および座標（２．５、２．５）である。
【０２０３】
また、ラインＬ５０、Ｌ５２の終点ＥＰ５０、ＥＰ５２のＸ座標の小数部（＝０．５）は、閾値ＴＤ２１（＝０．４）以上である。このため、終点ＥＰ５０、ＥＰ５２をそれぞれ含む画素ＰＸは、描画される。
【０２０４】
したがって、終点補正部５４は、例えば、図１１のステップＳ３７０において、図９で説明した補正処理２（式（３）、式（４））を、終点ＥＰ５０、ＥＰ５２に対して実行する。この結果、終点ＥＰ５０、ＥＰ５２のＸ座標は、“７．５”から“８．５”に補正される。なお、終点ＥＰ５０、ＥＰ５２のＹ座標は、ラインＬ５０、Ｌ５２の傾きが“０”のため、補正前後で変化しない。したがって、ラインＬ５０、Ｌ５２の補正後の終点ＥＰ５０ａ、ＥＰ５２ａの座標（Ｘ座標、Ｙ座標）は、それぞれ座標（８．５、０．８）および座標（８．５、２．５）である。
【０２０５】
例えば、補正後のラインＬ５０、Ｌ５２では、始点ＳＰ５０ａ、ＳＰ５２ａをそれぞれ含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。このため、始点ＳＰ５０ａ、ＳＰ５２ａをそれぞれ含む画素ＰＸは、始点画素ＰＸとして描画される。
【０２０６】
また、補正後のラインＬ５０、Ｌ５２では、終点ＥＰ５０ａ、ＥＰ５２ａをそれぞれ含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していない。このため、終点ＥＰ５０ａ、ＥＰ５２ａをそれぞれ含む画素ＰＸは、描画されない。なお、終点ＥＰ５０ａ、ＥＰ５２ａをそれぞれ含む画素ＰＸの始点ＳＰ５０ａ、ＳＰ５２ａ側に隣接する画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。このため、終点ＥＰ５０ａ、ＥＰ５２ａをそれぞれ含む画素ＰＸの始点ＳＰ５０ａ、ＳＰ５２ａ側に隣接する画素ＰＸ（終点ＥＰ５０、ＥＰ５２をそれぞれ含む画素ＰＸ）は、終点画素ＰＸとして描画される。
【０２０７】
このように、補正部５０は、判定部４０による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬ５０、Ｌ５２の始点ＳＰおよび終点ＥＰの座標を補正する。したがって、描画装置１００Ａは、補正後のラインＬ５０、Ｌ５２にDiamond Exit Ruleを適用することにより、ラインＬ５０、Ｌ５２を、端点（始点画素ＰＸの中心のＸ座標、終点画素ＰＸの中心のＸ座標）を揃えて描画できる。なお、Ｙ主軸ラインＬについては、図１５のＸ座標、Ｙ座標を入れ替えることにより説明される。
【０２０８】
また、描画装置１００Ａは、互いに同じ長さでＸ軸（あるいは、Ｙ軸）に対して斜めの複数のラインＬを描画する際にも、補正後のラインＬにDiamond Exit Ruleを適用することにより、複数のラインＬを、長さや端点を揃えて描画できる。例えば、図６のラインＬ３６、Ｌ３８では、始点ＳＰ３６、ＳＰ３８は、ラインＬ３６、Ｌ３８上でＹ座標が“１．５”の位置に補正される。また、図６のラインＬ３６、Ｌ３８の終点ＥＰ３６、ＥＰ３８は、ラインＬ３６、Ｌ３８上でＹ座標が“５．５”の位置に補正される。この場合、描画装置１００Ａは、補正後のラインＬ３６、Ｌ３８にDiamond Exit Ruleを適用することにより、ラインＬ３６、Ｌ３８を、長さや端点を揃えて描画できる。
【０２０９】
次に、ラインＬ５４について説明する。ラインＬ５４は、補正前の始点ＳＰ５４を含む画素ＰＸが始点画素ＰＸとして描画されるときの一例であり、補正前の終点ＥＰ５４を含む画素ＰＸが描画されないときの一例である。
【０２１０】
例えば、ラインＬ５４の始点ＳＰ５４および終点ＥＰ５４の座標（Ｘ座標、Ｙ座標）は、それぞれ座標（１．６、４．１）および座標（７．３、４．１）である。この場合、例えば、ラインＬ５４の始点ＳＰ５４のＸ座標の小数部（＝０．６）は、閾値ＴＤ１１（＝０．７）以下である。このため、始点ＳＰ５４を含む画素ＰＸは、描画される。
【０２１１】
したがって、始点補正部５２は、例えば、図１１のステップＳ３３０において、図９で説明した補正処理１（式（１）、式（２））を、始点ＳＰ５４に対して実行する。この結果、始点ＳＰ５４のＸ座標は、“１．６”から“１．５”に補正される。なお、始点ＳＰ５４のＹ座標は、ラインＬ５０、Ｌ５２の傾きが“０”のため、補正前後で変化しない。したがって、ラインＬ５４の補正後の始点ＳＰ５４ａの座標（Ｘ座標、Ｙ座標）は、座標（１．５、４．１）である。
【０２１２】
また、ラインＬ５４の終点ＥＰ５４のＸ座標の小数部（＝０．３）は、閾値ＴＤ２１（＝０．４）より小さい。このため、終点ＥＰ５４を含む画素ＰＸは、描画されない。したがって、終点補正部５４は、例えば、図１１のステップＳ３８０において、図９で説明した補正処理１（式（１）、式（２））を、終点ＥＰ５４に対して実行する。この結果、終点ＥＰ５４のＸ座標は、“７．３”から“７．５”に補正される。なお、終点ＥＰ５４のＹ座標は、ラインＬ５４の傾きが“０”のため、補正前後で変化しない。したがって、ラインＬ５４の補正後の終点ＥＰ５４ａの座標（Ｘ座標、Ｙ座標）は、座標（７．５、４．１）である。
【０２１３】
例えば、補正後のラインＬ５４では、終点ＥＰ５４ａを含む画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有していない。このため、終点ＥＰ５４ａを含む画素ＰＸは、描画されない。なお、終点ＥＰ５４ａを含む画素ＰＸの始点ＳＰ５４ａ側に隣接する画素ＰＸは、ダイヤモンド枠ＤＢ内からダイヤモンド枠ＤＢ外に向かうラインＬを有している。このため、終点ＥＰ５４ａを含む画素ＰＸの始点ＳＰ５４ａ側に隣接する画素ＰＸは、終点画素ＰＸとして描画される。
【０２１４】
このように、補正部５０は、判定部４０による描画判定の結果と、補正後のラインＬ５４にDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬ５４の始点ＳＰおよび終点ＥＰの座標を補正する。
【０２１５】
以上、図８から図１５に示した実施形態においても、図１から図７に示した実施形態と同様の効果を得ることができる。例えば、この実施形態では、端点の主軸座標が互いに同じ複数のラインＬを描画する際に、端点の副軸座標に拘わらず、描画される複数のラインＬの端点を揃えることができる。したがって、この実施形態では、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、複数のラインＬの長さや端点を揃えることができる。
【０２１６】
さらに、この実施形態では、始点ＳＰおよび終点ＥＰの座標を補正し、補正前の始点ＳＰを含む画素ＰＸおよび補正前の終点ＥＰを含む画素ＰＸを描画するか否かの判定結果を、補正したラインＬに所定のルール（例えば、Diamond Exit Rule）を適用したときの結果に反映させる。例えば、描画装置１００Ａは、始点ＳＰおよび終点ＥＰの座標を補正する補正部５０を有している。補正部５０は、例えば、判定部４０による描画判定の結果と、補正後のラインＬにDiamond Exit Ruleを適用したときの描画判定の結果とが矛盾しないように、ラインＬの始点ＳＰおよび終点ＥＰの座標を補正する。
【０２１７】
この結果、この実施形態では、端点の主軸座標が互いに同じ複数のラインＬを描画する際に、補正後のラインＬにDiamond Exit Ruleを適用することにより、描画される複数のラインＬの長さや端点を揃えることができる。このように、この実施形態では、ラインを描画する際の所定のルール（例えば、Diamond Exit Rule）を効率よく使用できる。
【０２１８】
図１６は、描画装置、描画方法およびシステムの別の実施形態を示している。この実施形態の描画装置１００Ｂは、閾値演算部２２が図８に示した描画装置１００Ａに追加されている。描画装置１００Ｂのその他の構成は、図８に示した描画装置１００Ａと同様である。図１から図１５で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
【０２１９】
例えば、描画装置１００Ｂは、ラインＬの端点（始点ＳＰ、終点ＥＰ）の座標からライン描画用のデータをDiamond Exit Ruleにしたがって生成するラインセットアップ部１０Ｂを有している。なお、ラインセットアップ部１０Ｂは、ラインＬの始点ＳＰおよび終点ＥＰをそれぞれ含む画素ＰＸに対しては、Diamond Exit Ruleを適用せずに、予め決められた閾値に基づく描画判定（画素を描画するか否かの判定）を実行する。
【０２２０】
描画装置１００Ｂのラインセットアップ部１０Ｂは、例えば、レジスタ部２０、閾値演算部２２、解析部３０、判定部４０、補正部５０およびデータ生成部６０を有している。すなわち、ラインセットアップ部１０Ｂでは、閾値演算部２２が図８に示したラインセットアップ部１０Ａに追加されている。ラインセットアップ部１０Ｂのその他の構成は、図８に示したラインセットアップ部１０Ａと同様である。したがって、レジスタ部２０、解析部３０、判定部４０、補正部５０およびデータ生成部６０については、詳細な説明を省略する。
【０２２１】
閾値演算部２２は、例えば、ラインＬの端点（始点ＳＰ、終点ＥＰ）の座標を示す情報を受け、ラインＬの端点（始点ＳＰ、終点ＥＰ）の座標に基づいて閾値を生成する。そして、閾値演算部２２は、ラインＬの端点（始点ＳＰ、終点ＥＰ）の座標に基づいて生成した閾値を、レジスタ部２０に設定する。
【０２２２】
例えば、閾値演算部２２は、始点ＳＰを含む画素ＰＸが描画されるように、始点ＳＰ用の閾値を始点ＳＰの座標に基づいて自動的に生成する。閾値演算部２２は、例えば、図１５に示したラインＬ５０に対しては、始点ＳＰ５０のＸ座標の小数部（＝０．８）以上で、かつ、“１”より小さい閾値ＴＤ１１を生成する。
【０２２３】
なお、閾値演算部２２は、始点ＳＰを含む画素ＰＸが描画されないように、始点ＳＰ用の閾値を始点ＳＰの座標に基づいて自動的に生成してもよい。この場合、閾値演算部２２は、例えば、図１５に示したラインＬ５０に対しては、始点ＳＰ５０のＸ座標の小数部（＝０．８）より小さく、かつ、０以上の閾値ＴＤ１１を生成する。
【０２２４】
例えば、閾値演算部２２は、始点ＳＰを含む画素ＰＸが常に描画されるように閾値を生成してもよいし、始点ＳＰを含む画素ＰＸが常に描画されないように閾値を生成してもよい。あるいは、閾値演算部２２は、始点ＳＰを含む画素ＰＸが描画されるように閾値を生成する場合と、始点ＳＰを含む画素ＰＸが描画されないように閾値を生成する場合とを、閾値演算部２２の外部（例えば、ＣＰＵ）からの制御等により切り替えてもよい。
【０２２５】
また、例えば、閾値演算部２２は、終点ＥＰを含む画素ＰＸが描画されるように、終点ＥＰ用の閾値を終点ＥＰの座標に基づいて自動的に生成する。閾値演算部２２は、例えば、図１５に示したラインＬ５０に対しては、終点ＥＰ５０のＸ座標の小数部（＝０．５）以下で、かつ、０以上の閾値ＴＤ２１を生成する。
【０２２６】
なお、閾値演算部２２は、終点ＥＰを含む画素ＰＸが描画されないように、終点ＥＰ用の閾値を終点ＥＰの座標に基づいて自動的に生成してもよい。この場合、閾値演算部２２は、例えば、図１５に示したラインＬ５０に対しては、終点ＥＰ５０のＸ座標の小数部（＝０．５）より大きく、かつ、“１”より小さい閾値ＴＤ２１を生成する。
【０２２７】
例えば、閾値演算部２２は、終点ＥＰを含む画素ＰＸが常に描画されるように閾値を生成してもよいし、終点ＥＰを含む画素ＰＸが常に描画されないように閾値を生成してもよい。あるいは、閾値演算部２２は、終点ＥＰを含む画素ＰＸが描画されるように閾値を生成する場合と、終点ＥＰを含む画素ＰＸが描画されないように閾値を生成する場合とを、閾値演算部２２の外部（例えば、ＣＰＵ）からの制御等により切り替えてもよい。
【０２２８】
このように、閾値演算部２２は、始点ＳＰ用の閾値を始点ＳＰの座標に基づいて自動的に生成する第１演算部の一例であり、終点ＥＰ用の閾値を終点ＥＰの座標に基づいて自動的に生成する第２演算部の一例である。閾値演算部２２は、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸの両方が描画されるように閾値を生成してもよいし、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸのうちの一方のみが描画されるように閾値を生成してもよい。
【０２２９】
例えば、閾値演算部２２は、連続する２つのラインＬのうちの先に描画されるラインＬの終点ＥＰを含む画素ＰＸを描画するように終点ＥＰ用の閾値を生成した場合、後に描画されるラインＬの始点ＳＰを含む画素ＰＸを描画しないように始点ＳＰ用の閾値を生成してもよい。あるいは、閾値演算部２２は、連続する２つのラインＬのうちの先に描画されるラインＬの終点ＥＰを含む画素ＰＸを描画しないように終点ＥＰ用の閾値を生成した場合、後に描画されるラインＬの始点ＳＰを含む画素ＰＸを描画するように始点ＳＰ用の閾値を生成してもよい。この場合、連続するラインＬでの画素ＰＸの２度うちを回避できる。
【０２３０】
なお、描画装置１００Ｂの構成は、この例に限定されない。例えば、レジスタ部２０は、省かれてもよい。この場合、閾値演算部２２は、ラインＬの始点ＳＰの座標に基づいて生成した始点ＳＰ用の閾値を始点描画判定部４２に出力し、ラインＬの終点ＥＰの座標に基づいて生成した終点ＥＰ用の閾値を終点描画判定部４４に出力する。
【０２３１】
また、閾値演算部２２は、基準の長さを示す閾値ＴＬを閾値演算部２２の外部（例えば、ＣＰＵ）から受けてもよい。この場合、閾値演算部２２は、外部から受けた閾値ＴＬに基づいて、主軸座標の小数部で表した閾値ＴＤを生成してもよい。あるいは、閾値演算部２２は、主軸座標の小数部で表した閾値ＴＤを閾値演算部２２の外部（例えば、ＣＰＵ）から受けてもよい。この場合、閾値演算部２２は、外部から受けた閾値ＴＤに基づいて、基準の長さを示す閾値ＴＬを生成してもよい。
【０２３２】
以上、図１６に示した実施形態においても、図１から図１５に示した実施形態と同様の効果を得ることができる。例えば、この実施形態では、端点の主軸座標が互いに同じ複数のラインＬを描画する際に、端点の副軸座標に拘わらず、描画される複数のラインＬの端点を揃えることができる。したがって、この実施形態では、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、複数のラインＬの長さや端点を揃えることができる。
【０２３３】
さらに、この実施形態では、始点ＳＰ用の閾値を始点ＳＰの座標に基づいて自動的に生成し、終点ＥＰ用の閾値を終点ＥＰの座標に基づいて自動的に生成する。例えば、この実施形態では、始点ＳＰを含む画素ＰＸおよび終点ＥＰを含む画素ＰＸのうちの一方のみが描画されるように閾値を生成してもよい。この場合、連続するラインＬでの画素ＰＸの２度うちを回避できる。これにより、この実施形態では、画素ＰＸの２度うちに起因する画質の劣化を防止できる。また、この実施形態では、画素ＰＸの２度うちによる不要な画像処理の発生を低減できる。
【０２３４】
図１７は、描画装置、描画方法およびシステムの別の実施形態を示している。図１から図１６で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。描画装置１０２は、例えば、頂点処理部１１０、図形セットアップ部１２０および描画処理部１３０を有している。
【０２３５】
頂点処理部１１０は、図形やラインＬの頂点データを描画装置１０２の外部から受け、２次元座標系の表示領域ＤＲに描画する図形やラインＬの頂点の座標（以下、頂点座標とも称する）を算出する。例えば、頂点処理部１１０は、ラインＬの頂点データに基づいて、表示領域ＤＲに描画するラインＬの端点（始点ＳＰおよび終点ＥＰ）の座標を算出する。
【０２３６】
図形セットアップ部１２０は、表示領域ＤＲに描画する図形やラインＬの頂点座標を、頂点処理部１１０から受ける。そして、図形セットアップ部１２０は、頂点処理部１１０から受けた頂点座標に基づいて、描画用のデータを生成する。描画用のデータは、例えば、表示領域ＤＲに描画する図形やラインＬに対応する画素ＰＸの色等を内挿で求める際に使用されるパラメータである。
【０２３７】
例えば、図形セットアップ部１２０は、図１、図８および図１６に示したラインセットアップ部１０、１０Ａ、１０Ｂのいずれかと、三角形セットアップ部１２２とを有している。ラインセットアップ部１０（１０Ａ、１０Ｂ）については、図１から図１６で説明しているため、詳細な説明を省略する。例えば、ラインセットアップ部１０（１０Ａ、１０Ｂ）は、頂点処理部１１０から受けたラインＬの頂点座標（始点ＳＰおよび終点ＥＰの座標）に基づいて、ライン描画用のデータを生成する。
【０２３８】
三角形セットアップ部１２２は、例えば、頂点処理部１１０から受けた三角形の頂点座標に基づいて、三角形描画用のデータを生成する。なお、図形は、三角形に限定されない。三角形描画用のデータ、ライン描画用のデータ等の描画用のデータは、描画処理部１３０に転送される。
【０２３９】
描画処理部１３０は、表示領域ＤＲに描画する図形やラインＬに対応する画素ＰＸのデータを描画用のデータに基づいて生成する。そして、描画処理部１３０は、例えば、描画装置１０２の外部のメモリ（画像メモリ等）に画素ＰＸのデータを転送する。これにより、図形やラインＬが表示領域ＤＲに表示される。
【０２４０】
図１８は、図１７に示した描画装置１０２を含むグラフィックチップ２００の一例を示している。グラフィックチップ２００もシステムの一態様である。グラフィックチップ２００は、描画装置１０２、プログラマブルシェーダ２１０、ホストインタフェース２２０、メモリコントローラ２３０、キャプチャコントローラ２４０およびディスプレイコントローラ２５０を有している。描画装置１０２、プログラマブルシェーダ２１０、メモリコントローラ２３０、キャプチャコントローラ２４０およびディスプレイコントローラ２５０は、例えば、バスＢＵＳ１０に接続されている。
【０２４１】
例えば、描画装置１０２は、メモリコントローラ２３０、キャプチャコントローラ２４０等からバスＢＵＳ１０を介して、図形やラインＬの頂点データを受ける。そして、描画装置１０２は、プログラマブルシェーダ２１０のプログラム内容にしたがって、頂点データから画素ＰＸのデータを生成する。プログラマブルシェーダ２１０のプログラム内容は、例えば、陰影処理等のグラフィックス処理に関するものである。
【０２４２】
また、描画装置１０２は、頂点データから生成した画素ＰＸのデータを、バスＢＵＳ１０を介してディスプレイコントローラ２５０に出力する。ディスプレイコントローラ２５０は、描画装置１０２から受けた画素ＰＸのデータに基づいて、図形やラインＬを表示領域ＤＲに表示する。
【０２４３】
ホストインタフェース２２０は、バスＢＵＳ２０および描画装置１０２に接続されている。例えば、描画装置１０２は、ホストインタフェース２２０およびバスＢＵＳ２０を介して、グラフィックチップ２００の外部と通信する。バスＢＵＳ２０には、例えば、グラフィックチップ２００との通信を可能にする外部インタフェースが接続されている。なお、グラフィックチップ２００の構成は、この例に限定されない。
【０２４４】
以上、図１７から図１８に示した実施形態においても、図１から図１６に示した実施形態と同様の効果を得ることができる。例えば、この実施形態では、端点の主軸座標が互いに同じ複数のラインＬを描画する際に、端点の副軸座標に拘わらず、描画される複数のラインＬの端点を揃えることができる。したがって、この実施形態では、Ｘ軸やＹ軸に垂直で互いに同じ長さの複数のラインＬを描画する際に、複数のラインＬの長さや端点を揃えることができる。
【０２４５】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置であって、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定する解析部と、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する判定部と
を備えていることを特徴とする描画装置。
（付記２）
付記１記載の描画装置において、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離と第１閾値との比較結果に基づいて、前記始点の座標を補正し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離と第２閾値との比較結果に基づいて、前記終点の座標を補正する補正部を備えていることを特徴とする描画装置。
（付記３）
付記１または付記２に記載の描画装置において、
２つの前記ラインのうちの一方のラインの前記終点の座標と、前記２つの前記ラインのうちの他方のラインの前記始点の座標とが同じ座標の場合に、
前記判定部は、前記一方のラインの前記終点を含む前記画素を描画すると判定した場合、前記他方のラインの前記始点を含む前記画素を描画しないと判定する
ことを特徴とする描画装置。
（付記４）
付記２記載の描画装置において、
前記始点を含む前記画素が描画されるように、前記第１閾値を前記始点の座標に基づいて自動的に生成する第１演算部を備えていることを特徴とする描画装置。
（付記５）
付記２に記載の描画装置において、
前記始点を含む前記画素が描画されないように、前記第１閾値を前記始点の座標に基づいて自動的に生成する第１演算部を備えていることを特徴とする描画装置。
（付記６）
付記２、付記４および付記５のいずれか１項に記載の描画装置において、
前記終点を含む前記画素が描画されるように、前記第２閾値を前記終点の座標に基づいて自動的に生成する第２演算部を備えていることを特徴とする描画装置。
（付記７）
付記２、付記４および付記５のいずれか１項に記載の描画装置において、
前記終点を含む前記画素が描画されないように、前記第２閾値を前記終点の座標に基づいて自動的に生成する第２演算部を備えていることを特徴とする描画装置。
（付記８）
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画方法であって、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定し、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する
ことを特徴とする描画方法。
（付記９）
付記８記載の描画方法において、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離と第１閾値との比較結果に基づいて、前記始点の座標を補正し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離と第２閾値との比較結果に基づいて、前記終点の座標を補正する
ことを特徴とする描画方法。
（付記１０）
付記８記載または付記９に記載の描画方法において、
２つの前記ラインのうちの一方のラインの前記終点の座標と、前記２つの前記ラインのうちの他方のラインの前記始点の座標とが同じ座標の場合に、
前記一方のラインの前記終点を含む前記画素を描画すると判定した場合、前記他方のラインの前記始点を含む前記画素を描画しないと判定する
ことを特徴とする描画方法。
（付記１１）
付記９記載の描画方法において、
前記始点を含む前記画素が描画されるように、前記第１閾値を前記始点の座標に基づいて自動的に生成することを特徴とする描画方法。
（付記１２）
付記９記載の描画方法において、
前記始点を含む前記画素が描画されないように、前記第１閾値を前記始点の座標に基づいて自動的に生成することを特徴とする描画方法。
（付記１３）
付記９、付記１１および付記１２のいずれか１項に記載の描画方法において、
前記終点を含む前記画素が描画されるように、前記第２閾値を前記終点の座標に基づいて自動的に生成することを特徴とする描画方法。
（付記１４）
付記９、付記１１および付記１２のいずれか１項に記載の描画方法において、
前記終点を含む前記画素が描画されないように、前記第２閾値を前記終点の座標に基づいて自動的に生成することを特徴とする描画方法。
（付記１５）
第１方向および前記第１方向と交差する第２方向に配置された複数の画素を含む表示領域に、ラインを描画する描画装置を備え、
前記描画装置は、
前記ラインの始点および終点の座標を示す情報を受け、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さ以上のとき、前記第１方向を前記ラインの主方向と判定し、前記ラインの前記第１方向の長さが前記ラインの前記第２方向の長さより短いとき、前記第２方向を前記ラインの主方向と判定する解析部と、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離に基づいて、前記始点を含む前記画素を描画するか否かを判定し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離に基づいて、前記終点を含む前記画素を描画するか否かを判定する判定部と
を備えていることを特徴とするシステム。
（付記１６）
付記１５記載のシステムにおいて、
前記描画装置は、
前記始点を含む画素の前記主方向の前記終点側の境界から前記始点までの距離と第１閾値との比較結果に基づいて、前記始点の座標を補正し、前記終点を含む画素の前記主方向の前記始点側の境界から前記終点までの距離と第２閾値との比較結果に基づいて、前記終点の座標を補正する補正部を備えている
ことを特徴とするシステム。
（付記１７）
付記１５または付記１６に記載のシステムにおいて、
２つの前記ラインのうちの一方のラインの前記終点の座標と、前記２つの前記ラインのうちの他方のラインの前記始点の座標とが同じ座標の場合に、
前記判定部は、前記一方のラインの前記終点を含む前記画素を描画すると判定した場合、前記他方のラインの前記始点を含む前記画素を描画しないと判定する
ことを特徴とするシステム。
（付記１８）
付記１６記載のシステムにおいて、
前記描画装置は、前記始点を含む前記画素が描画されるように、前記第１閾値を前記始点の座標に基づいて自動的に生成する第１演算部を備えていることを特徴とするシステム。
（付記１９）
付記１６記載のシステムにおいて、
前記描画装置は、前記始点を含む前記画素が描画されないように、前記第１閾値を前記始点の座標に基づいて自動的に生成する第１演算部を備えていることを特徴とするシステム。
（付記２０）
付記１６、付記１８および付記１９のいずれか１項に記載のシステムにおいて、
前記描画装置は、前記終点を含む前記画素が描画されるように、前記第２閾値を前記終点の座標に基づいて自動的に生成する第２演算部を備えていることを特徴とするシステム。
（付記２１）
付記１６、付記１８および付記１９のいずれか１項に記載のシステムにおいて、
前記描画装置は、前記終点を含む前記画素が描画されないように、前記第２閾値を前記終点の座標に基づいて自動的に生成する第２演算部を備えていることを特徴とするシステム。
【０２４６】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２４７】
１０、１０Ａ、１０Ｂ‥ラインセットアップ部；２０‥レジスタ部；２２‥閾値演算部；３０‥解析部；３２‥主軸判定部；３４‥方向判定部；４０‥判定部；４２‥始点描画判定部；４４‥終点描画判定部；５０‥補正部；５２‥始点補正部；５４‥終点補正部；１００、１００Ａ、１００Ｂ、１０２‥描画装置；１１０‥頂点処理部；１２０‥図形セットアップ部；１２２‥三角形セットアップ部；１３０‥描画処理部；２００‥グラフィックチップ；
２１０‥プログラマブルシェーダ；２２０‥ホストインタフェース；２３０‥メモリコントローラ；２４０‥キャプチャコントローラ；２５０‥ディスプレイコントローラ；ＢＵＳ１０、ＢＵＳ２０‥バス
【図１】
2015005087.tif 000003
【図２】
2015005087.tif 000004
【図３】
2015005087.tif 000005
【図４】
2015005087.tif 000006
【図５】
2015005087.tif 000007
【図６】
2015005087.tif 000008
【図７】
2015005087.tif 000009
【図８】
2015005087.tif 000010
【図９】
2015005087.tif 000011
【図１０】
2015005087.tif 000012
【図１１】
2015005087.tif 000013
【図１２】
2015005087.tif 000014
【図１３】
2015005087.tif 000015
【図１４】
2015005087.tif 000016
【図１５】
2015005087.tif 000017
【図１６】
2015005087.tif 000018
【図１７】
2015005087.tif 000019
【図１８】
2015005087.tif 000020