(57)【要約】【課題】連続ラインを描画する場合に、少ない処理負荷でライン同士の接点の２度打ちを防止する。【解決手段】ＤＥＲ処理部５０は、第１ラインの描画情報を描画ルールに基づいて生成し、第１ラインの終点を次の第２ラインの始点として連続描画するための第１の描画情報を生成する。終点描画判定部６０は、第１ラインの終点を含むピクセルを描画するか判定する。始点補正判定部６２は、第１ラインの終点を含むピクセルを描画する場合、第２ラインの描画方向を判定し、第２ラインの始点座標の補正が必要か判定する。座標補正処理部６４は、第２ラインの始点座標の補正が必要な場合、第２ラインの始点座標を当該始点が含まれるピクセルの隣接ピクセル内に補正する。ライン消失判定部６６は、第２ラインの主軸方向の長さが１ピクセル以上の場合、補正された第２ラインの始点座標を第２の描画情報として出力し、１ピクセル未満の場合、第２ラインを非描画にする。【選択図】図３
2014052782.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成する描画情報生成部と、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定する終点描画判定部と、
前記描画判定部が前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する始点補正判定部と、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正する座標補正処理部と、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、前記座標補正処理部により補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とするライン消失判定部と、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう描画処理部と、
を備えたことを特徴とするライン描画装置。
【請求項２】
前記ライン消失判定部は、前記第２ラインの始点を補正する前の前記第２ラインの描画方向と、前記第２ラインの始点を補正した後の前記第２ラインの描画方向と、が同一であるか否かを判定し、同一である場合に、前記第２ラインの主軸方向における長さが１ピクセル以上であると判定し、同一でない場合に、前記次ラインの主軸方向における長さが１ピクセル未満であると判定する
ことを特徴とする請求項１記載のライン描画装置。
【請求項３】
前記始点及び前記終点の座標に基づいて、前記始点及び前記終点を結ぶラインの主軸がＸ軸であるか前記Ｘ軸と直交するＹ軸であるかを判定する主軸判定部と、
前記ラインの前記始点及び前記終点のＸ座標及びＹ座標の各々に基づいて前記ラインの描画方向を判定する描画方向判定部と、
を備えることを特徴とする請求項１又は請求項２記載のライン描画装置。
【請求項４】
前記終点描画判定部は、前記主軸判定部により判定された前記第１ラインの主軸と、前記第１ラインの終点の前記ピクセル内の位置と、前記描画判定部により判定された前記第１ラインの描画方向と、に基づいて、前記第１ラインの終点が含まれるピクセルを描画するか否かを判定する
ことを特徴とする請求項３記載のライン描画装置。
【請求項５】
前記始点補正判定部は、前記第１ラインの終点を描画すると判定された場合に、前記主軸判定部により判定された前記第２ラインの主軸と、前記描画方向判定部により判定された前記第２ラインの描画方向と、前記第２ラインの始点の前記ピクセル内の位置と、に基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する
ことを特徴とする請求項３又は請求項４記載のライン描画装置。
【請求項６】
前記座標補正処理部は、前記第２ラインの主軸が前記Ｘ軸の場合は、前記第２ラインの始点のＸ座標を１ピクセル分補正すると共に前記第２ラインの始点のＹ座標を前記第２ラインの傾きに応じた分補正し、前記第２ラインの主軸が前記Ｙ軸の場合は、前記第２ラインの始点のＹ座標を１ピクセル分補正すると共に前記第２ラインの始点のＸ座標を前記第２ラインの傾きに応じた分補正する
ことを特徴とする請求項３〜５の何れか１項に記載のライン描画装置。
【請求項７】
前記描画ルールは、前記始点と終点とを結ぶ第１ラインが、ピクセル内に予め設定された枠と前記ピクセル内において少なくとも１回交差するピクセルを描画するルールである
ことを特徴とする請求項１〜６の何れか１項に記載のライン描画装置。
【請求項８】
コンピュータが、
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成し、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定し、
前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定し、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正し、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とし、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう
ことを含むライン描画方法。
【請求項９】
コンピュータに、
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成し、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定し、
前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定し、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正し、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とし、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう
ことを含む処理を実行させるためのライン描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、ライン描画装置、ライン描画方法、及びライン描画プログラムに関する。
【背景技術】
【０００２】
従来、コンピュータグラフィックス等の分野における描画方法の一つとしてライン描画がある。ライン描画には、「独立ライン」及び「連続ライン」の二つの描画方法がある。
【０００３】
独立ラインの描画においては、各ラインは独立しているものとするため、或るラインの終点と次に描画するラインの始点が重なったとしても、それぞれの点（ピクセル）をそのまま描画する。すなわち、独立ラインの場合は、ライン同士の接点を２回描画する「２度打ち」を許容する。
【０００４】
例えば、図２０に示すようにＡ〜Ｆ点の座標が指定され、４本のラインＬ１０１〜Ｌ１０４を独立ラインとして描画するように指示された場合、ラインＬ１０１の始点はＡ点、終点はＢ点であり、Ａ点からＢ点までライン描画する。また、ラインＬ１０２の始点はＢ点、終点はＣ点であり、Ｂ点からＣ点までライン描画する。ラインＬ１０２の始点であるＢ点はラインＬ１０１の終点でもあるが、独立ラインであるため、Ｂ点は２度打ちされる。また、ラインＬ１０３の始点はＣ点、終点はＤ点であり、Ｃ点からＤ点までライン描画する。ラインＬ１０３の始点であるＣ点はラインＬ１０２の終点でもあるため、Ｃ点もＢ点と同様に２度打ちされる。また、ラインＬ１０４の始点はＥ点、終点はＦ点であり、Ｅ点からＦ点までライン描画する。
【０００５】
従って、独立ラインの描画における座標数は、「描画するラインの本数×２」となる。
【０００６】
一方、連続ラインの描画においては、ライン同士の接点を隙間なく接続させることが必要であり、ライン同士の接点の２度打ちは許容しない。
【０００７】
従って、図２０の例の場合、Ａ点からＤ点までの３本のラインＬ１０１〜Ｌ１０３を１回で描画することにより１本のラインとして扱う。このため、連続ラインの描画においては、最初のラインは始点及び終点の座標が必要となるが、次のラインの始点は前のラインの終点であるため、最初のライン以降のラインについては、終点の座標のみ必要となる。図２０の例の場合、最初のラインＬ１０１の始点はＡ点、終点はＢ点である。次のラインＬ１０２の始点は前のラインＬ１０１の終点であるＢ点と同一であるため始点を指定する必要はなく、終点であるＣ点のみ指定すればよい。同様に、次のラインＬ１０３の始点は前のラインＬ１０２の終点であるＣ点と同一であるため始点を指定する必要はなく、終点であるＤ点のみ指定すればよい。
【０００８】
従って、連続ラインの描画における座標数は、「１回で描画するラインを形成するラインの本数＋１」となる。
【０００９】
連続ラインの描画においてライン同士の接点における２度打ちを防止する技術として、２本目のラインの始点の座標が１本目のラインの終点の座標と一致するか否かを判断し、一致していれば始点の座標を変更する技術がある。
【００１０】
しかしながら、この技術では、２度打ちが発生すると判断した場合には無条件に始点の座標を変更してしまうので、不必要に座標が補正されてしまう場合があり、本来描画が必要でない位置に描画してしまう場合がある。
【００１１】
また、ライン描画アルゴリズムの一つにDiamondExitRuleという描画方式がある（以下、ＤＥＲと称する場合がある）。以下、DiamondExitRuleについて説明する。
【００１２】
図２１には、ピクセル内に設定されるDiamond枠の一例を示した。同図に示すように、Diamond枠Ｄｍは、正方形状のピクセルＰＸＬの各辺の真ん中の点を結んでできる菱形形状の枠である。
【００１３】
DiamondExitRuleでは、まず入力された頂点（ラインの始点又は終点）の座標がDiamond枠Ｄｍの枠内か枠外かを判定する。具体的には、まずピクセルＰＸＬの中央位置の座標をＰ０（Ｘ０，Ｙ０）、入力された頂点の座標をＰ１（Ｘ１，Ｙ１）として、座標Ｐ１で表される頂点がDiamond枠Ｄｍの枠内か枠外であるかを判定するためのＤ値を次式により算出する。なお、座標値は小数点を含む実数値で表され、整数部分がピクセルの位置を示し、小数部分がピクセル内の位置を表す。
【００１４】
Ｄ＝｜Ｘ１―Ｘ０｜＋｜Ｙ１−Ｙ０｜      ・・・（１）
【００１５】
上記（１）式により算出されるＤ値が「０．５」となる点がDiamond枠Ｄｍ上の点である。従って、Ｄ＜０．５を満たす場合は、入力された頂点がDiamond枠Ｄｍの枠内であり、Ｄ≧０．５の場合は、入力された頂点がDiamond枠Ｄｍの枠外であると判定する。
【００１６】
DiamondExitRuleでは、始点と終点を結ぶラインが、Diamond枠Ｄｍとピクセル内において少なくとも１回交差するピクセルを描画する。具体的には、Diamond枠Ｄｍの枠内から枠外へ向かうラインが通るピクセルを描画する。
【００１７】
図２２には、DiamondExitRuleの適用例を示した。同図では、色塗りされたピクセルがDiamondExitRuleに基づいて描画されるピクセルである。同図に示すように、ラインＬ１５の始点Ｓ１５はDiamond枠Ｄｍの枠外にある。そして、始点Ｓ１５を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含まないため、始点Ｓ１５を含むピクセルは描画されない。また、ラインＬ１５の終点Ｅ１５はDiamond枠Ｄｍの枠外にある。そして、終点Ｅ１５を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含まないため、終点Ｅ１５を含むピクセルは描画されない。
【００１８】
また、ラインＬ１６の始点Ｓ１６はDiamond枠Ｄｍの枠内にある。そして、始点Ｓ１６を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含むため、始点Ｓ１６を含むピクセルは描画される。また、ラインＬ１６の終点Ｅ１６はDiamond枠Ｄｍの枠内にある。そして、終点Ｅ１６を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含まないため、終点Ｅ１６を含むピクセルは描画されない。
【００１９】
また、ラインＬ１７の始点Ｓ１７はDiamond枠Ｄｍの枠外にある。そして、始点Ｓ１７を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含むため、始点Ｓ１７を含むピクセルは描画される。また、ラインＬ１７の終点はDiamond枠Ｄｍの枠外にある。そして、終点Ｅ１７を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含むため、終点Ｅ１７を含むピクセルは描画される。
【００２０】
図２３には、DiamondExitRuleを適用して２本のラインＬ１８、Ｌ１９を連続描画した場合の例を示した。同図に示すように、DiamondExitRuleに従うと、１ライン目のラインＬ１８の始点Ｓ１８はDiamond枠Ｄｍの枠内から枠外へ向かうラインを含むため描画され、終点Ｅ１８はDiamond枠Ｄｍの枠内から枠外へ向かうラインを含まないため描画されない。また、１ライン目の終点Ｅ１８は、２ライン目の始点Ｓ１９でもある。そして、DiamondExitRuleに従うと２ライン目の始点Ｓ１９はDiamond枠Ｄｍの枠内から枠外へ向かうラインを含むため描画され、終点Ｅ１９はDiamond枠Ｄｍの枠内から枠外へ向かうラインを含むため描画される。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】特開昭６３−２４５５７５号公報
【特許文献２】特開２０１０−９３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【００２２】
一方、例えば図２４に示した例の場合、DiamondExitRuleに従うと、１ライン目のラインＬ２０の終点Ｅ２０はDiamond枠Ｄｍの枠内から枠外へ向かうラインを含むため描画される。また、２ライン目のラインＬ２１の始点Ｓ２１は１ライン目のラインＬ２０の終点Ｅ２０でもあり、Diamond枠Ｄｍの枠内から枠外へ向かうラインを含むため描画される。すなわち、１ライン目の終点Ｅ２０（２ライン目の始点Ｓ２１）を含むピクセルは２度描画されてしまう（２度打ち）。
【００２３】
このように、ＤＥＲのアルゴリズムに従って連続ラインを描画すると、ライン同士の接点のピクセルを２度打ちしてしまう場合がある。
【００２４】
ここで、前述した２本目のラインの始点の座標が１本目のラインの終点の座標と一致する場合に始点の座標を変更する技術をＤＥＲに適用して連続ラインを描画する場合を考える。この場合、２本目のラインをＤＥＲにより仮に描画して２度打ちが発生するか否かを検出し、２度打ちが発生することを検出した場合に２本目のラインの始点を変更する必要があり、処理負荷が高くなる。
【００２５】
開示の技術は、連続ラインを描画する場合に、少ない処理負荷でライン同士の接点の２度打ちを防止することが目的である。
【課題を解決するための手段】
【００２６】
開示の技術は、描画情報生成部は、第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成する。終点描画判定部は、前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定する。始点補正判定部は、前記描画判定部が前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定する。また、始点補正判定部は、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する。座標補正処理部は、前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正する。
ライン消失判定部は、前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、前記座標補正処理部により補正された前記第２ラインの始点の座標を第２の描画情報として出力する。また、ライン消失判定部は、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とする。描画処理部は、前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう。
【発明の効果】
【００２７】
開示の技術は、連続ラインを描画する場合に、少ない処理負荷でライン同士の接点の２度打ちを防止することができる、という効果を有する。
【図面の簡単な説明】
【００２８】
【図１】描画装置の機能ブロック図である。
【図２】描画装置が適用されるグラフィックチップの機能ブロック図である。
【図３】ラインセットアップ部の機能ブロック図である。
【図４】ラインセットアップ部として機能するコンピュータの概略ブロック図である。
【図５】ライン描画プログラムの処理の流れを示すフローチャートである。
【図６】主軸判定について説明するための図である。
【図７】終点描画判定処理の流れを示すフローチャートである。
【図８】始点補正判定処理及び座標補正処理の流れを示すフローチャートである。
【図９】始点補正の一例について説明するための図である。
【図１０】ライン消失判定処理の流れを示すフローチャートである。
【図１１】ライン消失の一例について説明するための図である。
【図１２】ライン消失の一例について説明するための図である。
【図１３】ライン消失の一例について説明するための図である。
【図１４】ライン消失の一例について説明するための図である。
【図１５】ライン消失の一例について説明するための図である。
【図１６】ライン消失の一例について説明するための図である。
【図１７】ライン消失の一例について説明するための図である。
【図１８】ライン消失の一例について説明するための図である。
【図１９】連続ラインを描画した場合について説明するための図である。
【図２０】独立ライン及び連続ラインについて説明するための図である。
【図２１】Diamond枠について説明するための図である。
【図２２】DiamondExitRuleによりラインを描画した場合について説明するための図である。
【図２３】DiamondExitRuleにより連続ラインを描画した場合において２度打ちが発生しない場合について説明するための図である。
【図２４】DiamondExitRuleにより連続ラインを描画した場合において２度打ちが発生する場合について説明するための図である。
【発明を実施するための形態】
【００２９】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。なお、本実施形態では、前述したDiamondExitRuleを適用して連続ラインを描画する場合について説明する。
【００３０】
図１には、本実施形態に係る描画装置１０のブロック図を示した。同図に示すように、描画装置１０は、頂点処理部１２、図形セットアップ部１４、及び描画処理部１６を備える。
【００３１】
頂点処理部１２は、頂点データ（Ｘ座標、Ｙ座標、Ｚ座標、ＲＧＢ値等）を入力し、形成する図形（三角形、直線等）に応じて、図形セットアップ部１４に図形を形成するための頂点の座標データを送信する。なお、本実施形態では、座標データがＸ座標及びＹ座標で表される場合について説明する。
【００３２】
図形セットアップ部１４は、トライアングルセットアップ部１８、ラインセットアップ部２０、及びセレクト部２２を備える。図形セットアップ部１４では、トライアングル（三角形）の描画であればトライアングルセットアップ部１８においてセットアップ処理を実行し、ライン（直線）の描画であればラインセットアップ部２０においてセットアップ処理を実行する。セットアップ処理とは、例えば、ラインの描画であればラインを描画するのに必要な描画情報（描画を開始する頂点の座標、ラインの傾き値、ラインの長さ、主軸情報等）を座標データに基づいて生成してセレクト部２２に出力する。トライアングルの描画の場合ではトライアングルを描画するのに必要な描画情報を頂点データに基づいて算出してセレクト部２２に出力する。
【００３３】
セレクト部２２は、トライアングルセットアップ部１８及びラインセットアップ部２０から出力された描画情報の何れかを選択して描画処理部１６へ出力する。
【００３４】
描画処理部１６は、図形セットアップ部１４から出力された描画情報に基づいて、描画処理を実行する。具体的には、例えば画面イメージのバッファであるフレームバッファ（外部メモリ）に対して、各座標に対応したアドレスに表示データとしてのＲＧＢ値を格納する。
【００３５】
描画装置１０は、例えばカーナビゲーションシステム等のグラフィックチップ等に搭載される。図２には、このようなグラフィックチップ３０の構成を示した。同図に示すように、グラフィックチップ３０は、描画装置１０、メモリコントローラー３２、キャプチャコントローラー３４、ディスプレイコントローラー３６がバス３８によって接続されている。また、描画装置１０は、ホストインタフェース４０及びバス４２を介して外部インタフェースに接続される。
【００３６】
描画装置１０は、プログラマブルシェーダー４４のプログラム内容に従って描画を行う。この際、バス３８を介して接続されたメモリコントローラー３２、キャプチャコントローラー３４から頂点データを取得して上記の処理を実行して描画情報を生成し、ディスプレイコントローラー３６に出力する。ディスプレイコントローラー３６は、描画装置１０から出力された描画情報を格納するフレームバッファを備え、このフレームバッファに格納された描画情報に基づいてディスプレイに画像を表示する。
【００３７】
図３には、ラインセットアップ部２０の構成を示した。同図に示すように、ラインセットアップ部２０は、DiamondExitRule処理部（以下ＤＥＲ処理部）５０、ライン描画判定部５２、及びセレクト部５４を備える。
【００３８】
ＤＥＲ処理部５０は、前述したDiamondExitRuleに基づいて、入力された始点及び終点を結ぶラインを描画するための描画情報を生成してセレクト部５４に出力する。なお、ＤＥＲ処理部５０は、開示の技術における描画情報生成部の一例である。
【００３９】
ライン描画判定部５２は、描画方向判定部５６、主軸判定部５８、終点描画判定部６０、始点補正判定部６２、座標補正処理部６４、及びライン消失判定部６６を備える。
【００４０】
描画方向判定部５６は、ラインの始点及び終点のＸ座標及びＹ座標に基づいてラインの描画方向を判定する。
【００４１】
主軸判定部５８は、始点及び終点の座標に基づいて、始点及び終点を結ぶラインの主軸（詳細は後述）がＸ軸であるかＹ主軸であるかを判定する。
【００４２】
終点描画判定部６０は、前ライン（第１ライン）の終点のピクセル領域内の座標と前ラインの描画方向とに基づいて、前ラインの終点が含まれるピクセルを描画するか否かを判定する。
【００４３】
始点補正判定部６２は、前ラインの終点を描画すると判定された場合に、前ラインの終点である次ライン（第２ライン）の始点の座標と次ラインの終点の座標とに基づいて次ラインの描画方向を判定する。また、始点補正判定部６２は、次ラインの始点のピクセル領域内の座標と次ラインの描画方向とに基づいて、次ラインの始点の補正が必要か否かを判定する。
【００４４】
座標補正処理部６４は、次ラインの始点の補正が必要と判定された場合、次ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正する。
【００４５】
ライン消失判定部６６は、次ラインの主軸方向における長さが１ピクセル以上の場合は、座標補正処理部６４により補正された次ラインの始点の座標をＤＥＲ処理部５０へ出力する。また、ライン消失判定部６６は、次ラインの主軸方向における長さが１ピクセル未満の場合には、次ラインを消失すべきと判定して次ラインを非描画とするようにＤＥＲ処理部５０に通知する。
【００４６】
セレクト部５４は、ＤＥＲ処理部５０及びライン描画判定部５２から出力された描画情報の何れかを選択して出力する。
【００４７】
ラインセットアップ部２０は、例えば図４に示すコンピュータ７０で実現することができる。コンピュータ７０はＣＰＵ７２、メモリ７４、及び不揮発性の記憶部７６を備え、これらはバス７８を介して互いに接続されている。
【００４８】
また、記憶部７６はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。記録媒体としての記憶部７６には、コンピュータ７０をラインセットアップ部２０として機能させるためのライン描画プログラム８０が記憶されている。ＣＰＵ７２は、ライン描画プログラム８０を記憶部７６から読み出してメモリ７４に展開し、ライン描画プログラム８０が有するプロセスを順次実行する。
【００４９】
ライン描画プログラム８０は、描画方向判定プロセス８２、主軸判定プロセス８４、終点描画判定プロセス８６、始点補正判定プロセス８８、座標補正処理プロセス９０、ライン消失判定プロセス９２、及びＤＥＲ処理プロセス９４を有する。ＣＰＵ７２は、ＣＰＵ６２は、描画方向判定プロセス８２を実行することで、図３に示す描画方向判定部５６として動作する。また、ＣＰＵ７２は、主軸判定プロセス８４を実行することで、図３に示す主軸判定部５８として動作する。また、ＣＰＵ７２は、終点描画判定プロセス８６を実行することで、図３に示す終点描画判定部６０として動作する。また、ＣＰＵ７２は、始点補正判定プロセス８８を実行することで、図３に示す始点補正判定部６２として動作する。また、ＣＰＵ７２は、座標補正処理プロセス９０を実行することで、図３に示す座標補正処理部６４として動作する。また、ＣＰＵ７２は、ライン消失判定プロセス９２を実行することで、図３に示すライン消失判定部６６として動作する。また、ＣＰＵ７２は、ＤＥＲ処理プロセス９４を実行することで、図３に示すＤＥＲ処理部５０として動作する。
【００５０】
これにより、ライン描画プログラム８０を実行したコンピュータ７０が、ラインセットアップ部２０として機能することになる。なお、ライン描画プログラム８０は開示の技術におけるライン描画プログラムの一例である。また、ラインセットアップ部２０は開示の技術におけるライン描画装置の一例である。
【００５１】
なお、ラインセットアップ部２０は、例えば半導体集積回路、より詳しくはＡＳＩＣ(Application Specific Integrated Circuit)等で実現することも可能である。
【００５２】
次に、本実施形態の作用を説明する。ラインセットアップ部２０は、頂点処理部１２から描画すべきラインの始点及び終点の座標データが入力されると、図５に示すライン描画処理を実行する。
【００５３】
ステップ１００では、頂点処理部１２が、描画すべきラインの始点及び終点の座標データを入力する。
【００５４】
ステップ１０２では、主軸判定部５８が、始点及び終点の座標に基づいて、始点及び終点を結ぶラインの主軸がＸ軸であるかＹ軸であるかを判定する。具体的には、終点のＸ座標から始点のＸ座標を減算した値の絶対値をΔＸ、終点のＹ座標から始点のＹ座標を減算した値の絶対値をΔＹとして、ΔＸ≧ΔＹを満たす場合はＸ軸が主軸であると判定し、ΔＸ＜ΔＹを満たす場合はＹ軸が主軸であると判定する。
【００５５】
例えば図６（Ａ）に示すラインＬＡの場合、ΔＸ≧ΔＹを満たすのでＸ軸が主軸と判定され、同図（Ｂ）に示すラインＬＢの場合はΔＸ＜ΔＹを満たすのでＹ軸が主軸であると判定される。
【００５６】
そして、Ｘ軸が主軸の場合は、Ｘ座標を主軸座標、Ｙ座標を副軸座標と定義し、Ｙ軸が主軸の場合は、Ｙ座標を主軸座標、Ｘ座標を副軸座標と定義する。
【００５７】
ステップ１０４では、描画方向判定部５６が、始点及び終点のＸ座標及びＹ座標に基づいてラインの描画方向を判定する。具体的には、Ｘ軸が主軸の場合、終点のＸ座標から始点のＸ座標を減算した値が正の値であれば、描画方向はＸ方向の正方向であると判定し、終点のＸ座標から始点のＸ座標を減算した負の値であれば、描画方向はＸ方向の負方向であると判定する。なお、本実施形態では、Ｘ方向については図６において右方向を正方向、左方向を負方向とし、Ｙ方向については図６において下方向を正方向、上方向を負方向とする。
【００５８】
ステップ１０６では、終点描画判定部６０が、前ラインの終点のピクセル領域内の座標と前ラインの描画方向とに基づいて、前ラインの終点が含まれるピクセルを描画するか否かを判定する。具体的には、終点描画判定部６０は、図７に示す終点描画判定処理を実行する。
【００５９】
図７のステップ２００では、終点描画判定部６０が、前ラインの主軸がＸ軸であるかＹ軸であるかを判定し、Ｘ軸が主軸である場合にはステップ２０２へ移行し、Ｙ軸が主軸である場合にはステップ２１２へ移行する。
【００６０】
Ｘ軸が主軸の場合、ステップ２０２では、終点描画判定部６０が、前ラインの終点の座標がDiamond枠Ｄｍの枠外であるか否かを判定する。図２１に示すように、ピクセル内に設定されたDiamond枠Ｄｍの左上、左下、右上、右下に枠外の領域が存在する。そして、前ラインの終点の座標がDiamond枠Ｄｍの枠内である場合にはステップ２０６へ移行して、前ラインの終点を含むピクセルは描画しないと判定する。一方、前ラインの終点の座標がDiamond枠Ｄｍの左上又は左下の枠外である場合には、ステップ２０４へ移行し、前ラインの終点の座標がDiamond枠Ｄｍの右上又は右下の枠外である場合には、ステップ２０８へ移行する。
【００６１】
前ラインの終点の座標がDiamond枠Ｄｍの左上又は左下の枠外の場合、ステップ２０４では、終点描画判定部６０が、前ラインの描画方向が正であるか負であるかを判定する。そして、前ラインの描画方向が正である場合には、ステップ２０６で前ラインの終点を含むピクセルは描画しないと判定し、前ラインの描画方向が負である場合には、ステップ２１０で前ラインの終点を含むピクセルは描画すると判定する。
【００６２】
また、前ラインの終点の座標がDiamond枠Ｄｍの右上又は右下の枠外の場合、ステップ２０８では、終点描画判定部６０が、前ラインの描画方向が正であるか負であるかを判定する。そして、前ラインの描画方向が正である場合には、ステップ２１０で前ラインの終点を含むピクセルは描画すると判定し、前ラインの描画方向が負である場合には、ステップ２０６で前ラインの終点を含むピクセルは描画しないと判定する。
【００６３】
すなわち、Ｘ軸が主軸で前ラインの終点の座標がDiamond枠Ｄｍの左上又は左下の枠外で且つ描画方向が負の場合は、前ラインの終点を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインであるため、当該ピクセルを描画すると判定する。同様に、Ｘ軸が主軸で前ラインの終点の座標がDiamond枠Ｄｍの右上又は右下の枠外で且つ描画方向が正の場合は、前ラインの終点を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインであるため、当該ピクセルを描画すると判定する。
【００６４】
一方、Ｙ軸が主軸の場合、ステップ２１２では、終点描画判定部６０が、前ラインの終点の座標がDiamond枠Ｄｍの枠外であるか否かを判定する。そして、前ラインの終点の座標がDiamond枠Ｄｍの枠内である場合にはステップ２１６へ移行して、前ラインの終点を含むピクセルは描画しないと判定する。一方、前ラインの終点の座標がDiamond枠Ｄｍの左上又は右上の枠外である場合には、ステップ２１４へ移行し、前ラインの終点の座標がDiamond枠Ｄｍの左下又は右下の枠外である場合には、ステップ２１８へ移行する。
【００６５】
前ラインの終点の座標がDiamond枠Ｄｍの左上又は右上の枠外の場合、ステップ２１４では、終点描画判定部６０が、前ラインの描画方向が正であるか負であるかを判定する。そして、前ラインの描画方向が正である場合には、ステップ２１６で前ラインの終点を含むピクセルは描画しないと判定し、前ラインの描画方向が負である場合には、ステップ２２０で前ラインの終点を含むピクセルは描画すると判定する。
【００６６】
また、前ラインの終点の座標がDiamond枠Ｄｍの左下又は右下の枠外の場合、ステップ２１８では、終点描画判定部６０が、前ラインの描画方向が正であるか負であるかを判定する。そして、前ラインの描画方向が正である場合には、ステップ２２０で前ラインの終点を含むピクセルは描画すると判定し、前ラインの描画方向が負である場合には、ステップ２１６で前ラインの終点を含むピクセルは描画しないと判定する。
【００６７】
すなわち、Ｙ軸が主軸で前ラインの終点の座標がDiamond枠Ｄｍの左上又は右上の枠外で且つ描画方向が負の場合は、前ラインの終点を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインであるため、当該ピクセルを描画すると判定する。同様に、Ｘ軸が主軸で前ラインの終点の座標がDiamond枠Ｄｍの左下又は右下の枠外で且つ描画方向が正の場合は、前ラインの終点を含むピクセル上を通るラインは、Diamond枠Ｄｍの枠内から枠外へ向かうラインであるため、当該ピクセルを描画すると判定する。
【００６８】
図５のステップ１０８では、終点描画判定部６０が、前ラインの終点を含むピクセルを描画すると判定されたか否かを判定し、描画有りと判定された場合はステップ１１０へ移行し、描画無しと判定された場合はステップ１１６へ移行する。
【００６９】
ステップ１１０では、始点補正判定部６２が、前ラインの終点を描画すると判定された場合に、前ラインの終点である次ラインの始点の座標と次ラインの終点の座標とに基づいて次ラインの描画方向を判定する。また、始点補正判定部６２は、次ラインの始点のピクセル領域内の座標と次ラインの描画方向とに基づいて、次ラインの始点の補正が必要か否かを判定する。具体的には、始点補正判定部６２は、図８に示す始点補正判定処理を実行する。
【００７０】
図８のステップ３００では、始点補正判定部６２が、次ラインの主軸がＸ軸であるかＹ軸であるかを判定し、Ｘ軸が主軸である場合にはステップ３０２へ移行し、Ｙ軸が主軸である場合にはステップ３０８へ移行する。
【００７１】
Ｘ軸が主軸の場合、ステップ３０２において、始点補正判定部６２が、次ラインの始点の座標（前ラインの終点の座標）がDiamond枠Ｄｍのどの位置の枠外であるかを判定する。そして、次ラインの始点の座標が左上又は左下の枠外である場合には、ステップ３０４へ移行し、次ラインの描画方向が正であるか否かを判定する。ここで、次ラインの始点の座標が左上又は左下の枠外で且つ次ラインの描画方向が正の場合は、次ラインの始点を含むピクセルを描画する、すなわち２度打ちする場合である。従って、ステップ３０４の判定は、２度打ちするか否か、すなわち、始点を補正する必要があるか否かを判定する処理と言える。そして、次ラインの描画方向が正であり次ラインの始点を補正する必要がある場合には、ステップ４００へ移行し、次ラインの描画方向が負であり次ラインの始点を補正する必要がない場合は、図５のステップ１１６へ移行する。
【００７２】
また、次ラインの始点の座標が右上又は右下の枠外である場合には、ステップ３０６へ移行し、次ラインの描画方向が負であるか否かを判定する。ここで、次ラインの始点の座標が右上又は右下の枠外で且つ次ラインの描画方向が負の場合は、次ラインの始点を含むピクセルを描画する、すなわち２度打ちする場合である。従って、ステップ３０６の判定は、２度打ちするか否か、すなわち、始点を補正する必要があるか否かを判定する処理と言える。そして、次ラインの描画方向が負であり次ラインの始点を補正する必要がある場合には、ステップ４０２へ移行し、次ラインの描画方向が負であり次ラインの始点を補正する必要がない場合は、図５のステップ１１６へ移行する。
【００７３】
一方、Ｙ軸が主軸の場合、ステップ３０８において、始点補正判定部６２が、次ラインの始点の座標（前ラインの終点の座標）がDiamond枠Ｄｍのどの位置の枠外であるかを判定する。そして、次ラインの始点の座標が左上又は右上の枠外である場合には、ステップ３１０へ移行し、次ラインの描画方向が正であるか否かを判定する。ここで、次ラインの始点の座標が左上又は右上の枠外で且つ次ラインの描画方向が正の場合は、次ラインの始点を含むピクセルを描画する、すなわち２度打ちする場合である。従って、ステップ３１０の判定は、２度打ちするか否か、すなわち、始点を補正する必要があるか否かを判定する処理と言える。そして、次ラインの描画方向が正であり次ラインの始点を補正する必要がある場合には、ステップ４０６へ移行し、次ラインの描画方向が負であり次ラインの始点を補正する必要がない場合は、図５のステップ１１６へ移行する。
【００７４】
また、次ラインの始点の座標が左下又は右下の枠外である場合には、ステップ３１２へ移行し、次ラインの描画方向が負であるか否かを判定する。ここで、次ラインの始点の座標が左下又は右下の枠外で且つ次ラインの描画方向が負の場合は、次ラインの始点を含むピクセルを描画する、すなわち２度打ちする場合である。従って、ステップ３１２の判定は、２度打ちするか否か、すなわち、始点を補正する必要があるか否かを判定する処理と言える。そして、次ラインの描画方向が負であり次ラインの始点を補正する必要がある場合は、ステップ４０８へ移行し、次ラインの描画方向が正であり次ラインの始点を補正する必要がない場合には、図５のステップ１１６へ移行する。
【００７５】
図５のステップ１１２では、座標補正処理部６４が、次ラインの始点の補正が必要と判定された場合、次ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正する。具体的には、座標補正処理部６４は、図８のステップ４００〜４１０の処理を実行する。
【００７６】
次ラインの始点の座標が左下又は左下の枠外で且つ次ラインの描画方向が正である場合、図８のステップ４００では、座標補正処理部６４が、次ラインの始点のＸ座標を補正する。例えば、次ラインの始点のＸ座標をＸｓとすると、補正後のＸ座標ＡＸｓを次式により算出する。
【００７７】
ＡＸｓ＝Ｘｓ＋ａ      ・・・（２）
【００７８】
ここで、ａは予め定めた補正量であり、例えば１．０が設定される。ａ＝１．０の場合、Ｘ座標を正方向に１ピクセル分補正することとなる。なお、補正量はこれに限られるものではなく、例えば隣接するピクセルの中心に補正するための値としてもよい。
【００７９】
次ラインの始点の座標が右上又は右下の枠外で且つ次ラインの描画方向が負である場合、ステップ４０２では、座標補正処理部６４が、次ラインの始点のＸ座標を補正する。例えば、次ラインの始点のＸ座標をＸｓとすると、補正後のＸ座標ＡＸｓを次式により算出する。
【００８０】
ＡＸｓ＝Ｘｓ−ａ      ・・・（３）
【００８１】
ここで、ａは例えば１．０が設定される。ａ＝１．０の場合、Ｘ座標を負方向に１ピクセル分補正することとなる。
【００８２】
このように、座標補正処理部６４は、次ラインの描画方向が正方向であればＸ座標を正方向に補正し、次ラインの描画方向が負方向であればＸ座標を負方向に補正する。
【００８３】
ステップ４０４では、座標補正処理部６４が、次ラインの始点のＹ座標を補正する。例えば、次ラインの始点のＹ座標をＹｓとすると、補正後のＹ座標ＡＹｓを次式により算出する。
【００８４】
ＡＹｓ＝Ｙｓ＋（ｂ１×ａ）      ・・・（４）
【００８５】
ここで、ｂ１は次ラインの傾き、すなわちＸ座標の単位増加量に対するＹ座標の変化量の割合である。ａは例えば１．０が設定される。ａ＝１．０の場合、傾きｂ１が正の値であればＹ座標を１ピクセル分正方向に補正することとなる。また、傾きｂ１が負の値であればＹ座標を１ピクセル分負方向に補正することとなる。
【００８６】
次ラインの始点の座標が左上又は右上の枠外で且つ次ラインの描画方向が正である場合、ステップ４０６では、座標補正処理部６４が、次ラインの始点のＹ座標を補正する。例えば、次ラインの始点のＹ座標をＹｓとすると、補正後のＸ座標ＡＹｓを次式により算出する。
【００８７】
ＡＹｓ＝Ｙｓ＋ａ      ・・・（５）
【００８８】
ここで、ａは例えば１．０が設定される。ａ＝１．０の場合、Ｙ座標を正方向に１ピクセル分補正することとなる。
【００８９】
次ラインの始点の座標が左下又は右下の枠外で且つ次ラインの描画方向が負である場合、ステップ４０８では、座標補正処理部６４が、次ラインの始点のＹ座標を補正する。例えば、次ラインの始点のＹ座標をＹｓとすると、補正後のＹ座標ＡＹｓを次式により算出する。
【００９０】
ＡＹｓ＝Ｙｓ−ａ      ・・・（６）
【００９１】
ここで、ａは例えば１．０が設定される。ａ＝１．０の場合、Ｙ座標を負方向に１ピクセル分補正することとなる。
【００９２】
このように、座標補正処理部６４は、次ラインの描画方向が正方向であればＹ座標を正方向に補正し、次ラインの描画方向が負方向であればＹ座標を負方向に補正する。
【００９３】
ステップ４１０では、次ラインの始点のＸ座標を補正する。例えば、次ラインの始点のＸ座標をＸｓとすると、補正後のＸ座標ＡＸｓを次式により算出する。
【００９４】
ＡＸｓ＝Ｘｓ＋（ｂ２×ａ）      ・・・（７）
【００９５】
ここで、ｂ２は次ラインの傾き、すなわちＹ座標の単位増加量に対するＸ座標の変化量の割合である。ａは予め定めた補正量であり、例えば１．０が設定される。ａ＝１．０の場合、傾きｂ２が正の値であればＸ座標を１ピクセル分正方向に補正することとなる。また、傾きｂ２が負の値であればＸ座標を１ピクセル分負方向に補正することとなる。
【００９６】
図９には、次ラインの始点の座標を補正した場合の一例を示した。同図に示すように、前ライン（１ライン目）Ｌ１１の終点Ｅ１１がDiamond枠Ｄｍの右上の枠外の場合に、Ｙ軸が主軸である次ライン（２ライン目）Ｌ２１の描画方向が正方向の場合、次ラインＬ２１の始点Ｓ２１のＹ座標を上記（５）式により補正する。図９では、補正量ａをａ＝１．０として補正しているため、次ラインＬ２１の始点Ｓ２１のＹ座標を同図において下方向に１ピクセル分補正する。また、次ラインＬ２１の始点Ｓ２１のＸ座標は、上記（７）式により補正する。すなわち、次ラインＬ２１の始点Ｓ２１のＸ座標を（次ラインＬ２１の傾き×１．０）分補正する。これにより、次ラインＬ２１の始点Ｓ２１は始点Ｓ２２に補正される。なお、次ラインＬ２３、Ｌ２４については、次ラインの始点を補正する必要はない。
【００９７】
また、同図に示すように、前ラインＬ１１の終点Ｅ１１がDiamond枠Ｄｍの右上の枠外の場合において、主軸がＸ軸である次ラインＬ２２の描画方向が負方向の場合、次ラインＬ２２の始点Ｓ２１のＸ座標を上記（３）式により補正する。図９では、補正量ａをａ＝１．０として補正しているため、次ラインＬ２２の始点Ｓ２１のＸ座標を同図において左方向に１ピクセル分補正する。また、次ラインＬ２２の始点Ｓ２１のＹ座標は、上記（４）式により補正する。すなわち、次ラインＬ２２の始点Ｓ２１のＹ座標を（次ラインの傾き×１．０）分補正する。これにより、次ラインＬ２２の始点Ｓ２１は始点Ｓ２３に補正される。
【００９８】
また、同図に示すように、前ラインＬ１２の終点Ｅ１２がDiamond枠Ｄｍの左下の枠外の場合に、Ｙ軸が主軸である次ラインＬ２５の描画方向が負方向の場合、次ラインＬ２５の始点Ｓ２４のＹ座標を上記（６）式により補正する。図９では、補正量ａをａ＝１．０として補正しているため、次ラインＬ２５の始点Ｓ２４のＹ座標を同図において上方向に１ピクセル分補正する。また、次ラインＬ２５の始点Ｓ２４のＸ座標は、上記（７）式により補正する。すなわち、次ラインＬ２５の始点Ｓ２４のＸ座標を（次ラインＬ２５の傾き×１．０）分補正する。これにより、次ラインＬ２５の始点Ｓ２４は始点Ｓ２５に補正される。
【００９９】
また、同図に示すように、前ラインＬ１２の終点Ｅ１２がDiamond枠Ｄｍの左下の枠外の場合において、主軸がＸ軸である次ラインＬ２６の描画方向が正方向の場合、次ラインＬ２６の始点Ｓ２４のＸ座標を上記（２）式により補正する。図９では、補正量ａをａ＝１．０として補正しているため、次ラインＬ２６の始点Ｓ２４のＸ座標を同図において右方向に１ピクセル分補正する。また、次ラインＬ２６の始点Ｓ２４のＹ座標は、上記（４）式により補正する。すなわち、次ラインＬ２６の始点Ｓ２４のＹ座標を（次ラインＬ２６の傾き×１．０）分補正する。これにより、次ラインＬ２６の始点Ｓ２４は始点Ｓ２６に補正される。なお、次ラインＬ２７、Ｌ２８については、次ラインの始点を補正する必要はない。
【０１００】
上記のように次ラインの始点を補正した後は、図５のステップ１１４へ移行する。
【０１０１】
図５のステップ１１４では、ライン消失判定部６６が、次ラインの主軸方向における長さが１ピクセル以上の場合は、座標補正処理部６４により補正された次ラインの始点の座標をＤＥＲ処理部５０へ出力する。また、ライン消失判定部６６は、次ラインの主軸方向における長さが１ピクセル未満の場合には、次ラインを消失すべきと判定して次ラインを非描画とするようにＤＥＲ処理部５０に通知する。具体的には、ライン消失判定部６６は、図１０に示すライン消失判定処理を実行する。
【０１０２】
図１０に示すように、ステップ５００では、ライン消失判定部６６が、次ラインの補正後の始点の座標と次ラインの終点の座標と、に基づいて、始点補正後の次ラインの描画方向を算出する。この描画方向の判定は、図５のステップ１０４と同様である。すなわち、補正後の次ラインのＸ方向が主軸の場合、終点のＸ座標から補正後の始点のＸ座標を減算した値が正の値であれば、補正後の次ラインの描画方向は正方向であると判定する。また、終点のＸ座標から補正後の始点のＸ座標を減算した負の値であれば、補正後の次ラインの描画方向は負方向であると判定する。
【０１０３】
ステップ５０２では、始点の座標を補正する前の次ラインの描画方向と、始点を補正した後の次ラインの描画方向と、を比較する。すなわち、図７のステップ３０４、３０６、３１０、３１２で算出した補正前の次ラインの描画方向と、ステップ５００で算出した始点を補正した後の次ラインの描画方向と、を比較する。
【０１０４】
ステップ５０４では、ライン消失判定部６６が、始点を補正する前の次ラインの描画方向と始点を補正した後の次ラインの描画方向とが同一であるか否かを判定し、同一であった場合にはステップ５０６へ移行し、同一でなかった場合にはステップ５０８へ移行する。
【０１０５】
ステップ５０６では、ライン消失判定部６６が、始点を補正した後の次ラインの始点の座標データをＤＥＲ処理部５０へ出力する。図５のステップ１１６では、ＤＥＲ処理部５０が、補正後の次ラインの始点の座標データに基づいてＤＥＲ処理を実行して描画情報（始点及び終点の座標、ラインの傾き値、ラインの長さ、主軸情報等）を生成し、セレクト部５４へ出力する。なお、ＤＥＲ処理部５０は、前ラインの終点の座標データを次ラインの始点の座標データとして終点描画判定部６０に出力する。これにより、次回図５の処理が実行されると、ステップ１０６では、前ラインの終点の座標データを次ラインの始点の座標データとして終点描画判定処理を実行する。
【０１０６】
一方、ステップ５０８では、次ラインを消失したものと判定し、その旨をセレクト部５４へ通知し、次の座標データの処理に移行する。セレクト部５４は、ライン消失判定部６６からラインを消失した旨が通知されなかった場合は、ＤＥＲ処理部５０からの描画情報を出力し、ライン消失判定部６６からラインを消失した旨が通知された場合は、ＤＥＲ処理部５０からの描画情報を出力しない。
【０１０７】
図１１には、次ラインが消失する場合の一例を示した。同図に示すように、主軸がＹ軸で描画方向が正方向の前ラインＬ１の終点Ｅ１がＤｉａｍｏｎｄ枠Ｄｍの左下の枠外の場合、終点Ｅ１を含むピクセルＰＸＬは描画すると判定される。
【０１０８】
そして、例えば次ラインＬ２１〜Ｌ２３の終点Ｅ２１〜Ｅ２３の場合のように、次ラインＬ２１〜Ｌ２３の主軸がＸ軸で描画方向が正方向となる場合は、次ラインＬ２１〜Ｌ２３の始点Ｓ２は、隣接するピクセル内の始点Ｓ２１〜Ｓ２３に補正される。
【０１０９】
また、次ラインＬ２４〜Ｌ２６の終点Ｅ２４〜２６の場合のように、次ラインＬ２４〜Ｌ２６の主軸がＹ軸で描画方向が負方向となる場合は、次ラインＬ２４〜Ｌ２６の始点Ｓ２は、隣接するピクセル内の始点Ｓ２４〜Ｓ２６に補正される。
【０１１０】
ここで、始点を補正する前の次ラインＬ２１〜Ｌ２６は、主軸方向における長さが１ピクセル未満の長さであるため、始点を補正した後の次ラインＬ２１’〜Ｌ２６’の描画方向と同一ではない。このため、次ラインＬ２１〜Ｌ２６は消失するラインと判定される。
【０１１１】
図１２には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＸ軸で描画方向が負方向であること以外は、図１１と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１２】
図１３には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＹ軸で描画方向が正方向であること、前ラインＬ１の終点Ｅ１がDiamond枠Ｄｍの右下の枠外であること以外は、図１１と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１３】
図１４には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＸ軸で描画方向が正方向であること以外は、図１３と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１４】
図１５には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＹ軸で描画方向が負方向であること、前ラインＬ１の終点Ｅ１がDiamond枠Ｄｍの左上の枠外であること以外は、図１１と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１５】
図１６には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＸ軸で描画方向が負方向であること以外は、図１５と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１６】
図１７には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＹ軸で描画方向が負方向であること、前ラインＬ１の終点Ｅ１がDiamond枠Ｄｍの右上の枠外であること以外は、図１１と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１７】
図１８には、次ラインが消失する場合の他の例を示した。同図は、前ラインＬ１の主軸がＸ軸で描画方向が正方向であること以外は、図１７と同様である。この場合も、補正前の次ラインＬ２１〜Ｌ２６の主軸方向における長さは全て１ピクセル未満であり、補正前後の描画方向が同一でないため、全て消失するラインと判定される。
【０１１８】
このように、本実施形態では、DiamondExitRuleをそのまま適用すると前ラインの終点、すなわち次ラインの始点を含むピクセルを２度打ちしてしまう場合には、次ラインの始点の座標を隣接するピクセル内の座標に補正する。このため、図１９に示すように、前ラインＬ１の終点Ｅ１（次ラインＬ２の始点Ｓ２）を含むピクセルＰＸＬが２度打ちされてしまうのを防止することができる。
【０１１９】
また、次ラインの主軸方向における始点の座標と終点の座標との差が１ピクセル未満の場合に、次ラインの始点を補正したままDiamondExitRuleを適用すると、補正後の次ラインの始点を含むピクセルを描画してしまう。これに対し、本実施形態では、次ラインの主軸方向における長さが１ピクセル未満の場合、すなわち補正前後の次ラインの描画方向が同一でない場合には、次ラインを消失したものとして扱うので、余分なピクセルが描画されてしまうのを防ぐことができる。
【０１２０】
なお、本実施形態では、補正前後の次ラインの描画方向が同一であるか否かを判定することにより、補正前の次ラインの主軸方向における長さが１ピクセル未満か否かを判定するようにしたが、判定方法はこれに限られるものではない。例えば、補正前の次ラインの始点及び終点の座標に基づいて補正前の次ラインの主軸方向の長さを算出し、その長さが１ピクセル未満の場合に次ラインを消失したものとして扱うようにしてもよい。
【０１２１】
また、本実施形態では、Diamond枠Ｄｍの枠内から枠外へ向かうラインが通るピクセルを描画する場合について説明したが、Diamond枠Ｄｍの枠外から枠内へ向かうラインが通るピクセルを描画するようにしてもよい。
【０１２２】
また、本実施形態では、DiamondExitRuleを用いて連続ラインを描画する場合について説明したが、ピクセル内に予め設定された枠とピクセル内において少なくとも１回交差するピクセルを描画するルールであれば、これに限られるものではない。例えば、ピクセル内に設定する枠は、ダイアモンド枠、すなわち菱形形状の枠に限らず、三角形や五角形等の多角形状でもよく、円等の曲線を含む形状でもよい。
【０１２３】
また、上記では開示の技術に係るライン描画プログラムの一例であるライン描画プログラム８０が記憶部７６に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。開示の技術に係る画像処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【０１２４】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【０１２５】
以上の実施形態に関し、更に以下の付記を開示する。
【０１２６】
（付記１）
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成する描画情報生成部と、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定する終点描画判定部と、
前記描画判定部が前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する始点補正判定部と、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正する座標補正処理部と、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、前記座標補正処理部により補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とするライン消失判定部と、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう描画処理部と、
を備えたことを特徴とするライン描画装置。
【０１２７】
（付記２）
前記ライン消失判定部は、前記第２ラインの始点を補正する前の前記第２ラインの描画方向と、前記第２ラインの始点を補正した後の前記第２ラインの描画方向と、が同一であるか否かを判定し、同一である場合に、前記第２ラインの主軸方向における長さが１ピクセル以上であると判定し、同一でない場合に、前記次ラインの主軸方向における長さが１ピクセル未満であると判定する
ことを特徴とする付記１記載のライン描画装置。
【０１２８】
（付記３）
前記始点及び前記終点の座標に基づいて、前記始点及び前記終点を結ぶラインの主軸がＸ軸であるか前記Ｘ軸と直交するＹ軸であるかを判定する主軸判定部と、
前記ラインの前記始点及び前記終点のＸ座標及びＹ座標の各々に基づいて前記ラインの描画方向を判定する描画方向判定部と、
を備えることを特徴とする付記１又は付記２記載のライン描画装置。
【０１２９】
（付記４）
前記終点描画判定部は、前記主軸判定部により判定された前記第１ラインの主軸と、前記第１ラインの終点の前記ピクセル内の位置と、前記描画判定部により判定された前記第１ラインの描画方向と、に基づいて、前記第１ラインの終点が含まれるピクセルを描画するか否かを判定する
ことを特徴とする付記３記載のライン描画装置。
【０１３０】
（付記５）
前記始点補正判定部は、前記第１ラインの終点を描画すると判定された場合に、前記主軸判定部により判定された前記第２ラインの主軸と、前記描画方向判定部により判定された前記第２ラインの描画方向と、前記第２ラインの始点の前記ピクセル内の位置と、に基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する
ことを特徴とする付記３又は付記４記載のライン描画装置。
【０１３１】
（付記６）
前記座標補正処理部は、前記第２ラインの主軸が前記Ｘ軸の場合は、前記第２ラインの始点のＸ座標を１ピクセル分補正すると共に前記第２ラインの始点のＹ座標を前記第２ラインの傾きに応じた分補正し、前記第２ラインの主軸が前記Ｙ軸の場合は、前記第２ラインの始点のＹ座標を１ピクセル分補正すると共に前記第２ラインの始点のＸ座標を前記第２ラインの傾きに応じた分補正する
ことを特徴とする付記１〜５の何れか１項に記載のライン描画装置。
（付記７）
前記描画ルールは、前記始点と終点とを結ぶ第１ラインが、ピクセル内に予め設定された枠と前記ピクセル内において少なくとも１回交差するピクセルを描画するルールである
ことを特徴とする付記１〜６の何れか１項に記載のライン描画装置。
【０１３２】
（付記８）
コンピュータが、
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成し、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定し、
前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定し、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正し、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とし、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう
ことを含むライン描画方法。
【０１３３】
（付記９）
前記第２ラインの始点を補正する前の前記第２ラインの描画方向と、前記第２ラインの始点を補正した後の前記第２ラインの描画方向と、が同一であるか否かを判定し、同一である場合に、前記第２ラインの主軸方向における長さが１ピクセル以上であると判定し、同一でない場合に、前記次ラインの主軸方向における長さが１ピクセル未満であると判定する
ことを特徴とする付記８記載のライン描画方法。
【０１３４】
（付記１０）
前記始点及び前記終点の座標に基づいて、前記始点及び前記終点を結ぶラインの主軸がＸ軸であるか前記Ｘ軸と直交するＹ軸であるかを判定し、
前記ラインの前記始点及び前記終点のＸ座標及びＹ座標の各々に基づいて前記ラインの描画方向を判定する
ことを特徴とする付記８又は付記９記載のライン描画方法。
【０１３５】
（付記１１）
判定された前記第１ラインの主軸と、前記第１ラインの終点の前記ピクセル内の位置と、前記描画判定部により判定された前記第１ラインの描画方向と、に基づいて、前記第１ラインの終点が含まれるピクセルを描画するか否かを判定する
ことを特徴とする付記１０記載のライン描画方法。
【０１３６】
（付記１２）
前記第１ラインの終点を描画すると判定された場合に、前記第２ラインの主軸と、前記第２ラインの描画方向と、前記第２ラインの始点の前記ピクセル内の位置と、に基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定する
ことを特徴とする付記１０又は付記１１記載のライン描画方法。
【０１３７】
（付記１３）
前記第２ラインの主軸が前記Ｘ軸の場合は、前記第２ラインの始点のＸ座標を１ピクセル分補正すると共に前記第２ラインの始点のＹ座標を前記第２ラインの傾きに応じた分補正し、前記第２ラインの主軸が前記Ｙ軸の場合は、前記第２ラインの始点のＹ座標を１ピクセル分補正すると共に前記第２ラインの始点のＸ座標を前記第２ラインの傾きに応じた分補正する
ことを特徴とする付記８〜１２の何れか１項に記載のライン描画方法。
【０１３８】
（付記１４）
前記描画ルールは、前記始点と終点とを結ぶ第１ラインが、ピクセル内に予め設定された枠と前記ピクセル内において少なくとも１回交差するピクセルを描画するルールである
ことを特徴とする付記８〜１３の何れか１項に記載のライン描画装置。
【０１３９】
（付記１５）
コンピュータに、
第１及び第２ラインの座標情報が入力され、前記第１ラインの描画情報を描画ルールに基づいて生成すると共に、前記第１ラインの終点を次に描画する前記第２ラインの始点として、連続描画するための第１の描画情報を生成し、
前記第１ラインの終点を含むピクセル領域内の座標と前記第１ラインの描画方向とに基づいて、前記第１ラインの終点を含む前記ピクセルを描画するか否かを判定し、
前記第１ラインの終点を含む前記ピクセルを描画すると判定した場合に、前記第１ラインの終点である前記第２ラインの始点の座標と前記第２ラインの終点の座標とに基づいて前記第２ラインの描画方向を判定し、前記第２ラインの始点の座標と前記第２ラインの描画方向とに基づいて、前記第２ラインの始点の座標の補正が必要か否かを判定し、
前記第２ラインの始点の座標の補正が必要と判定された場合、前記第２ラインの始点の座標を当該始点が含まれるピクセルに隣接するピクセル内の座標に補正し、
前記第２ラインの主軸方向における長さが１ピクセル以上の場合は、補正された前記第２ラインの始点の座標を第２の描画情報として出力し、前記第２ラインの主軸方向における長さが１ピクセル未満の場合には、前記第２ラインを消失すべきと判定して前記第２ラインを非描画とし、
前記第１の描画情報あるいは前記第２の描画情報に基づいて描画処理を行なう
ことを含む処理を実行させるためのライン描画プログラム。
【符号の説明】
【０１４０】
１０  描画装置
１２  頂点処理部
１６  描画処理部
１８  トライアングルセットアップ部
２０  ラインセットアップ部
２２  セレクト部
５０  ＤＥＲ処理部
５２  ライン描画判定部
５４  セレクト部
５６  描画方向判定部
５８  主軸判定部
６０  終点描画判定部
６２  始点補正判定部
６４  座標補正処理部
６６  ライン消失判定部
７０  コンピュータ
７４  メモリ
７６  記憶部
【図１】
2014052782.tif 000003
【図２】
2014052782.tif 000004
【図３】
2014052782.tif 000005
【図４】
2014052782.tif 000006
【図５】
2014052782.tif 000007
【図７】
2014052782.tif 000008
【図８】
2014052782.tif 000009
【図９】
2014052782.tif 000010
【図１０】
2014052782.tif 000011
【図１１】
2014052782.tif 000012
【図１２】
2014052782.tif 000013
【図１３】
2014052782.tif 000014
【図１４】
2014052782.tif 000015
【図１５】
2014052782.tif 000016
【図１６】
2014052782.tif 000017
【図１７】
2014052782.tif 000018
【図１８】
2014052782.tif 000019
【図２０】
2014052782.tif 000020
【図６】
2014052782.tif 000021
【図１９】
2014052782.tif 000022
【図２１】
2014052782.tif 000023
【図２２】
2014052782.tif 000024
【図２３】
2014052782.tif 000025
【図２４】
2014052782.tif 000026