(57)【特許請求の範囲】
【請求項１】
所定の指示面に対する入力を検出するポインティングデバイスから検出結果を取得可能な情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記ポインティングデバイスは、前記指示面上に格子状に配置される複数の単位領域のうちで入力が行われた単位領域の位置を検出し、
前記ポインティングデバイスが検出した単位領域の位置を示す検出座標を繰り返し取得する取得手段と、
前記取得手段が検出座標を取得することに応じて、検出座標よりも詳細な精度で前記指示面上の位置を表現可能な詳細座標を繰り返し算出する詳細座標算出手段として前記コンピュータを機能させ、
前記詳細座標算出手段は、今回に取得された検出座標よりも後に取得される検出座標を用いずに、今回に取得された検出座標が示す単位領域内の所定の基準位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標を算出する、情報処理プログラム。
【請求項２】
前記詳細座標算出手段は、今回に取得された検出座標が示す単位領域内の中心に相当する位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標を算出する、請求項１に記載の情報処理プログラム。
【請求項３】
前記詳細座標算出手段は、前回に算出された詳細座標の位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを結ぶ線分上で、かつ、当該線分の両端以外の位置を示す詳細座標を算出する、請求項２に記載の情報処理プログラム。
【請求項４】
前記詳細座標算出手段は、前回に取得された検出座標が示す単位領域の中心に相当する位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを結ぶ線分上で、かつ、当該線分の両端以外の位置を示す詳細座標を算出する、請求項２に記載の情報処理プログラム。
【請求項５】
前記詳細座標算出手段は、前記線分上であって、今回に取得された検出座標が示す単位領域内の位置を示す詳細座標を算出する、請求項３または請求項４に記載の情報処理プログラム。
【請求項６】
前記詳細座標算出手段は、前記線分上であって、今回に取得された検出座標が示す単位領域に内接する位置を示す詳細座標を算出する、請求項５に記載の情報処理プログラム。
【請求項７】
前記詳細座標算出手段は、前記線分上であって、今回に取得された検出座標が示す単位領域の周と前記線分との交点から所定距離以内の位置を示す詳細座標を算出する、請求項３または請求項４に記載の情報処理プログラム。
【請求項８】
前記取得手段は、前記指示面上に入力がなかった場合には、入力がないことを示す情報を前記ポインティングデバイスの検出結果として取得し、
前記詳細座標算出手段は、前記取得手段が検出座標を前回に取得せずに今回に取得した場合、当該検出座標が示す単位領域内の予め定められた所定位置を示す詳細座標を算出する、請求項１から請求項７のいずれか１項に記載の情報処理プログラム。
【請求項９】
前記詳細座標算出手段は、前記取得手段が今回に取得した検出座標が前回に取得した検出座標と同じ場合、前回に算出された詳細座標と同じ位置を示す詳細座標を算出する、請求項１から請求項８のいずれか１項に記載の情報処理プログラム。
【請求項１０】
前記詳細座標算出手段は、各検出座標が表現可能な各数値が各単位領域の境界の位置を表すように詳細座標を算出する、請求項１から請求項９のいずれか１項に記載の情報処理プログラム。
【請求項１１】
前記ポインティングデバイスはタッチパネルである、請求項１から請求項１０のいずれか１項に記載の情報処理プログラム。
【請求項１２】
前記詳細座標を入力として用いて所定の処理を実行する処理実行手段として前記コンピュータをさらに機能させる、請求項１から請求項１１のいずれか１項に記載の情報処理プログラム。
【請求項１３】
所定の指示面に対する入力を検出するポインティングデバイスから検出結果を取得可能な情報処理装置であって、
前記ポインティングデバイスは、前記指示面上に格子状に配置される複数の単位領域のうちで入力が行われた単位領域の位置を検出し、
前記ポインティングデバイスが検出した単位領域の位置を示す検出座標を繰り返し取得する取得手段と、
前記取得手段が検出座標を取得することに応じて、検出座標よりも詳細な精度で前記指示面上の位置を表現可能な詳細座標を繰り返し算出する詳細座標算出手段とを備え、
前記詳細座標算出手段は、今回に取得された検出座標よりも後に取得される検出座標を用いずに、今回に取得された検出座標が示す単位領域内の所定の基準位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標を算出する、情報処理装置。
【請求項１４】
所定の指示面に対する入力を検出するポインティングデバイスから検出結果を取得可能な情報処理システムであって、
前記ポインティングデバイスは、前記指示面上に格子状に配置される複数の単位領域のうちで入力が行われた単位領域の位置を検出し、
前記ポインティングデバイスが検出した単位領域の位置を示す検出座標を繰り返し取得する取得手段と、
前記取得手段が検出座標を取得することに応じて、検出座標よりも詳細な精度で前記指示面上の位置を表現可能な詳細座標を繰り返し算出する詳細座標算出手段とを備え、
前記詳細座標算出手段は、今回に取得された検出座標よりも後に取得される検出座標を用いずに、今回に取得された検出座標が示す単位領域内の所定の基準位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標を算出する、情報処理システム。
【請求項１５】
所定の指示面に対する入力を検出するポインティングデバイスから検出結果を取得可能な情報処理装置において実行される座標算出方法であって、
前記ポインティングデバイスは、前記指示面上に格子状に配置される複数の単位領域のうちで入力が行われた単位領域の位置を検出し、
前記ポインティングデバイスが検出した単位領域の位置を示す検出座標を繰り返し取得する取得ステップと、
前記取得ステップにおいて検出座標を取得することに応じて、検出座標よりも詳細な精度で前記指示面上の位置を表現可能な詳細座標を繰り返し算出する詳細座標算出ステップとを備え、
前記詳細座標算出ステップにおいては、今回に取得された検出座標よりも後に取得される検出座標を用いずに、今回に取得された検出座標が示す単位領域内の所定の基準位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標が算出される、座標算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラムおよび情報処理装置に関し、より特定的には、ポインティングデバイスを用いて入力を行う情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
特許文献１には、ポインティングデバイスとしてタッチパネルを用いたゲーム装置が開示されている。特許文献１に記載されているような通常のタッチパネルは、タッチパネルの入力面に対してタッチペンや指等を接触させた場合に接触位置を検出し、当該接触位置を示す座標を出力する。ゲーム装置は、タッチパネルから出力された座標を入力位置として用いてゲーム処理を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２７１７８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、ゲーム装置は、タッチパネルが認識可能な精度でしか入力位置を認識することができなかった。そのため、ユーザがタッチパネル上に軌跡を描く場合には、タッチパネルが出力した座標値よりも詳細に軌跡を認識することができなかった。このように、ポインティングデバイスにおいて入力位置を検出する従来の方法では、情報処理装置は、ポインティングデバイスの検出精度以上に詳細に入力位置を認識することができなかった。
【０００５】
それ故、本発明の目的は、ポインティングデバイスを用いて入力を行う場合において、指示面に対して入力された位置をより詳細に認識することが可能な情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の（１）〜（１２）の構成を採用した。
【０００７】
（１）
本発明は、指示面に対する入力を検出するポインティングデバイスから検出結果を取得可能な情報処理装置のコンピュータで実行される情報処理プログラムである。ポインティングデバイスは、指示面上に格子状に配置される複数の単位領域のうちで入力が行われた単位領域の位置を検出する。情報処理プログラムは、取得手段、および、詳細座標算出手段としてコンピュータを機能させる。取得手段は、ポインティングデバイスが検出した単位領域の位置を示す検出座標を繰り返し取得する。詳細座標算出手段は、取得手段が検出座標を取得することに応じて、検出座標よりも詳細な精度で指示面上の位置を表現可能な詳細座標を繰り返し算出する。また、詳細座標算出手段は、今回に取得された検出座標よりも後に取得される検出座標を用いずに、今回に取得された検出座標が示す単位領域内の所定の基準位置を、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を示す詳細座標を算出する。
【０００８】
上記において、「ポインティングデバイス」とは、後述する実施形態に記載のタッチパネルの他、マウスやタッチパッド等の入力装置や、後述する［他の実施形態］に記載のような遠隔から画面上の位置を指示する入力システム等を含む概念である。
上記「情報処理装置」とは、後述する実施形態に記載のゲーム装置の他、任意のコンピュータプログラムを実行することによって情報処理を行うコンピュータを含む概念である。また、上記「情報処理装置」は、携帯型か否かを問わない。
上記「情報処理プログラム」とは、後述する実施形態に記載のゲームプログラムの他、パーソナルコンピュータや携帯端末において実行されるアプリケーションプログラムを含む概念である。
上記「取得手段」は、検出座標を繰り返し取得する手段であればよく、検出座標の情報（データ）をポインティングデバイスから直接取得してもよいし、所定のインターフェース回路を介してポインティングデバイスから間接的に取得してもよい。また、「取得手段」は、後述する実施形態におけるステップＳ３の処理のように、所定時間に１回の割合で検出座標を取得する手段の他、検出座標を取得するタイミングが不定期であるものであってもよい。
上記「検出座標」は、入力が行われた単位領域の位置を示す座標であり、ポインティングデバイスが検出する座標である。上記「検出座標」は、後述する実施形態では、指示面上の位置を０以上の整数の座標値によって表現するものであるが、離散的な数値で指示面上の位置を表す座標値であればどのようなものであってもよく、検出精度は任意である。
上記「詳細座標」は、検出座標よりも詳細な精度で指示面上の位置を表現するものであり、検出座標で表現できない桁を、具体的な数値として表現するものである。後述する実施形態では、「詳細座標」は、指示面上の位置を小数第１位までの数の座標値によって表現するものであるが、検出座標よりも詳細な精度で指示面上の位置を表現するものであればよい。
上記「詳細座標算出手段」は、取得手段が検出座標を取得することに応じて詳細座標を算出するものであるが、後述する実施形態のように、取得手段が検出座標を取得する度に詳細座標を算出してもよいし、取得手段が検出座標を複数回取得することに応じて１回詳細座標を算出してもよい。また、「詳細座標算出手段」における詳細座標の算出方法は、後述する実施形態におけるステップＳ１５の処理における算出方法の他、後述する図６および図７に示す算出方法や、本欄の（２）〜（７）の構成による算出方法であってもよい。
上記「所定の基準位置」とは、後述する実施形態においては、単位領域の中心位置であるが、単位領域内の予め定められた位置であればよく、後述する「中心に相当する位置」であってもよい。
また、上記「前回に取得された検出座標が示す単位領域の方向へ移動させた位置」とは、移動する方向を特定する意図であり、移動後の位置が「前回に取得された検出座標が示す単位領域」の内部であるか外部であるか境界であるかを問わない。また、「今回に取得された検出座標が示す単位領域」の内部であるか外部であるか境界であるかも問わない。
また、上記「前回に取得された検出座標が示す単位領域の方向」とは、当該単位領域に近づく方向であればよく、当該単位領域の基準位置に向かう方向でも良いし、当該単位領域の内部または境界上の所定位置に向かう方向でもよい。
【０００９】
上記（１）の構成によれば、検出座標よりも詳細な位置を表現可能な詳細座標によって入力位置を認識することができ、指示面に対して入力された位置をより詳細に認識することが可能となる。また、詳細座標は、今回に取得された検出座標が示す単位領域内の基準位置から、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を表すものとして算出される。このように詳細座標が算出される場合、各詳細座標の位置が基準位置から前回の単位領域の方へ近づいた位置となる結果、各検出座標の間隔に比べて各詳細座標の間隔が短くなる（等しいままの箇所もある）。そのため、上記のように算出された詳細座標を結ぶ軌跡は、検出座標をそのまま結ぶ軌跡に比べて滑らかになる。したがって、詳細座標により示される入力位置は、検出座標により示される入力位置に比べて、ユーザが実際に入力した位置に近いと考えられ、ユーザ入力をより正確に表していると言える。すなわち、本発明によれば、指示面に対する連続的な入力に対応する各入力座標をより詳細にかつ正確に算出することが可能となる。
【００１０】
（２）
また、詳細座標算出手段は、今回に取得された検出座標が示す単位領域内の中心に相当する位置を、前回に取得された検出座標が示す単位領域（Ａ２）の方向へ移動させた位置を示す詳細座標を算出してもよい。
【００１１】
なお、上記「単位領域内の中心に相当する位置」とは、中心の正確な位置の他、詳細座標の表現可能な数値によっては、詳細座標が中心位置を正確に表現することができない場合があるので、以下の位置であってもよい。
・詳細座標が表現可能な位置のうちで、中心に最も近い位置。
・詳細座標が表現可能な位置であって、かつ、中心を表す座標値よりも小さい座標値で表される位置のうちで、中心に最も近い位置。
・詳細座標が表現可能な位置であって、かつ、中心を表す座標値よりも大きい座標値で表される位置のうちで、中心に最も近い位置。
【００１２】
上記（２）の構成によれば、詳細座標を算出（移動）する基準となる位置を検出領域の略中心の位置とするので、上下左右のいずれの方向に移動させる場合でも均等に詳細座標を移動させることができる。したがって、どの方向に入力を行う場合でもほぼ同じ条件で詳細座標が算出されることとなり、より正確に入力位置を算出することができる。
【００１３】
（３）
詳細座標算出手段は、前回に算出された詳細座標の位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを結ぶ線分上で、かつ、当該線分の両端以外の位置を示す詳細座標を算出してもよい。
【００１４】
上記において「線分の両端以外の位置」とは、上記線分上の位置であって、上記「前回に算出された詳細座標の位置」と上記「今回に取得された検出座標が示す単位領域の中心に相当する位置」とを除く位置を指す。したがって、「線分の両端以外の位置」には、後述する（５）〜（７）で示す位置が含まれる。
【００１５】
上記（３）の構成によれば、前回に算出された詳細座標の位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを用いることによって、詳細座標を容易に算出することができる。
【００１６】
（４）
詳細座標算出手段は、前回に取得された検出座標が示す単位領域の中心に相当する位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを結ぶ線分上で、かつ、当該線分の両端以外の位置を示す詳細座標を算出してもよい。
【００１７】
上記（４）の構成によれば、前回に取得された検出座標が示す単位領域の中心に相当する位置と、今回に取得された検出座標が示す単位領域の中心に相当する位置とを用いることによって、詳細座標を容易に算出することができる。
【００１８】
（５）
詳細座標算出手段は、上記（３）または（４）で述べた線分上であって、今回に取得された検出座標が示す単位領域内の位置を示す詳細座標を算出してもよい。
【００１９】
上記（５）の構成によれば、検出座標により示される単位領域と、算出される詳細座標とが一致するので、詳細座標は、現在入力が行われている位置を正確に表すことになる。したがって、ユーザの入力位置を正確に算出することができる。また、上記（５）の構成によれば、検出座標が取得されることに応じて算出される詳細座標が、検出座標が示す単位領域内の位置を示すので、検出座標が取得されることに応じて詳細位置をリアルタイムで算出することができると言える。すなわち、指示面に対して連続して行われる入力に対応する入力位置を、リアルタイムで算出することができる。
【００２０】
（６）
詳細座標算出手段は、上記（３）または（４）で述べた線分上であって、今回に取得された検出座標が示す単位領域に内接する位置を示す詳細座標を算出してもよい。
【００２１】
上記「単位領域に内接する位置」とは、（格子状に配置される単位領域の縦横の方向と、詳細座標の座標系の座標軸の方向とが一致する場合で、かつ、上記詳細座標が離散的な数値である場合、）単位領域内の位置であって、かつ、座標の少なくともいずれかの成分の値が、詳細座標によって表現可能な座標値のうちで、最大または最小となる位置である。
【００２２】
上記（６）の構成によれば、詳細座標は、今回に取得された検出座標が示す単位領域に内接する位置、すなわち、当該単位領域内の位置のうちで、前回に取得された検出座標が示す単位領域に最も近い位置となる。ここで、詳細座標の正確性の観点から言えば、上記（５）で説明したように、今回の詳細座標は今回に取得された検出座標が示す単位領域内の位置となることが好ましい。一方、各詳細座標により示される軌跡の観点から言えば、前回に取得された検出座標が示す単位領域に近い位置であるほど、詳細位置を結ぶ軌跡がより滑らかになり、好ましい。したがって、上記（６）の構成によれば、今回の詳細座標を今回の単位領域内に拘束しつつ、できる限り前回の詳細座標に近づけるので、上記２つの観点のいずれにおいても好ましい詳細座標を算出することができる。
【００２３】
（７）
詳細座標算出手段は、線分上であって、今回に取得された検出座標が示す単位領域の周と線分との交点から所定距離以内の位置を示す詳細座標を算出してもよい。
【００２４】
上記「線分上であって、今回に取得された検出座標が示す単位領域の周と線分との交点から所定距離以内の位置」とは、上記線分のうちで、当該交点を中心として当該中心から上記所定距離の位置を端点とする線分上の位置を指す。例えば図７を例にとって説明すると、「線分上であって、今回に取得された検出座標が示す単位領域の周と線分との交点から所定距離以内の位置」とは、点３３と点３４とを結ぶ線分上のいずれかの位置である。なお、「線分上であって、今回に取得された検出座標が示す単位領域の周と線分との交点から所定距離以内の位置」には、単位領域に内接する位置および外接する位置が少なくとも含まれる。
【００２５】
上記（７）の構成によれば、詳細座標は、今回に取得された検出座標が示す単位領域の周付近の位置を表すこととなる。ここで、詳細座標の位置が、前回に算出された詳細座標の位置（上記（３））に近い場合、あるいは、前回に取得された検出座標が示す単位領域の中心に相当する位置（上記（４））に近い場合には、詳細座標の位置が、今回に取得された検出座標が示す単位領域から離れてしまい、詳細座標の位置が正確でなくなるという問題が生じ得る。一方、詳細座標の位置が、今回に取得された検出座標が示す単位領域の中心位置に近い場合には、詳細座標により示される軌跡が滑らかでなくなり、本発明の効果が小さくなってしまうという問題が生じ得る。これに対して、上記（７）の構成によれば、上記２つの問題が生じない適切な位置を詳細座標として算出することができる。
【００２６】
（８）
取得手段は、指示面上に入力がなかった場合には、入力がないことを示す情報をポインティングデバイスの検出結果として取得してもよい。このとき、詳細座標算出手段は、取得手段が検出座標を前回に取得せずに今回に取得した場合、当該検出座標が示す単位領域内の予め定められた所定位置を示す詳細座標を算出する。
【００２７】
上記「所定位置」は、後述する実施形態では単位領域の中心位置であるが、単位領域内のうちの予め定められた位置であればよく、例えば単位領域の中心に相当する位置であってもよい。
【００２８】
上記（８）の構成によれば、連続して取得される複数の検出座標のうちで最初に取得される検出座標に基づいて詳細座標を算出する場合であっても、適切な位置を表す詳細座標を算出することができる。
【００２９】
（９）
詳細座標算出手段は、取得手段が今回に取得した検出座標が前回に取得した検出座標と同じ場合、前回に算出された詳細座標と同じ位置を示す詳細座標を算出してもよい。
【００３０】
上記（９）の構成によれば、例えばユーザが指示面にタッチしながらタッチ位置を移動させない場合のように、同じ検出座標が連続して取得される場合であっても、適切な位置を表す詳細座標を算出することができる。
【００３１】
（１０）
詳細座標算出手段は、各検出座標が表現可能な各数値が各単位領域の境界の位置を表すように詳細座標を算出するようにしてもよい。
【００３２】
上記「各検出座標が表現可能な各数値が各単位領域の境界の位置を表す」とは、例えば後述する実施形態のように各検出座標が整数値を表現可能な場合であれば、各単位領域の境界の位置が整数値となることを意味する。なお、「各検出座標が表現可能な各数値」は、整数値に限らず、例えば１００の位以上の桁の数値であってもよく、この場合、各単位領域の境界の位置は１００の倍数の数値で表されることになる。
【００３３】
上記（１０）の構成によれば、各単位領域の境界の位置は、各検出座標が表現可能な各数値で表されることになる。そのため、１つの単位領域内の各位置に関しては、検出座標が表現可能な桁の数値が全て同じになり、詳細座標でのみ表現可能な桁の数値がそれぞれ異なることになる。このとき、詳細座標が表す数値に対して、詳細座標でのみ表現可能な桁を切り捨てることで、元の検出座標を得ることができる。つまり、上記（１０）の構成によれば、詳細座標から元の検出座標を容易に得ることができる。したがって、詳細座標を入力として用いる処理に対しても、検出座標を入力として用いる処理に対しても容易に対応することができ、情報処理プログラムの汎用性を向上することができる。
【００３４】
（１１）
ポインティングデバイスはタッチパネルであってもよい。
【００３５】
上記（１１）の構成によれば、入力装置としてタッチパネルを用いる情報処理システムに本発明を適用することができる。
【００３６】
（１２）
情報処理プログラムは、詳細座標を入力として用いて所定の処理を実行する処理実行手段としてコンピュータをさらに機能させてもよい。
【００３７】
上記「処理実行手段」は、１以上の詳細座標を入力として用いる情報処理であれば、どのような処理を実行するものであってもよく、後述する実施形態のようなゲーム処理に限らず、後述する［他の実施形態］に記載の文字認識処理や軌跡表示処理を実行するものであってもよい。
【００３８】
上記（１２）の構成によれば、ポインティングデバイスが検出する座標よりも詳細に位置を表す詳細座標を入力として用いて各種の情報処理を行うことができる。すなわち、より正確な入力位置を用いて各種の情報処理を行うことができる。
【００３９】
また、本発明は、上記情報処理装置と同等の機能を有する情報処理装置の形態で提供されてもよい。なお、この情報処理装置においては、上記情報処理プログラムを実行するＣＰＵによって上記各手段が実現されてもよいし、情報処理装置が備える専用回路によって上記各手段の一部または全部が実現されてもよい。
【発明の効果】
【００４０】
以上のように、本発明によれば、今回に取得された検出座標が示す単位領域内の中心に相当する位置から、前回に取得された検出座標が示す単位領域の方向へ移動させた位置を表す詳細座標を算出することによって、指示面に対する連続的な入力における各入力座標をより詳細に認識することが可能となる。
【図面の簡単な説明】
【００４１】
【図１】本実施形態に係るゲームプログラムを実行するゲーム装置の外観図
【図２】ゲーム装置の内部構成の一例を示すブロック図
【図３】タッチパネル１３の入力面に設定される座標系を示す図
【図４】本実施形態における詳細座標の算出方法を示す図
【図５】図３に示す入力が行われた場合における各詳細位置を結んだ軌跡を示す図
【図６】他の実施形態における詳細座標の算出方法を示す図
【図７】他の実施形態における詳細座標の算出方法を示す図
【図８】ゲーム装置１のメインメモリ３２に記憶されるデータを示す図
【図９】ゲーム装置１において実行されるゲーム処理の流れを示すメインフローチャート
【図１０】図９に示す詳細座標算出処理（ステップＳ４）の流れを示すフローチャート
【発明を実施するための形態】
【００４２】
［ゲーム装置のハードウェア構成］
図面を参照して、本発明の一実施形態に係るゲームプログラムおよびゲーム装置について説明する。本発明は、タッチパネル等のポインティングデバイスを用いる任意の情報処理装置において本ゲームプログラムが実行されることによって実現されるが、本実施形態では、情報処理装置の一例として図１に示すゲーム装置１を用いる場合について説明する。
【００４３】
図１は、本実施形態に係るゲームプログラムを実行するゲーム装置１の外観図である。ここでは、ゲーム装置１の一例として、携帯ゲーム装置を示す。なお、ゲーム装置１は、カメラを内蔵しており、当該カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりする撮像装置としても機能する。
【００４４】
図１において、ゲーム装置１は折り畳み型の携帯ゲーム装置であり、開いた状態（開状態）のゲーム装置１を示している。ゲーム装置１は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
【００４５】
ゲーム装置１は、下側ハウジング１１および上側ハウジング２１を有する。下側ハウジング１１と上側ハウジング２１とは、開閉可能（折り畳み可能）に連結されている。図１の例では、下側ハウジング１１および上側ハウジング２１は、それぞれ横長の長方形の板状に形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置１を使用する。また、ユーザは、ゲーム装置１を使用しない場合には閉状態としてゲーム装置１を保管する。また、図１に示した例では、ゲーム装置１は、上記閉状態および開状態のみでなく、下側ハウジング１１と上側ハウジング２１とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング２１を下側ハウジング１１に対して任意の角度で静止させることができる。
【００４６】
下側ハウジング１１には、下側ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１２が設けられる。下側ＬＣＤ１２は横長形状であり、長辺方向が下側ハウジング１１の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置１に内蔵されている表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置１は、任意の解像度の表示装置を利用することができる。なお、下側ＬＣＤ１２には、内側カメラ２３または外側カメラ２５で撮像されている画像がリアルタイムに表示される。
【００４７】
下側ハウジング１１には、入力装置として、各操作ボタン１４Ａ〜１４Ｋおよびタッチパネル１３が設けられる。図１に示されるように、各操作ボタン１４Ａ〜１４Ｋのうち、方向入力ボタン１４Ａ、操作ボタン１４Ｂ、操作ボタン１４Ｃ、操作ボタン１４Ｄ、操作ボタン１４Ｅ、電源ボタン１４Ｆ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ハウジング１１の内側主面上に設けられる。内側主面とは、上側ハウジング２１と下側ハウジング１１とを折り畳んだときに内側となる面である。図１に示す例では、方向入力ボタン１４Ａおよび電源ボタン１４Ｆは、下側ハウジング１１の内側主面の中央付近に設けられる下側ＬＣＤ１２に対して、左右一方側（図１では左側）の当該主面上に設けられる。また、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、下側ＬＣＤ１２に対して左右他方側（図１では右側）となる下側ハウジング１１の内側主面上に設けられる。方向入力ボタン１４Ａ、操作ボタン１４Ｂ〜１４Ｅ、スタートボタン１４Ｇ、およびセレクトボタン１４Ｈは、ゲーム装置１に対する各種操作を行うために用いられる。方向入力ボタン１４Ａは、例えば選択操作等に用いられる。各操作ボタン１４Ｂ〜１４Ｅは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン１４Ｆは、ゲーム装置１の電源をオン／オフするために用いられる。
【００４８】
なお、図１においては、操作ボタン１４Ｉ〜１４Ｋの図示を省略している。例えば、Ｌボタン１４Ｉは、下側ハウジング１１の上側面の左端部に設けられ、Ｒボタン１４Ｊは、下側ハウジング１１の上側面の右端部に設けられる。Ｌボタン１４ＩおよびＲボタン１４Ｊは、撮影機能を有するゲーム装置１に対して、例えば撮影指示操作（シャッター操作）を行うために用いられる。さらに、音量ボタン１４Ｋは、下側ハウジング１１の左側面に設けられる。音量ボタン１４Ｋは、ゲーム装置１が備えるスピーカの音量を調整するために用いられる。
【００４９】
また、ゲーム装置１は、各操作ボタン１４Ａ〜１４Ｋとは別の入力装置としてさらに、画面上における任意の位置を指定可能な入力装置であるポインティングデバイスの一例として、タッチパネル１３を備えている。タッチパネル１３は、下側ＬＣＤ１２の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル１３は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル１３は、抵抗膜方式に限らず、任意の方式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル１３として、例えば下側ＬＣＤ１２の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１３の解像度と下側ＬＣＤ１２の解像度とが一致している必要はない。また、下側ハウジング１１の右側面には、挿入口（図１では破線で示している）が設けられている。挿入口は、タッチパネル１３に対する操作を行うために用いられるタッチペン２７を収納することができる。なお、タッチパネル１３に対する入力（タッチ入力）は、通常タッチペン２７を用いて行われるが、タッチペン２７に限らずユーザの指でタッチパネル１３を操作することも可能である。
【００５０】
また、下側ハウジング１１の右側面には、メモリカード２８を収納するための挿入口（図１では二点鎖線で示している）が設けられている。この挿入口の内側には、ゲーム装置１とメモリカード２８とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２８は、例えばＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカードであり、コネクタに着脱自在に装着される。メモリカード２８は、例えば、ゲーム装置１によって撮像された画像を記憶（保存）したり、他の装置で生成された画像をゲーム装置１に読み込んだりするために用いられる。
【００５１】
さらに、下側ハウジング１１の上側面には、メモリカード２９を収納するための挿入口（図１では、一点鎖線で示している）が設けられている。この挿入口の内側にも、ゲーム装置１とメモリカード２９とを電気的に接続するためのコネクタ（図示せず）が設けられる。メモリカード２９は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング１１に設けられた挿入口に着脱自在に装着される。
【００５２】
下側ハウジング１１と上側ハウジング２１との連結部の左側部分には、３つのＬＥＤ１５Ａ〜１５Ｃが取り付けられる。ここで、ゲーム装置１は、他の機器との間で無線通信を行うことが可能であり、第１ＬＥＤ１５Ａは、ゲーム装置１の電源がオンである場合に点灯する。第２ＬＥＤ１５Ｂは、ゲーム装置１の充電中に点灯する。第３ＬＥＤ１５Ｃは、無線通信が確立している場合に点灯する。したがって、３つのＬＥＤ１５Ａ〜１５Ｃによって、ゲーム装置１の電源のオン／オフ状況、充電状況、および、通信確立状況をユーザに通知することができる。
【００５３】
一方、上側ハウジング２１には、上側ＬＣＤ２２が設けられる。上側ＬＣＤ２２は横長形状であり、長辺方向が上側ハウジング２１の長辺方向に一致するように配置される。なお、下側ＬＣＤ１２と同様、上側ＬＣＤ２２に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、上側ＬＣＤ２２上を覆うように、タッチパネルを設けてもかまわない。上側ＬＣＤ２２には、例えば、各操作ボタン１４Ａ〜１４Ｋやタッチパネル１３の役割をユーザに教えるための操作説明画面が表示される。
【００５４】
また、上側ハウジング２１には、２つのカメラ（内側カメラ２３および外側カメラ２５）が設けられる。図１に示されるように、内側カメラ２３は、上側ハウジング２１の連結部付近の内側主面に取り付けられる。一方、外側カメラ２５は、内側カメラ２３が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング２１の外側主面（ゲーム装置１が閉状態となった場合に外側となる面であり、図１に示す上側ハウジング２１の背面）に取り付けられる。なお、図１においては、外側カメラ２５を破線で示している。これによって、内側カメラ２３は、上側ハウジング２１の内側主面が向く方向を撮像することが可能であり、外側カメラ２５は、内側カメラ２３の撮像方向の逆方向、すなわち、上側ハウジング２１の外側主面が向く方向を撮像することが可能である。このように、本実施形態では、２つの内側カメラ２３および外側カメラ２５の撮像方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置１からユーザの方を見た景色を内側カメラ２３で撮像することができるとともに、ゲーム装置１からユーザの反対側の方向を見た景色を外側カメラ２５で撮像することができる。
【００５５】
なお、上記連結部付近の内側主面には、音声入力装置としてマイク（図２に示すマイク４３）が収納されている。そして、上記連結部付近の内側主面には、マイク４３がゲーム装置１外部の音を検知できるように、マイクロフォン用孔１６が形成される。マイク４３を収納する位置およびマイクロフォン用孔１６の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング１１にマイク４３を収納し、マイク４３を収納位置に対応させて下側ハウジング１１にマイクロフォン用孔１６を設けるようにしてもよい。
【００５６】
また、上側ハウジング２１の外側主面には、第４ＬＥＤ２６（図１では、破線で示す）が取り付けられる。第４ＬＥＤ２６は、内側カメラ２３または外側カメラ２５によって撮影が行われた（シャッターボタンが押下された）時点で点灯する。また、内側カメラ２３または外側カメラ２５によって動画が撮影される間点灯する。第４ＬＥＤ２６によって、ゲーム装置１による撮影が行われた（行われている）ことを撮影対象者や周囲に通知することができる。
【００５７】
また、上側ハウジング２１の内側主面の中央付近に設けられる上側ＬＣＤ２２に対して、左右両側の当該主面に音抜き孔２４がそれぞれ形成される。音抜き孔２４の奥の上側ハウジング２１内にはスピーカが収納されている。音抜き孔２４は、スピーカからの音をゲーム装置１の外部に放出するための孔である。
【００５８】
以上に説明したように、上側ハウジング２１には、画像を撮像するための構成である内側カメラ２３および外側カメラ２５と、主に操作説明画面を表示するための表示手段である上側ＬＣＤ２２とが設けられる。一方、下側ハウジング１１には、ゲーム装置１に対する操作入力を行うための入力装置（タッチパネル１３および各操作ボタン１４Ａ〜１４Ｋ）と、撮像された画像を表示するための表示手段である下側ＬＣＤ１２とが設けられる。したがって、ゲーム装置１を使用する際には、ユーザは、下側ＬＣＤ１２に表示される撮像画像（カメラによって撮像された画像）を見ながら、下側ハウジング１１を把持して入力装置に対する入力を行うことができる。
【００５９】
次に、図２を参照して、ゲーム装置１の内部構成を説明する。図２は、ゲーム装置１の内部構成の一例を示すブロック図である。
【００６０】
図２において、ゲーム装置１は、ＣＰＵ３１、メインメモリ３２、メモリ制御回路３３、保存用データメモリ３４、プリセットデータ用メモリ３５、メモリカードインターフェース（メモリカードＩ／Ｆ）３６、メモリカードＩ／Ｆ３７、無線通信モジュール３８、ローカル通信モジュール３９、リアルタイムクロック（ＲＴＣ）４０、電源回路４１、インターフェース回路（Ｉ／Ｆ回路）４２、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４５、第２ＧＰＵ４６、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）４７、第２ＶＲＡＭ４８、およびＬＣＤコントローラ４９等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング１１（または上側ハウジング２１でもよい）内に収納される。
【００６１】
ＣＰＵ３１は、所定のプログラム（ここでは、本実施形態に係るゲームプログラム）を実行するための情報処理手段である。本実施形態では、ゲームプログラムがゲーム装置１内のメモリ（例えば保存用データメモリ３４）やメモリカード２８および／または２９に記憶されており、ＣＰＵ３１は、当該ゲームプログラムを実行することによって、後述するゲーム処理を実行する。なお、ＣＰＵ３１によって実行されるプログラムは、ゲーム装置１内のメモリに予め記憶されていてもよいし、メモリカード２８および／または２９から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
【００６２】
ＣＰＵ３１には、メインメモリ３２、メモリ制御回路３３、およびプリセットデータ用メモリ３５が接続される。メモリ制御回路３３には、保存用データメモリ３４が接続される。メインメモリ３２は、ＣＰＵ３１のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ３２は、上記ゲーム処理に用いられる各種データを記憶したり、外部（メモリカード２８および２９や他の機器等）から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ３２として、例えばＰＳＲＡＭ（Ｐｓｅｕｄｏ−ＳＲＡＭ）を用いる。保存用データメモリ３４は、ＣＰＵ３１によって実行されるプログラムや内側カメラ２３および外側カメラ２５によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ３４は、不揮発性の記憶媒体によって構成されており、本実施形態では例えばＮＡＮＤ型フラッシュメモリで構成される。メモリ制御回路３３は、ＣＰＵ３１の指示に従って、保存用データメモリ３４に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ３５は、ゲーム装置１において予め設定される各種パラメータ等のデータ（プリセットデータ）を記憶するための記憶手段である。プリセットデータ用メモリ３５としては、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バスによってＣＰＵ３１と接続されるフラッシュメモリを用いることができる。
【００６３】
メモリカードＩ／Ｆ３６および３７は、それぞれＣＰＵ３１に接続される。メモリカードＩ／Ｆ３６は、コネクタに装着されたメモリカード２８に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。また、メモリカードＩ／Ｆ３７は、コネクタに装着されたメモリカード２９に対するデータの読み出しおよび書き込みを、ＣＰＵ３１の指示に応じて行う。本実施形態では、内側カメラ２３および外側カメラ２５によって撮像された画像データや他の装置から受信された画像データがメモリカード２８に書き込まれたり、メモリカード２８に記憶された画像データがメモリカード２８から読み出されて保存用データメモリ３４に記憶されたり、読み出された画像データがメモリカード２８から読み出されて他の装置へ送信されたりする。また、メモリカード２９に記憶された各種プログラムが、ＣＰＵ３１によって読み出されて実行されたりする。
【００６４】
なお、本発明のゲームプログラムは、メモリカード２９等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。また、ゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性記憶装置に限らず、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
【００６５】
無線通信モジュール３８は、例えばＩＥＥＥ８０２．１１．ｂ／ｇの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。また、ローカル通信モジュール３９は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール３８およびローカル通信モジュール３９は、ＣＰＵ３１に接続される。ＣＰＵ３１は、無線通信モジュール３８を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール３９を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【００６６】
また、ＣＰＵ３１には、ＲＴＣ４０および電源回路４１が接続される。ＲＴＣ４０は、時間をカウントしてＣＰＵ３１に出力する。例えば、ＣＰＵ３１は、ＲＴＣ４０によって計時された時間に基づいて、現在時刻（日付）等を計算することもできる。電源回路４１は、ゲーム装置１が有する電源（典型的には電池であり、下側ハウジング１１に収納される）から供給される電力を制御し、ゲーム装置１の各部品に電力を供給する。
【００６７】
また、ゲーム装置１は、マイク４３およびアンプ４４を備えている。マイク４３およびアンプ４４は、それぞれＩ／Ｆ回路４２に接続される。マイク４３は、ゲーム装置１に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をＩ／Ｆ回路４２に出力する。アンプ４４は、Ｉ／Ｆ回路４２から音声信号を増幅してスピーカ（図示せず）から出力させる。Ｉ／Ｆ回路４２は、ＣＰＵ３１に接続される。
【００６８】
また、タッチパネル１３は、Ｉ／Ｆ回路４２に接続される。Ｉ／Ｆ回路４２は、マイク４３およびアンプ４４（スピーカ）の制御を行う音声制御回路と、タッチパネル１３の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するＡ／Ｄ変換およびＤ／Ａ変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル１３からの信号に基づいて所定の形式のタッチ位置データ（後述する検出座標データ）を生成してＣＰＵ３１に出力する。タッチ位置データは、タッチパネル１３の入力面に対して入力が行われた位置としてタッチパネル１３が検出した位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル１３からの信号の読み込み、および、検出座標データの生成を所定時間に１回の割合で繰り返し行う。
【００６９】
操作ボタン１４は、上記各操作ボタン１４Ａ〜１４Ｋから構成され、ＣＰＵ３１に接続される。操作ボタン１４からＣＰＵ３１へは、各操作ボタン１４Ａ〜１４Ｋに対する入力状況（押下されたか否か）を示す操作データが出力される。ＣＰＵ３１は、操作ボタン１４から操作データを取得することによって、操作ボタン１４に対する入力に応じた処理を実行する。
【００７０】
内側カメラ２３および外側カメラ２５は、それぞれＣＰＵ３１に接続される。内側カメラ２３および外側カメラ２５は、ＣＰＵ３１の指示に応じて画像を撮像し、撮像した画像データをＣＰＵ３１に出力する。本実施形態では、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれか一方に対して撮像指示を行い、撮像指示を受けたカメラが画像を撮像して画像データをＣＰＵ３１に送る。
【００７１】
第１ＧＰＵ４５には第１ＶＲＡＭ４７が接続され、第２ＧＰＵ４６には第２ＶＲＡＭ４８が接続される。第１ＧＰＵ４５は、ＣＰＵ３１からの指示に応じて、メインメモリ３２に記憶されている表示画像を生成するためのデータに基づいて第１の表示画像を生成し、第１ＶＲＡＭ４７に描画する。第２ＧＰＵ４６は、第１ＧＰＵ４５と同様に、ＣＰＵ３１からの指示に応じて第２の表示画像を生成し、第２ＶＲＡＭ４８に描画する。第１ＶＲＡＭ４７および第２ＶＲＡＭ４８は、ＬＣＤコントローラ４９に接続されている。
【００７２】
ＬＣＤコントローラ４９は、レジスタ４９１を含む。レジスタ４９１は、ＣＰＵ３１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ４９は、レジスタ４９１の値が０の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を下側ＬＣＤ１２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を上側ＬＣＤ２２に出力する。また、レジスタ４９１の値が１の場合は、第１ＶＲＡＭ４７に描画された第１の表示画像を上側ＬＣＤ２２に出力し、第２ＶＲＡＭ４８に描画された第２の表示画像を下側ＬＣＤ１２に出力する。例えば、ＣＰＵ３１は、内側カメラ２３および外側カメラ２５のいずれかから取得した画像を下側ＬＣＤ１２に表示させ、所定の処理によって生成した操作説明画面を上側ＬＣＤ２２に表示させることも可能である。
【００７３】
［座標算出処理の概要］
次に、図３から図５を参照して、本実施形態に係るゲームプログラムによって実行されるゲーム処理（座標算出処理）の概要について説明する。本ゲーム処理では、ゲーム装置１は、タッチパネル１３に対して入力が行われた位置（入力位置）を、タッチパネル１３が検出する精度よりも詳細な値で算出する。例えば、タッチパネル１３が入力位置を示すものとして出力する座標値が“（１，１）”や“（２，３）”のように整数で表される場合、ゲーム装置１は、“（１．３，１．５）”や“（２．５，３．７）”のように小数を含む座標値で表現される入力位置を算出する。このように、本実施形態は、タッチパネル１３の検出精度よりも詳細な精度で入力位置を算出するものである。なお、本明細書では、「入力位置」とは、検出の仕方や算出の仕方を問わず、広くタッチパネル１３に対して入力が行われた位置を表す意味で用いられる。
【００７４】
図３は、タッチパネル１３の入力面に設定される座標系を示す図である。図３に示すように、入力面には、その左上の位置を原点としたｘｙ座標系が設定される。タッチパネル１３は、入力面上において入力があった位置を検出し、当該位置を示す座標（検出座標と呼ぶ）を出力する。
【００７５】
本実施形態では、検出座標は、タッチパネル１３が検出した位置を小数点以下の数値で表現することはできず、整数値で表現する。このように検出座標は離散的な数値であるので、タッチパネル１３は、入力面上において入力があった領域の位置を示す座標を出力するものと言える。すなわち、入力面は、格子状に配置される複数の単位領域に分けられ、タッチパネル１３は、当該単位領域のいずれかに対して入力があった場合に、入力があった単位領域の位置を示す座標を検出座標として出力する。以下では、入力があった単位領域として検出される単位領域を「検出領域」と呼ぶ。つまり、検出座標は、検出領域の位置を示す座標（座標値）である。
【００７６】
なお、図３では、斜線で示される単位領域は、入力があった領域を表している。図３では、領域Ａ１，Ａ２，Ａ３，Ａ４，およびＡ５に対する入力が順に検出された結果、タッチパネル１３は、（０，０）、（１，０）、（１，１）、（２，１）、および（３，２）で表される検出座標を順に出力している。
【００７７】
図３において、ゲーム装置１が上記検出座標をそのまま入力として用いる場合、位置の精度が粗いために、検出座標を結ぶ軌跡Ｔ１のように、入力軌跡（検出座標を結ぶ折れ線）は滑らかでなくなる。つまり、上記検出座標をそのまま入力として用いる場合には、ゲーム装置１は、入力位置をタッチパネル１３の検出精度以上に細かく認識することができず、入力位置を詳細に認識することができない。そこで、本実施形態では、ゲーム装置１は、検出座標よりも詳細に入力位置を表現することが可能な詳細座標を算出し、詳細座標を入力位置として用いて処理を行う。これによって、入力位置をより詳細な精度で認識することができる。以下、詳細座標の算出方法を説明する。
【００７８】
図４は、本実施形態における詳細座標の算出方法を示す図である。なお、図４に示す黒丸の点は、単位領域内の中心位置を表し、図４に示す白丸の点は、詳細位置（詳細座標が示す位置）を表している。ユーザ（プレイヤ）がタッチパネル１３に対して連続して入力を行った結果、タッチパネル１３から検出座標を連続して取得した場合、ゲーム装置１は、次のようにして詳細座標を算出する。
【００７９】
詳細座標は、入力面上の位置を検出座標よりも詳細な精度で表現するものである。本実施形態では、検出座標が整数値で入力位置を示すのに対して、詳細座標は、小数点以下（具体的には小数第１位まで）の数値で入力位置を示す。
【００８０】
本実施形態では、詳細座標は、図４に示すように、格子状に配置される各単位領域の周（境界）の位置が整数で表されるような数値で表現される。具体的には、図４において、各単位領域は、“ｍ≦ｘ＜ｍ＋１，ｎ≦ｙ＜ｎ＋１（ｍ，ｎは０以上の整数）”で表される。本実施形態において図４に示す方法で詳細座標を表す理由は、詳細座標から元の検出座標を容易に算出することができるようにするためである（詳細は後述する）。詳細座標の表し方は、図４に示す方法に限らず、検出座標よりも詳細な精度で表現する方法であればどのような方法であってもよい。例えば、他の実施形態においては、各単位領域は、“ｍ−０．５≦ｘ＜ｍ＋０．５，ｎ−０．５≦ｙ＜ｎ＋０．５”で表されてもよい。
【００８１】
以下、詳細座標の算出方法を説明する。最初の検出座標を取得した場合、ゲーム装置１は、当該検出座標が示す検出領域の中心位置を示す詳細座標を算出する。図４に示す例では、最初の検出座標（０，０）を取得した場合、ゲーム装置１は、検出領域Ａ１の中心位置（点Ｐ１）を示す詳細座標（０．５，０．５）を算出する。
【００８２】
次に、連続して取得される検出座標のうち、２番目以降の検出座標を取得した場合、ゲーム装置１は、今回の検出領域の中心位置を、前回の検出領域の方向へ移動させた位置を示す詳細座標を算出する。なお、今回の検出領域とは、今回に取得された検出座標により示される検出領域を指し、前回の検出領域とは、前回に取得された検出座標により示される検出領域を指す。図４を例にとって説明すると、検出領域Ａ２を示す検出座標を取得した場合、ゲーム装置１は、今回の検出領域Ａ２の中心位置（点Ｐ２）を、前回の検出領域Ａ１の方向へ移動させた位置（点Ｐ１１）の座標を、詳細座標として算出する。このように、今回の検出領域の中心位置から前回の検出領域の方向へ移動させた位置を詳細位置とすることで、詳細位置を結ぶことで形成される入力軌跡を滑らかにすることができる。
【００８３】
なお、本実施形態では、ゲーム装置１は、前回に算出された詳細位置と今回の検出領域の中心位置とに基づいて詳細位置を算出する。すなわち、今回の詳細位置は、前回に算出された詳細位置と、今回の検出領域の中心位置とを結ぶ線分上で、かつ、当該線分の両端以外の位置となるように算出される。より具体的には、今回の詳細位置は、上記線分上であって、今回の検出領域に内接する位置となる。図４を例にとって説明すると、検出領域Ａ２を示す検出座標が取得された場合、点Ｐ２と点Ｐ１とを結ぶ線分上で検出領域Ａ２に内接する点Ｐ１１の位置が今回の詳細位置となる。同様に、検出領域Ａ３を示す検出座標が取得された場合、点Ｐ１１と点Ｐ３とを結ぶ線分上で検出領域Ａ３に内接する点Ｐ１２の位置が今回の詳細位置となり、検出領域Ａ４を示す検出座標が取得された場合、点Ｐ１２と点Ｐ４とを結ぶ線分上で検出領域Ａ４に内接する点Ｐ１３の位置が今回の詳細位置となり、検出領域Ａ５を示す検出座標が取得された場合、点Ｐ１３と点Ｐ５とを結ぶ線分上で検出領域Ａ５に内接する点Ｐ１４の位置が今回の詳細位置となる。
【００８４】
図５は、図３に示す入力が行われた場合における各詳細位置を結んだ軌跡を示す図である。図５に示されるように、点Ｐ１〜点Ｐ１４の各詳細位置を結ぶ軌跡Ｔ２は、各検出座標の位置を結ぶ軌跡Ｔ１（図３）に比べて滑らかになっていることが分かる。
【００８５】
以上のように、本実施形態によれば、ゲーム装置１は、タッチパネル１３の検出精度以上の精度で詳細に入力位置を算出することができる。また、算出された入力位置（詳細座標の位置）を結ぶ軌跡は、各検出座標の位置を結ぶ軌跡よりも滑らかになる。滑らかな軌跡はユーザが実際に入力した軌跡に近いと考えられるので、ゲーム装置１は、入力位置をより正確に算出することができる。また、本実施形態によれば、検出座標が１回取得される度にその検出座標に対応する詳細位置（詳細座標）が算出されるので、ゲーム装置１は詳細位置をリアルタイムで算出することができ、入力位置をリアルタイムで算出することができる。
【００８６】
また、本実施形態では、ゲーム装置１は、前回に算出された詳細位置と今回の検出領域の中心位置とに基づいて今回の詳細位置を算出している。なお、他の実施形態においては、詳細位置は、前回の検出領域の中心位置と今回の検出領域の中心位置とに基づいて算出されてもよい。図６は、他の実施形態における詳細座標の算出方法を示す図である。図６においては、検出領域Ａ２を示す検出座標が取得された場合に算出される詳細位置は、前回の検出領域Ａ１の中心位置（点Ｐ１）と今回の検出領域Ａ２の中心位置（点Ｐ２）との線分上の位置（点Ｐ２１）（より具体的には検出領域Ａ２に内接する位置）となる。同様に、検出領域Ａ３を示す検出座標が取得された場合、点Ｐ２と点Ｐ３とを結ぶ線分上で検出領域Ａ３に内接する点Ｐ２２の位置が詳細位置となり、検出領域Ａ４を示す検出座標が取得された場合、点Ｐ３と点Ｐ４とを結ぶ線分上で検出領域Ａ４に内接する点Ｐ２３の位置が詳細位置となり、検出領域Ａ５を示す検出座標が取得された場合、点Ｐ４と点Ｐ５とを結ぶ線分上で検出領域Ａ５に内接する点Ｐ２４の位置が詳細位置となる。以上のように、他の実施形態においては、詳細位置は、前回の検出領域の中心位置と今回の検出領域の中心位置とを結ぶ線分上の位置として算出されてもよい。図６に示されるように、点Ｐ１〜点Ｐ２４の各詳細位置を結ぶ軌跡Ｔ３は、各検出座標の位置を結ぶ軌跡Ｔ１（図３）に比べて滑らかになっており、図６に示す方法によっても上記実施形態と同様の効果を奏することがわかる。
【００８７】
また、ゲーム装置１は、上記線分上であって、今回の検出領域内の位置を詳細位置とすることが好ましい（図４および図６参照）。詳細位置が今回の検出領域内の位置であれば、ユーザが現在タッチしている領域と、入力として算出される詳細位置とが一致しているので、ユーザに違和感を与えずに、かつ、正確に詳細位置を算出することができるからである。さらに、詳細位置は、上記線分上であって、今回の検出領域に内接する位置が好ましい。詳細位置が前回の検出領域に近い位置であるほど、詳細位置を結ぶ軌跡がより滑らかになるからである。
【００８８】
また、他の実施形態においては、詳細位置は、今回の検出領域に内接する位置の他、前回の検出領域と今回の検出領域との境界付近の位置として算出されてもよい。すなわち、詳細位置は、上記線分上であって、今回の検出領域の周と上記線分との交点から所定距離以内の位置として算出されてもよい。図７は、他の実施形態における詳細座標の算出方法を示す図である。図７においては、領域Ａ１１は前回の検出領域であり、点Ｐ３１は前回に算出された詳細位置を表す。また、領域Ａ１２は今回の検出領域であり、点Ｐ３２は今回の検出領域Ａ１２の中心位置を表す。点Ｑは、点Ｐ３１と点Ｐ３２とを結ぶ線分と、今回の検出領域Ａ１２の周との交点である。ここで、詳細位置は、図７に示すように、上記交点Ｑから所定距離Ｌ以内の位置、すなわち、点Ｐ３３と点Ｐ３４とを結ぶ線分上の位置として算出されてもよい。図７に示すように、前回の検出領域と今回の検出領域との境界付近の位置を詳細位置とする場合であっても、詳細位置を結ぶ軌跡は、各検出座標の位置を結ぶ軌跡Ｔ１より滑らかになり、本実施形態と同様の効果を得ることができる。
【００８９】
また、図７に示す算出方法においては、今回の検出領域の周から所定距離以内の位置としたが、今回の検出領域の中心から所定距離以内の位置としてもよい。また、所定距離以内の位置は、具体例には、例えば所定距離の位置である。
【００９０】
なお、詳細位置が、前回に算出された詳細位置（点Ｐ３１）に近い場合には、今回に算出される詳細位置が今回の検出領域から離れてしまう。この場合、ユーザが実際に入力を行っている領域と、算出される詳細位置との間のずれが大きくなるので、詳細位置を正確に算出することができなくなる。また、この場合、今回に算出される詳細位置が前回の検出領域内に含まれることになるので、別の見方をすれば、今回に算出される詳細位置は前回の検出領域に対応しているとみなすこともでき、詳細位置が検出領域に対して１回の処理分だけ遅れることになると言うこともできる。一方、詳細位置が、今回の検出領域の中心位置（点Ｐ３２）に近い場合には、詳細位置を結ぶ軌跡は、各検出座標の位置を結ぶ軌跡Ｔ１に近くなり、ゲーム装置１は滑らかな軌跡を得ることができなくなる。以上のように、詳細位置は、前回に算出された詳細位置に近すぎても、今回の検出領域の中心位置に近すぎても、問題がある。そのため、詳細位置は、本実施形態あるいは図７に示すように、境界付近の位置として算出されることが好ましい。
【００９１】
［ゲーム処理の詳細］
以下、図８〜図１０を参照して、本実施形態に係るゲームプログラムによって実行されるゲーム処理の詳細について説明する。まず、ゲーム処理において用いられる各種データについて説明する。図８は、ゲーム装置１のメインメモリ３２に記憶されるデータを示す図である。図８において、メインメモリ３２には、本実施形態に係るゲームプログラム５１およびゲーム処理用データ５２が記憶される。
【００９２】
ゲームプログラム５１は、後述するゲーム処理（図９）をゲーム装置１のＣＰＵ３１に実行させるためのプログラムである。ゲームプログラム５１は、メモリカード２９から適宜のタイミングで読み込まれることによってメインメモリ３２に記憶されてもよいし、ゲーム装置１の外部との通信によって取得されることによってメインメモリ３２に記憶されてもよい。
【００９３】
ゲーム処理用データ５２は、後述するゲーム処理（図９）において用いられるデータである。ゲーム処理用データ５２は、検出座標データ５３、前回検出座標データ５４、中心座標データ５５、詳細座標データ５６、および、前回詳細座標データ５７を含む。なお、ゲーム処理用データ５２は、７６に示すデータの他、ゲームに登場する各種オブジェクトおよびアイコンの画像データや、各種オブジェクトに設定されるパラメータを示すデータ等、ゲーム処理に必要なデータを含む。
【００９４】
検出座標データ５３は、上記検出座標を示すデータである。具体的には、検出座標データ５３は、上記タッチ位置データとしてタッチパネル１３から取得されるデータである。検出座標データ５３は、ユーザがタッチパネル１３に対して入力を行った場合には、上記検出領域の座標を示す。一方、ユーザがタッチパネル１３に対して入力を行っていない場合には、検出座標データ５３は、入力が行われなかったことを示す。
【００９５】
前回検出座標データ５４は、前回にタッチパネル１３から取得された検出座標データである。すなわち、タッチパネル１３から検出座標データが取得された場合、それまでの検出座標データ５３は、前回検出座標データ５４としてメインメモリ３２に記憶される。前回検出座標データ５４は、詳細座標を算出する処理等において用いられる。
【００９６】
中心座標データ５５は、上記検出領域の中心位置の座標（中心座標）を示すデータである。詳細は後述するが、本実施形態では、タッチパネル１３から出力される検出座標は単位領域の中心位置を示していないため、ＣＰＵ３１は検出座標から中心座標を算出する。
【００９７】
詳細座標データ５６は、上述の詳細座標を示すデータである。本実施形態では、検出座標は、ｘ成分およびｙ成分の各成分が整数値で表現されるのに対して、詳細座標は、各成分が小数第１位までの数値で表現される。
【００９８】
前回詳細座標データ５７は、前回に算出された詳細座標データである。すなわち、新たに詳細座標データが算出された場合、それまでの詳細座標データ５６は、前回詳細座標データ５７としてメインメモリ３２に記憶される。前回詳細座標データ５７は、検出領域が前回と今回とで同じ場合に、今回の詳細座標を算出するために用いられる。
【００９９】
次に、ゲーム装置１において行われるゲーム処理の詳細を、図９および図１０を用いて説明する。図９は、ゲーム装置１において実行されるゲーム処理の流れを示すメインフローチャートである。電源ボタン１４Ｆが押下されることによってゲーム装置１の電源が投入されると、ゲーム装置１のＣＰＵ３１は、メインメモリ３２等の初期化を行った後、図９に示すゲーム処理を行うためのゲームプログラム５１の実行を開始する。本実施形態においては、ゲームプログラム５１の実行によって、ＣＰＵ３１が請求項に記載の各手段として機能することとなる。つまり、ゲームプログラム５１は、請求項に記載の各手段としてＣＰＵ３１を機能させる。
【０１００】
まずステップＳ１において、ＣＰＵ３１は初期処理を行う。例えば、ＣＰＵ３１は、仮想のゲーム空間を構築し、ゲーム空間に登場する各オブジェクトを初期位置に配置する。さらに、ＣＰＵ３１は、ゲーム処理に用いられる各種パラメータや各種フラグについて初期値を設定する。なお、ゲーム処理用データ５２に含まれる上述の各データ５３〜５７については、メインメモリ３２には初期値は設定されず、データが記憶されない。上記ステップＳ１の次にステップＳ２の処理が実行される。以下、ステップＳ２〜Ｓ６の処理ループは、所定時間（例えば１／６０秒）に１回の割合で実行される。
【０１０１】
ステップＳ２において、ＣＰＵ３１は、タッチパネル１３に対する入力があったか否かを判定する。具体的には、ＣＰＵ３１は、タッチパネル１３からタッチ位置データを取得し、タッチ位置データが、検出座標を示すものであるか、タッチパネル１３に対する入力がないことを示すものであるかを判定する。ステップＳ２の判定結果が肯定である場合、ステップＳ３の処理が実行される。一方、ステップＳ２の判定結果が否定である場合、ステップＳ３およびＳ４の処理がスキップされ、後述するステップＳ５の処理が実行される。なお、ステップＳ２の判定結果が否定である場合、ＣＰＵ３１はメインメモリ３２に記憶されている前回検出座標データ５４を削除しておく。
【０１０２】
ステップＳ３において、ＣＰＵ３１は検出座標を取得する。具体的には、ＣＰＵ３１は、ステップＳ２でタッチパネル１３から取得したタッチ位置データを検出座標データ５３としてメインメモリ３２に記憶する。また、ステップＳ３の前にメインメモリ３２に記憶されていた検出座標データ５３は、前回検出座標データ５４としてメインメモリ３２に記憶される。ステップＳ３の次にステップＳ４の処理が実行される。
【０１０３】
ステップＳ４において、ＣＰＵ３１は、詳細座標算出処理を実行する。詳細座標算出処理は、検出座標から詳細座標を算出するための処理である。以下、図１０を参照して、詳細座標算出処理の詳細について説明する。
【０１０４】
図１０は、図９に示す詳細座標算出処理（ステップＳ４）の流れを示すフローチャートである。詳細座標算出処理においては、まずステップＳ１１において、ＣＰＵ３１は、ステップＳ３で取得された検出座標が表す検出領域の中心位置を示す中心座標を算出する。ここで、本実施形態では、詳細座標は、格子状に配置される各単位領域の周（境界）の位置が整数で表されるような数値で表現される。そのため、中心位置は、（ｍ＋０．５，ｎ＋０．５）として表されることになる。したがって、検出領域の中心位置は、検出座標を用いて次のように算出することができる。すなわち、ＣＰＵ３１は、メインメモリ３２から検出座標データ５３を読み出す。そして、ＣＰＵ３１は、検出座標データ５３が示す検出座標（ＩＸ，ＩＹ）を用いて、以下の式（１）に従って中心座標（ＮＸ，ＮＹ）を算出する。
ＮＸ＝｛ＩＸ＋（ＩＸ＋１）｝／２
ＮＹ＝｛ＩＹ＋（ＩＹ＋１）｝／２  …（１）
上式（１）は、検出座標のｘ成分およびｙ成分にそれぞれ０．５を加算した結果を中心座標とすることを表している。上式（１）を用いて算出された中心座標を示すデータは、中心座標データ５５としてメインメモリ３２に記憶される。上記ステップＳ１１の次にステップＳ１２の処理が実行される。
【０１０５】
上記ステップＳ１１の処理によれば、（ｍ，ｎ）の検出座標で表される検出領域は、詳細座標の座標系において“ｍ≦ｘ＜ｍ＋１，ｎ≦ｙ＜ｎ＋１”の領域に対応することになる。このとき、任意の１つの単位領域内において、詳細座標によって表現可能な各位置は、それぞれ整数部分が共通となる。つまり、整数部分が同じである詳細座標は、同じ単位領域内に含まれる。したがって、詳細座標の小数部分を切り捨てることによって、元の検出座標を容易に算出することができる。このように、本実施形態においては、ゲーム装置１は、詳細座標から元の検出座標を容易に算出することができるようにするために、上式（１）を用いて中心座標を算出している。したがって、本実施形態によれば、ゲーム処理において詳細座標を入力として用いる場合と、検出座標を入力として用いる場合との両方に容易に対応することができる。なお、上記ステップＳ１１の処理は本発明において必須の処理ではなく、例えば、ＣＰＵ３１はステップＳ１１の処理を実行せず、（ｍ，ｎ）で示される検出座標が表す検出領域の中心位置を、検出座標をそのまま用いて（ｍ，ｎ）としてもよい。このとき、単位領域は、“ｍ−０．５≦ｘ＜ｍ＋０．５，ｎ−０．５≦ｙ＜ｎ＋０．５”で表されることとなる。なお、この場合、詳細座標から元の検出座標を算出する場合には、詳細座標の小数第１位を四捨五入すればよい。
【０１０６】
また、詳細座標が表現可能な数値の精度によっては、詳細座標では単位領域の中心位置を表現できない場合がある。例えば、本実施形態において仮に詳細座標が“ｎ＋０．２ｘ（ｎ，ｘは整数）”の数値しか表現することができないとすれば、単位領域の中心位置（ｎ＋０．５）を表現することができない。この場合、上記ステップＳ１１においては、ＣＰＵ３１は、単位領域の中心に相当する位置（例えば、“ｎ＋０．４”あるいは“ｎ＋０．６”）を算出するようにすればよい。
【０１０７】
ステップＳ１２において、ＣＰＵ３１は、タッチパネル１３に対する入力が開始された時点であるか否かを判定する。ステップＳ１２の判定は、メインメモリ３２に前回検出座標データ５４が記憶されているか否かによって行われる。ステップＳ１２の処理は、ステップＳ２で取得された検出座標が表す今回の検出領域が、入力軌跡の始点であるか否かを判定するための処理である。ステップＳ１２の判定結果が肯定である場合、ステップＳ１３の処理が実行される。一方、ステップＳ１２の判定結果が否定である場合、後述するステップＳ１４の処理が実行される。
【０１０８】
ステップＳ１３において、ＣＰＵ３１は、今回の検出領域の中心座標を詳細座標とする。すなわち、ステップＳ１１で算出された中心座標と同じ値が詳細座標とされる。具体的には、ＣＰＵ３１は、中心座標データ５５の内容を詳細座標データ５６としてメインメモリ３２に記憶する。上記ステップＳ１１の後は、後述するステップＳ１６の処理が実行される。
【０１０９】
上記ステップＳ１３のように、本実施形態では、タッチ入力が開始された時点においては、検出領域の中心座標が詳細座標として算出される。つまり、タッチ入力の開始時点における詳細位置は、検出領域の中心位置となる（図４の点Ｐ１等参照）。
【０１１０】
一方、ステップＳ１４において、ＣＰＵ３１は、今回の検出領域が前回の検出領域と同じであるか否かを判定する。具体的には、ＣＰＵ３１は、検出座標データ５３および前回検出座標データ５４をメインメモリ３２から読み出し、検出座標データ５３が示す検出座標と前回検出座標データ５４が示す検出座標とが等しいか否かを判定する。ステップＳ１４の判定結果が肯定である場合、後述するステップＳ１７の処理が実行される。一方、ステップＳ１４の判定結果が否定である場合、ステップＳ１５の処理が実行される。
【０１１１】
ここで、ユーザがタッチパネル１３に対して入力を行う際には、入力を正確に行う等の理由から、入力面にタッチしながらタッチ位置を移動させない場合も考えられる。後述するステップＳ１５の計算処理は、今回の検出領域と前回の検出領域とが異なることを前提としており、ユーザが入力面にタッチしながらタッチ位置を移動させない場合のように、両者が同じになる場合には計算を実行することができない。ステップＳ１４の処理は、上記の場合に処理が正しく実行されなくなることを防止するための処理である。
【０１１２】
ステップＳ１５において、ＣＰＵ３１は、前回の詳細座標と今回の中心座標とに基づいて詳細座標を算出する。詳細座標は、前回の詳細座標と今回の中心座標とを結ぶ線分上で、今回の検出領域に内接する位置を表すように算出される。以下、詳細座標の算出方法について詳細に説明する。
【０１１３】
まず、前回の詳細座標（ＯＸ，ＯＹ）と今回の中心座標（ＮＸ，ＮＹ）とを結ぶ線分（直線）の式は、次の式（２）として表される。
ｙ−ＯＹ＝｛（ＯＹ−ＮＹ）／（ＯＸ−ＮＸ）｝（ｘ−ＯＸ）  …（２）
算出すべき詳細座標は、上記直線上の位置で、今回の検出領域に内接する位置となる。ここで、詳細座標は離散的な数値であるので、「検出領域に内接する位置」とは、検出領域内の位置であって、詳細座標によって表現可能な位置のうちでｘ成分またはｙ成分の座標値が（詳細座標として表現可能な値のうちで）最大または最小となる位置である。具体的には、“ｍ≦ｘ＜ｍ＋１，ｎ≦ｙ＜ｎ＋１”で表される検出領域に内接する位置とは、以下の４通りの位置である。
（ａ）ｘ成分が“ｍ”である位置（検出領域の左側の周で内接）
（ｂ）ｘ成分が“ｍ＋０．９”である位置（検出領域の右側の周で内接）
（ｃ）ｙ成分が“ｎ”である位置（検出領域の上側の周で内接）
（ｄ）ｙ成分が“ｎ＋０．９”である位置（検出領域の下側の周で内接）
したがって、詳細座標が今回の検出領域のいずれの側の周で内接するかを特定すれば、詳細座標のｘ成分またはｙ成分のいずれかを算出することができる。さらに、詳細座標のｘ成分またはｙ成分のいずれか一方がわかれば、他方の成分は、上式（２）を用いて算出することができる。なお、本実施形態では詳細座標は小数第１位までの数値で表現されるので、上記（ｂ）および（ｄ）においては、“ｍ＋０．９”、“ｎ＋０．９”としているが、例えば詳細座標が小数第２位までの数値で表現される場合、（ｂ）および（ｄ）においては、“ｍ＋０．９９”、“ｎ＋０．９９”とすればよい。
【０１１４】
また、詳細座標が今回の検出領域のいずれの側の周で内接するかは、上式（２）で表される直線と今回の検出領域との位置関係から知ることができる。すなわち、今回の検出領域の周（４辺）のうち、上式（２）で表される直線と交わる周が、詳細座標が内接する周である。
【０１１５】
以上より、詳細座標を算出する際、ＣＰＵ３１は、まず、詳細座標が今回の検出領域のいずれの側の周で内接するかを特定し、次に、内接する周の側に応じて上記（ａ）〜（ｄ）に従って詳細座標のいずれか一方の成分を算出し、他方の成分の値を上式（２）を用いて算出する。具体的には、ＣＰＵ３１は、まず、中心座標データ５５および前回詳細座標データ５７を読み出し、上式（２）を算出する。そして、式（２）で表される直線が、今回の検出領域のいずれの側の周で交わるかを特定する。次に、ＣＰＵ３１は、検出座標データ５３を読み出し、今回の検出座標（ＩＸ，ＩＹ）と、前回の詳細座標（ＯＸ，ＯＹ）と、中心座標（ＮＸ，ＮＹ）とを用いて、詳細座標（ＦＸ，ＦＹ）を算出する。具体的には、詳細座標は、上式（２）で表される直線が今回の検出領域のいずれの側の周で交わるかに応じて、以下の式（３）〜（６）のいずれかを用いて算出される。
・式（２）の直線と検出領域の左側の周とが交わる場合
ＦＸ＝ＩＸ
ＦＹ＝｛（ＯＹ−ＮＹ）／（ＯＸ−ＮＸ）｝（ＩＸ−ＯＸ）＋ＯＹ  …（３）
・式（２）の直線と検出領域の右側の周とが交わる場合
ＦＸ＝ＩＸ＋０．９
ＦＹ＝｛（ＯＹ−ＮＹ）／（ＯＸ−ＮＸ）｝（ＩＸ＋０．９−ＯＸ）＋ＯＹ  …（４）
・式（２）の直線と検出領域の上側の周とが交わる場合
ＦＸ＝｛（ＯＸ−ＮＸ）／（ＯＹ−ＮＹ）｝（ＩＹ−ＯＹ）＋ＯＸ
ＦＹ＝ＩＹ                                                    …（５）
・式（２）の直線と検出領域の下側の周とが交わる場合
ＦＸ＝｛（ＯＸ−ＮＸ）／（ＯＹ−ＮＹ）｝（ＩＹ＋０．９−ＯＹ）＋ＯＸ
ＦＹ＝ＩＹ＋０．９                                                    …（６）
上式（３）〜（６）を用いて算出された詳細座標を示すデータは、詳細座標データ５６としてメインメモリ３２に記憶される。ステップＳ１５の次にステップＳ１６の処理が実行される。
【０１１６】
ステップＳ１６において、ＣＰＵ３１は、前回の詳細座標を更新する。すなわち、メインメモリ３２に記憶されている詳細座標データ５６の内容を、前回詳細座標データ５７としてメインメモリ３２に記憶する。ステップＳ１６の終了後、ＣＰＵ３１は詳細座標算出処理を終了する。
【０１１７】
一方、ステップＳ１７において、ＣＰＵ３１は、前回の詳細座標と同じ座標を今回の詳細座標とする。具体的には、ＣＰＵ３１は、メインメモリ３２に記憶されている前回詳細座標データ５７の内容を、詳細座標データ５６としてメインメモリ３２に記憶する。これによって、今回算出すべき詳細座標として、前回の詳細座標と同じ値が算出されたこととなる。ステップＳ１７の終了後、ＣＰＵ３１は詳細座標算出処理を終了する。
【０１１８】
上記の詳細座標算出処理によれば、タッチパネル１３から検出座標が取得された場合、前回の詳細座標と今回の検出領域の中心座標とを結ぶ線分上で、今回の検出領域に内接する位置が、詳細座標として算出される（ステップＳ１５）。つまり、タッチパネル１３の検出精度（検出座標）よりも詳細な精度でユーザの入力位置を算出することができる。また、上記の詳細座標算出処理によれば、入力軌跡の始点が入力される場合（ステップＳ１２でＹｅｓとなる場合）には、検出領域の中心座標が詳細座標となる（ステップＳ１３）。そのため、入力軌跡の始点に関しては、詳細座標が中心位置からいずれかの方向にずれるわけではないので、タッチペン２７等が実際に接触する位置との誤差を少なくすることができる。
【０１１９】
また、上記の詳細座標算出処理によれば、前回の検出領域と今回の検出領域とが同じである場合（ステップＳ１４でＹｅｓとなる場合）には、前回の詳細座標と同じ座標が詳細座標となる（ステップＳ１７）。ここで、上記ステップＳ１５の処理は、前回の検出領域と今回の検出領域とが同じになると、詳細座標を算出することができない。しかし、上記詳細座標算出処理では、ステップＳ１７の処理により、容易かつ確実に詳細座標を算出することができる。
【０１２０】
ステップＳ５において、ＣＰＵ３１は、詳細座標を用いたゲーム処理を実行する。ゲーム処理は、詳細座標をユーザ入力として用いる処理であればどのような処理であってもよい。ゲーム処理は、例えば、ユーザがタッチパネル１３上でタッチした位置に応じて、ゲーム空間内のオブジェクトを変形させる処理であってもよいし、ユーザがタッチパネル１３上に描いた軌跡の形状を特定し、ゲーム空間に登場するプレイヤキャラクタに当該形状に応じた動作を行わせる処理であってもよい。本実施形態では、ゲーム装置１は、タッチパネル１３の検出精度よりも詳細に入力位置を認識することができるので、ユーザが入力した軌跡をより高精度で算出することができ、軌跡の形状についてもより正確に認識することができる。ステップＳ５の次にステップＳ６の処理が実行される。
【０１２１】
ステップＳ６において、ＣＰＵ３１は、ゲームを終了するか否かを判定する。ステップＳ６の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ６の判定結果が否定である場合、ステップＳ２の処理が再度実行される。以降、ステップＳ６でゲームを終了すると判定されるまで、ステップＳ２〜Ｓ６の処理ループが繰り返し実行される。一方、ステップＳ６の判定結果が肯定である場合、ＣＰＵ３１は、図９に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【０１２２】
以上のように、本実施形態によれば、ゲーム装置１は、検出座標よりも詳細な位置を表現可能な詳細座標を算出することによって、タッチパネル１３の検出精度よりも詳細に入力位置を認識することができる。さらに、本実施形態によれば、ゲーム装置１は、前回の詳細座標と今回の検出領域の中心座標とを結ぶ線分上であって、今回の検出領域に内接する位置を詳細位置として算出する。算出される複数の詳細位置によって、ゲーム装置１は、ユーザが実際に入力した位置により近いと考えられる位置を得ることができる。つまり、ゲーム装置１は、入力面に対して行われた入力の位置をより詳細にかつ正確に算出することができる。
【０１２３】
［他の実施形態］
なお、上記実施形態は本発明を実施する一例であり、例えば、他の実施形態として次のような構成で本発明を実施することも可能である。
【０１２４】
上記実施形態においては、指示面（入力面）に対して入力された位置を検出するポインティングデバイスの一例として、ゲーム装置１がタッチパネル１３を備える場合を例として説明した。ここで、他の実施形態においては、ゲーム装置１は、マウスやタッチパッド等の入力装置をポインティングデバイスとして用いてもよい。また、本発明は、遠隔から画面上の位置を指示する入力システムにおいても適用可能である。この入力システムは、例えば、ユーザが手に持って使用するコントローラ（入力装置）が指し示す表示画面（指示面）上の位置を、コントローラが備えるカメラが撮像した画像に基づいて、および／または、コントローラが備える加速度センサが検出した加速度等に基づいて算出するものである。
【０１２５】
また、上記実施形態においては、タッチパネル１３は、検知結果として１つの座標を示す（１つの単位領域を示す）データを出力するものとして説明した。ここで、他の実施形態においては、タッチパネル１３は、入力面における複数箇所に対して同時に入力が行われた場合には複数の座標を検知結果として出力する、マルチタッチ式のタッチパネルであってもよい。タッチパネル１３がマルチタッチ式である場合、ゲーム装置１は、出力された複数の検出座標のうちで所定の条件を満たす１つを選出して、選出した検出座標を用いて上記実施形態と同様の処理を実行するようにしてもよい。あるいは、ゲーム装置１は、出力された複数の検出座標のそれぞれについて、上記実施形態と同様の処理を実行するようにしてもよい。
【０１２６】
また、上記実施形態においては、本発明をゲーム用途に適用する場合を例として説明したが、本発明は、ゲーム用途以外でも利用可能である。例えば、他の実施形態においては、情報処理装置が、指示面上に描かれた文字を認識する処理や、指示面上に描かれた軌跡を画面上に表示する処理を実行する場合に本発明を適用することも可能である。
【産業上の利用可能性】
【０１２７】
以上のように、本発明は、ポインティングデバイスを用いて入力を行う場合において、指示面に対して入力された位置をより詳細に認識すること等を目的として、例えばゲーム装置やゲームプログラム等の情報処理システムに利用することができる。
【符号の説明】
【０１２８】
１          ゲーム装置
１３        タッチパネル
２７        タッチペン
３２        メインメモリ
５１        ゲームプログラム
５３        検出座標データ
５５        中心座標データ
５６        詳細座標データ
５７        前回詳細座標データ
【図１】
0005437726.tif 000002
【図２】
0005437726.tif 000003
【図３】
0005437726.tif 000004
【図４】
0005437726.tif 000005
【図５】
0005437726.tif 000006
【図６】
0005437726.tif 000007
【図７】
0005437726.tif 000008
【図８】
0005437726.tif 000009
【図９】
0005437726.tif 000010
【図１０】
0005437726.tif 000011