(57)【要約】【課題】加速度センサから出力されるデータに応じて、プレイヤの動作を迅速にゲームに反映させる処理を実行する加速度データ処理プログラムおよびゲームプログラムを提供する。【解決手段】データ取得手段は、加速度データを所定周期で取得する。変化量算出手段は、データ取得手段が取得した加速度データを用いて、加速度の変化量を示す変化量ベクトルを算出する。累積ベクトル算出手段は、変化量算出手段が算出した変化量ベクトルを順次累積した累積ベクトルを算出する。方向認識手段は、累積ベクトル算出手段が算出した累積ベクトルが所定の条件を満たすとき、当該累積ベクトルの示す方向を入力装置の振り方向として認識する。【選択図】図１４
2008173345.tif 000002
【特許請求の範囲】
【請求項１】
入力装置に加わる少なくとも１軸方向の加速度を検出可能な加速度センサから出力される加速度データを用いて、所定の処理を実行する装置のコンピュータに実行させる加速度データ処理プログラムであって、
前記コンピュータを、
前記加速度データを所定周期で取得するデータ取得手段と、
前記データ取得手段が取得した加速度データを用いて、加速度の変化量を示す変化量ベクトルを算出する変化量算出手段と、
前記変化量算出手段が算出した変化量ベクトルを順次累積した累積ベクトルを算出する累積ベクトル算出手段と、
前記累積ベクトル算出手段が算出した累積ベクトルが所定の条件を満たすとき、当該累積ベクトルの示す方向を前記入力装置の振り方向として認識する方向認識手段として機能させる、加速度データ処理プログラム。
【請求項２】
前記加速度センサは、前記入力装置に加わる少なくとも２軸方向の加速度の検出が可能であり、
前記データ取得手段は、前記加速度センサが前記軸成分ごとに出力する加速度データを取得し、
前記変化量算出手段は、前記加速度データが示す前記軸成分ごとの加速度を用いて、当該軸成分ごとの加速度の変化量を前記変化量ベクトルで算出し、
前記方向認識手段は、各軸成分ごとの累積ベクトルの合成ベクトルの示す方向を前記入力装置の振り方向として認識する、請求項１に記載の加速度データ処理プログラム。
【請求項３】
前記累積ベクトル算出手段は、前記累積ベクトルに前記変化量ベクトルを加算する前または後に逐次前記累積ベクトルを減衰させる減衰処理手段を含む、請求項１または２に記載の加速度データ処理プログラム。
【請求項４】
前記データ取得手段が取得した加速度データを用いて、前記入力装置に作用する重力加速度の方向を算出する重力方向算出手段として、さらに前記コンピュータを機能させ、
前記方向認識手段は、前記重力方向算出手段が算出した重力加速度の方向および前記累積ベクトルが示す方向に基づいて、前記重力加速度に対する前記入力装置の振り方向を認識する、請求項１に記載の加速度データ処理プログラム。
【請求項５】
前記方向認識手段は、前記累積ベクトル算出手段が算出した累積ベクトルの大きさが所定の閾値を越えたとき、当該累積ベクトルが示す方向が前記入力装置の振り方向であると認識する、請求項１に記載の加速度データ処理プログラム。
【請求項６】
前記累積ベクトル算出手段が算出した前記累積ベクトルの大きさが前記閾値より大きくなったとき、当該累積ベクトルの大きさを新たな前記閾値として設定する閾値設定手段として、さらに前記コンピュータを機能させる、請求項５に記載の加速度データ処理プログラム。
【請求項７】
前記閾値設定手段は、前記累積ベクトルが算出される毎に前記閾値を所定量低下させる、請求項６に記載の加速度データ処理プログラム。
【請求項８】
前記閾値設定手段は、前記閾値とは別に予め固定値をさらに設定し、
前記方向認識手段は、前記累積ベクトル算出手段が算出した累積ベクトルの大きさが前記閾値および前記固定値の何れよりも大きいとき、当該累積ベクトルが示す方向が前記入力装置の振り方向であると認識する、請求項６に記載の加速度データ処理プログラム。
【請求項９】
前記方向認識手段が前記入力装置の振り方向を認識した後の経過時間を計測する経過時間計測手段と、
前記経過時間が所定時間に達したとき、前記方向認識手段が認識した前記入力装置の振り方向を用いて所定の情報処理を行う情報処理手段として、さらに前記コンピュータを機能させる、請求項１に記載の加速度データ処理プログラム。
【請求項１０】
前記加速度センサは、検出する加速度の大きさが所定の測定可能範囲内で検出可能であり、
前記変化量算出手段は、前記データ取得手段が取得した加速度データが示す加速度が前記測定可能範囲を超える値であるとき、前回算出された前記変化量ベクトルを所定量減じることによって新たな前記変化量ベクトルを算出する、請求項１に記載の加速度データ処理プログラム。
【請求項１１】
前記累積ベクトル算出手段は、前記変化量算出手段が算出した変化量ベクトルに所定の係数を乗じて順次累積することによって前記累積ベクトルを算出する、請求項１に記載の加速度データ処理プログラム。
【請求項１２】
前記加速度センサは、前記入力装置に加わる３軸方向の加速度の検出が可能であり、
前記方向認識手段は、前記３軸から選ばれた２軸を含む２次元平面上で前記入力装置の振り方向を認識し、
前記累積ベクトル算出手段は、前記データ取得手段が取得した加速度データが示す前記３軸のうち前記２軸とは異なる１軸方向に加わる加速度の大きさに応じて、前記係数の値を設定する、請求項１１に記載の加速度データ処理プログラム。
【請求項１３】
前記累積ベクトル算出手段は、前記１軸方向に加わる加速度の大きさが０のときに前記係数の値を１に設定し、前記１軸方向に加わる加速度の大きさが０より大きいときに当該大きさに応じて前記係数の値を漸減的に１より小さく設定する、請求項１２に記載の加速度データ処理プログラム。
【請求項１４】
請求項１に記載の加速度データ処理プログラムを含み、前記加速度データを用いて所定のゲーム処理を前記コンピュータに実行させるゲームプログラムであって、
前記方向認識手段が認識した前記入力装置の振り方向を用いて、前記ゲーム処理を実行するゲーム処理手段として、さらに前記コンピュータを機能させる、ゲームプログラム。
【請求項１５】
前記ゲーム処理手段は、
仮想ゲーム世界にゲームオブジェクトを設定するオブジェクト設定手段と、
前記方向認識手段が認識した前記入力装置の振り方向に応じて、前記ゲームオブジェクトを仮想ゲーム世界内で移動させるオブジェクト移動手段と、
仮想ゲーム世界内の前記ゲームオブジェクトを表示装置に表示する表示制御手段とを含む、請求項１４に記載のゲームプログラム。
【請求項１６】
前記ゲーム処理手段は、
仮想ゲーム世界にゲームオブジェクトを設定するオブジェクト設定手段と、
前記方向認識手段が認識した前記入力装置の振り方向に応じて、前記ゲームオブジェクトを仮想ゲーム世界内で振り動かすオブジェクト動作手段と、
仮想ゲーム世界内の前記ゲームオブジェクトを表示装置に表示する表示制御手段とを含む、請求項１４に記載のゲームプログラム。
【請求項１７】
前記ゲーム処理手段は、
前記方向認識手段が認識した前記入力装置の振り方向に応じて、発生する音を設定する発生音設定手段と、
前記発生音設定手段が設定した音を、スピーカから発生させる音声制御手段とを含む、請求項１４に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、加速度データ処理プログラムおよびゲームプログラムに関し、より特定的には、加速度センサから出力されるデータに応じて処理が実行される、加速度データ処理プログラムおよびゲームプログラムに関する。
【背景技術】
【０００２】
従来、加速度センサから出力されるデータを用いて算出されるプレイヤのパンチ動作に応じて、ボクシングゲームが実行されるゲーム装置が開示されている（例えば、特許文献１参照）。上記特許文献１に開示されたゲーム装置は、当該ゲーム装置のコントローラとして機能するグローブユニットに、前後（Ｙ軸）、左右（Ｘ軸）、および上下（Ｚ軸）方向の３軸の加速度をそれぞれ検出する加速度センサが設けられている。そして、上記ゲーム装置は、加速度センサから出力される出力波形を解析することによって、プレイヤが繰り出したパンチ種類を識別する。具体的には、ゲーム装置は、プレイヤのパンチの打ち始めから打ち終わりまでの期間を、Ｙ軸方向に対して検出された加速度データの出力波形から算出する。次に、ゲーム装置は、上記パンチの打ち始めから打ち終わりまでの期間に生じたＸ軸方向の加速度データおよびＺ軸方向の加速度データそれぞれの出力波形を用いて、例えば最大値と最小値、振幅、ピークの出現回数、積分値等のデータをそれぞれ抽出する。そして、ゲーム装置は、各抽出データとパンチ種類（ストレート、フック、およびアッパーパンチ）毎の各波形パターンとに基づいて、パンチの種類を判別する。その後、ゲーム装置は、パンチ種類を識別すると、当該パンチ種類に応じたゲーム処理を行う。
【特許文献１】特開２００２−１５３６７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１に開示されたゲーム装置では、プレイヤがパンチ動作を終えてから当該パンチの種類の判定が行われて当該種類に応じたゲーム処理を実行している。このため、パンチ動作に応じた表示が相手キャラクタに反映されており、プレイヤがパンチ動作をした後にワンテンポ遅れるという問題があった。特に、プレイヤの入力に対する応答速度が速いことが求められるアクションゲームや対戦ゲーム等においては、このような応答性の悪さはゲームの面白さを低下させる原因になっていた。
【０００４】
また、上記ゲーム装置によって、プレイヤの操作対象のキャラクタ自身がパンチを繰り出すような表示をさせるような場合には、プレイヤのパンチ動作が終了してからパンチの種類に応じたパンチ動作を表す画像を描画する必要があるので、ユーザの動作の反映にさらに時間がかかるという問題もあった。
【０００５】
それ故に、本発明の目的は、加速度センサから出力されるデータに応じて、プレイヤの動作を迅速にゲームに反映させる処理を実行する加速度データ処理プログラムおよびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
第１の発明は、入力装置（７）に加わる少なくとも１軸方向の加速度（ａｃｃｎ）を検出可能な加速度センサ（７０１）から出力される加速度データ（Ｄａ）を用いて、所定の処理を実行する装置（５）のコンピュータ（３０）に実行させる加速度データ処理プログラムである。加速度データ処理プログラムは、データ取得手段（ステップ４４を実行するＣＰＵ３０、以下、単にステップ番号のみ記載する）、変化量算出手段（Ｓ４６）、累積ベクトル算出手段（Ｓ４９）、および方向認識手段（Ｓ５４）として、コンピュータを機能させる。データ取得手段は、加速度データを所定周期で取得する。変化量算出手段は、データ取得手段が取得した加速度データを用いて、加速度の変化量を示す変化量ベクトル（ａｃｃｖ）を算出する。累積ベクトル算出手段は、変化量算出手段が算出した変化量ベクトルを順次累積した累積ベクトル（ｖｅｃｓ）を算出する。方向認識手段は、累積ベクトル算出手段が算出した累積ベクトルが所定の条件を満たすとき（Ｓ５２）、当該累積ベクトルの示す方向を入力装置の振り方向（ｎｒｍ）として認識する。
【０００８】
第２の発明は、上記第１の発明において、加速度センサは、入力装置に加わる少なくとも２軸方向の加速度の検出が可能である。データ取得手段は、加速度センサが軸成分ごとに出力する加速度データを取得する。変化量算出手段は、加速度データが示す軸成分ごとの加速度を用いて、当該軸成分ごとの加速度の変化量を変化量ベクトルで算出する。方向認識手段は、各軸成分ごとの累積ベクトルの合成ベクトルの示す方向を入力装置の振り方向として認識する。
【０００９】
第３の発明は、上記第１または第２の発明において、累積ベクトル算出手段は、減衰処理手段（Ｓ４８）を含む。減衰処理手段は、累積ベクトルに変化量ベクトルを加算する前または後に逐次累積ベクトルを減衰させる。
【００１０】
第４の発明は、上記第１の発明において、重力方向算出手段（Ｓ４５）として、さらにコンピュータを機能させる。重力方向算出手段は、データ取得手段が取得した加速度データを用いて、入力装置に作用する重力加速度の方向を算出する。方向認識手段は、重力方向算出手段が算出した重力加速度の方向および累積ベクトルが示す方向に基づいて、重力加速度に対する入力装置の振り方向を認識する。
【００１１】
第５の発明は、上記第１の発明において、方向認識手段は、累積ベクトル算出手段が算出した累積ベクトルの大きさ（ｓｐ）が所定の閾値（ｓｐｍａｘ）を越えたとき、当該累積ベクトルが示す方向が入力装置の振り方向であると認識する。
【００１２】
第６の発明は、上記第５の発明において、閾値設定手段（Ｓ５１、Ｓ５３）として、さらにコンピュータを機能させる。閾値設定手段は、累積ベクトル算出手段が算出した累積ベクトルの大きさが閾値より大きくなったとき、当該累積ベクトルの大きさを新たな閾値として設定する。
【００１３】
第７の発明は、上記第６の発明において、閾値設定手段（Ｓ５１）は、累積ベクトルが算出される毎に閾値を所定量低下させる。
【００１４】
第８の発明は、上記第６の発明において、閾値設定手段は、閾値とは別に予め固定値（１．９）をさらに設定する。方向認識手段は、累積ベクトル算出手段が算出した累積ベクトルの大きさが閾値および固定値の何れよりも大きいとき、当該累積ベクトルが示す方向が入力装置の振り方向であると認識する。
【００１５】
第９の発明は、上記第１の発明において、経過時間計測手段（Ｓ４３、Ｓ５５）および情報処理手段（Ｓ５６）として、さらにコンピュータを機能させる。経過時間計測手段は、方向認識手段が入力装置の振り方向を認識した後の経過時間（ｃ）を計測する。情報処理手段は、経過時間が所定時間に達したとき、方向認識手段が認識した入力装置の振り方向を用いて所定の情報処理を行う。
【００１６】
第１０の発明は、上記第１の発明において、加速度センサは、検出する加速度の大きさが所定の測定可能範囲内で検出可能である。変化量算出手段は、データ取得手段が取得した加速度データが示す加速度が測定可能範囲を超える値であるとき（Ｓ８１、Ｓ８５、Ｓ８９）、前回算出された変化量ベクトルを所定量減じることによって新たな変化量ベクトルを算出する（Ｓ８３、Ｓ８７、Ｓ９１）。
【００１７】
第１１の発明は、上記第１の発明において、累積ベクトル算出手段は、変化量算出手段が算出した変化量ベクトルに所定の係数（ｋ）を乗じて順次累積することによって累積ベクトルを算出する（Ｓ１０３）。
【００１８】
第１２の発明は、上記第１１の発明において、加速度センサは、入力装置に加わる３軸（ＸＹＺ）方向の加速度の検出が可能である。方向認識手段は、３軸から選ばれた２軸（ＸＹ）を含む２次元平面上で入力装置の振り方向を認識する。累積ベクトル算出手段は、データ取得手段が取得した加速度データが示す３軸のうち２軸とは異なる１軸（Ｚ）方向に加わる加速度の大きさに応じて、係数の値を設定する（Ｓ１０１）。
【００１９】
第１３の発明は、上記第１２の発明において、累積ベクトル算出手段は、１軸方向に加わる加速度の大きさが０のときに係数の値を１に設定し、１軸方向に加わる加速度の大きさが０より大きいときに当該大きさに応じて係数の値を漸減的に１より小さく設定する。
【００２０】
第１４の発明は、上記第１の発明の加速度データ処理プログラムを含み、加速度データを用いて所定のゲーム処理をコンピュータに実行させるゲームプログラムである。ゲームプログラムは、ゲーム処理手段（Ｓ５６）として、さらにコンピュータを機能させる。ゲーム処理手段は、方向認識手段が認識した入力装置の振り方向を用いて、ゲーム処理を実行する。
【００２１】
第１５の発明は、上記第１４の発明において、ゲーム処理手段は、オブジェクト設定手段、オブジェクト移動手段、および表示制御手段を含む。オブジェクト設定手段は、仮想ゲーム世界にゲームオブジェクト（ＯＢＪ、Ｗ）を設定する。オブジェクト移動手段は、方向認識手段が認識した入力装置の振り方向に応じて、ゲームオブジェクトを仮想ゲーム世界内で移動させる。表示制御手段は、仮想ゲーム世界内のゲームオブジェクトを表示装置（２）に表示する（図１０Ａ、図１９Ｂ、図１１）。
【００２２】
第１６の発明は、上記第１４の発明において、ゲーム処理手段は、オブジェクト設定手段、オブジェクト動作手段、および表示制御手段を含む。オブジェクト設定手段は、仮想ゲーム世界にゲームオブジェクトを設定する。オブジェクト動作手段は、方向認識手段が認識した入力装置の振り方向に応じて、ゲームオブジェクトを仮想ゲーム世界内で振り動かす。表示制御手段は、仮想ゲーム世界内のゲームオブジェクトを表示装置に表示する（図９）。
【００２３】
第１７の発明は、上記第１４の発明において、ゲーム処理手段は、発生音設定手段および音声制御手段を含む。発生音設定手段は、方向認識手段が認識した入力装置の振り方向に応じて、発生する音を設定する。音声制御手段は、発生音設定手段が設定した音を、スピーカ（２ａ、７０６）から発生させる（図１２）。
【発明の効果】
【００２４】
上記第１の発明によれば、加速度センサを搭載した入力装置において、検出された加速度の変化量を累積して得られる累積ベクトルを用いることによって、入力装置の振り方向を認識する応答性を向上させることができる。
【００２５】
上記第２の発明によれば、少なくとも２軸方向の加速度の検出が可能な加速度センサを搭載した入力装置において、検出された加速度の変化量を累積して得られる累積ベクトルを用いることによって、入力装置の振り方向を２次元または３次元方向で認識することができる。
【００２６】
上記第３の発明によれば、加速度センサが検出する加速度の変化量が同じような傾向であるときの振り方向の認識を行うことができる。例えば、入力装置に直線状の動きを与えたとき、加速度センサが検出する加速度自体も直線方向に変化するため、その加速度変化量（変化方向）も同じような傾向が続く。つまり、入力装置を直線状に振る動作を行ったとき、加速度センサから取得した加速度の変化量を累積し、その累積値に応じて入力装置の直線状の振り方向を認識することができる。
【００２７】
上記第４の発明によれば、入力装置に作用する重力方向を基準とした入力装置の振り方向を認識することができる。
【００２８】
上記第５の発明によれば、累積ベクトルの大きさが所定の閾値より大きいときに、入力装置の振り方向を認識するため、振り方向の誤認識を防止することができる。
【００２９】
上記第６の発明によれば、累積ベクトルの大きさの最大値が閾値として設定されるため、振り方向の認識が頻繁に起こることを防止することができる。
【００３０】
上記第７の発明によれば、閾値が減衰するため、次の振り方向の認識を可能にすることができる。
【００３１】
上記第８の発明によれば、重力加速度等の振り動作以外で生じる加速度の影響を除くことができ、振り方向の誤認識を防止することができる。
【００３２】
上記第９の発明によれば、振り方向を認識した後の経過時間を当該振り方向の信頼度として用いることでき、より確実な振り方向を取得したいときは、経過時間が所定時間に達したときに算出されている振り方向を用いて情報処理を行うことが可能である。
【００３３】
上記第１０の発明によれば、加速度センサの計測可能範囲を逸脱するような加速度が生じた場合でも、当該加速度を予測することによって振り方向の認識が可能となる。
【００３４】
上記第１１の発明によれば、求めたい方向に沿った振り方向を優先的に認識することができる。
【００３５】
上記第１２の発明によれば、入力装置の振り方向を認識する方向を２次元平面上に限定することができる。
【００３６】
上記第１３の発明によれば、入力装置の振り方向を認識する２次元平面に垂直な方向に作用する加速度が小さいほど、当該２次元平面に沿った方向の加速度を振り方向認識に優先的に採用することができる。
【００３７】
上記第１４の発明によれば、認識された入力装置の振り方向をゲーム処理に用いることができる。
【００３８】
上記第１５の発明によれば、認識された入力装置の振り方向に応じて、仮想ゲーム世界における物を移動させることができる。
【００３９】
上記第１６の発明によれば、認識された入力装置の振り方向に応じて、仮想ゲーム世界における例えば剣を振るような動作が可能となる。
【００４０】
上記第１７の発明によれば、認識された入力装置の振り方向に応じた音が発生するスピーカから発生するゲームが可能となる。
【発明を実施するための最良の形態】
【００４１】
図１を参照して、本発明の一実施形態に係る加速度データ処理プログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００４２】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明の加速度データ処理プログラムの一例のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００４３】
また、ゲーム装置本体５は、通信ユニット６を内蔵する。通信ユニット６は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置本体５の前部主面には、当該ゲーム装置本体５の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトスイッチ等が設けられている。
【００４４】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ３８が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置本体５は、フラッシュメモリ３８に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００４５】
コントローラ７は、通信ユニット６を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、主にモニタ２の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の通信ユニット６から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００４６】
図２において、ゲーム装置本体５は、各種プログラムを実行する例えばＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５などが接続される。また、メモリコントローラ３１には、所定のバスを介して、通信ユニット６、ビデオＩ／Ｆ（インターフェース）３７、フラッシュメモリ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれのインターフェースにモニタ２、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【００４７】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【００４８】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等が、ＣＰＵ３０によって実行される。
【００４９】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００５０】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。上述したように通信ユニット６は、コントローラ７からの送信データを受信し、当該送信データをＣＰＵ３０へ出力する。また、通信ユニット６は、ＣＰＵ３０から出力された送信データをコントローラ７の通信部７５へ送信する。ビデオＩ／Ｆ３７には、モニタ２が接続される。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置本体５のバスやオーディオＩ／Ｆ３９に出力する。
【００５１】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００５２】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００５３】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００５４】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００５５】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５６】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５７】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から通信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００５８】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００５９】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００６０】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７０の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００６１】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図３では表されていない側面）方向をＸ軸正方向とする。
【００６２】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００６３】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。また、無線モジュール７５３（図７参照）およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置本体５等が判定することができる。
【００６４】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００６５】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体５から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００６６】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００６７】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００６８】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００６９】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、少なくとも１軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて、加速度センサ７０１が提供されてもよい。
【００７０】
加速度センサ７０１に用いられるような加速度検出手段は、加速度センサ７０１の持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、それら３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００７１】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ３０）またはコントローラのプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００７２】
例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１によって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラ７の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコントローラ７が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ７が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ７がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１からの出力に基づいて、おおよそのコントローラ７の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢、または位置を判定することができる。
【００７３】
一方、加速度センサ７０１が動的な状態であることを前提とする場合には、当該加速度センサ７０１が重力加速度成分に加えて加速度センサ７０１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ７の動き方向等を知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１が動的な状態であることを前提とする場合であっても、加速度センサ７０１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ７の傾きを知ることが可能である。
【００７４】
他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００７５】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００７６】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を通信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から通信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、通信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置本体５の通信ユニット６でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体５のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００７７】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、本ゲーム装置本体５で行うゲームの概要について説明する。図８に示すように、コントローラ７は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤが片手でコントローラ７を把持し、コントローラ７を振り動かす動作を行う。例えば、図８においては、プレイヤがコントローラ７を把持して、上下または左右に振り動かしている様子を示している。このようなプレイヤがコントローラ７を振り動かす動作において、ゲーム装置本体５がコントローラ７の振り方向や当該振り方向を判定した後の経過時間等を解析し、当該振り方向および経過時間を利用してゲーム処理が行われる。
【００７８】
例えば、プレイヤが静的にコントローラ７を傾けることによって、コントローラ７の静的な姿勢に応じた操作情報（具体的には、Ｘ、Ｙ、およびＺ軸方向加速度データ）をゲーム装置本体５に与える。また、プレイヤがコントローラ７を上下や左右に振り動かす動作では、コントローラ７からその振り方向への加速度や遠心力等に応じた動的な操作情報をゲーム装置本体５に与える。このようなコントローラ７に加わる加速度の変化は、加速度センサ７０１によって検出できるため、加速度センサ７０１から出力されるＸ、Ｙ、およびＺ軸方向加速度データに対して追加の処理を行うことによって、コントローラ７の静的な姿勢や動的な振り方向を算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ７０１から出力される加速度ベクトル（あるいは、加速度の正負）は、コントローラ７の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ７の傾きや動きを算出することが必要であることは言うまでもない。
【００７９】
図９〜図１２は、上記振り方向に応じて行われるゲーム処理や情報処理の一例を示す図である。ゲーム処理の一例として、モニタ２に表示されるオブジェクトを上記振り方向に応じて動かす処理（モニタ２に表示された仮想ゲーム空間における剣を振り動かす、仮想ゲーム空間に配置された物体を切断する、仮想ゲーム空間に配置された物を動かす等）や上記振り方向に応じてモニタ２に設けられたスピーカ２ａやコントローラ７に設けられた７０６から音を発生させたりする。また、ゲーム処理とは異なった情報処理の一例として、上記振り方向に応じてディスプレイに表示されたブラウザのジェスチャー（ウインドウを移動させる、ウインドウを閉じる、ページをめくる等）を行う。
【００８０】
例えば、図９においては、モニタ２に仮想ゲーム空間に配置された剣オブジェクトＯＢＪが表示されている。そして、剣オブジェクトＯＢＪは、コントローラ７が振り動かされることに応じて、仮想ゲーム空間内においてコントローラ７の振り方向に相当する方向に振り動かされる。
【００８１】
また、図１０Ａにおいては、モニタ２に仮想ゲーム空間に配置された丸太オブジェクトＯＢＪが表示されている。そして、図１０Ｂに示すように丸太オブジェクトＯＢＪは、コントローラ７が振り動かされることに応じて、仮想ゲーム空間内におけるコントローラ７の振り方向に相当する方向に切断され、丸太オブジェクトＯＢＪ１およびＯＢＪ２に分離して移動する。このとき、モニタ２には、振り方向に応じて切断する被切断体として丸太オブジェクトＯＢＪ１およびＯＢＪ２が表示されるが、当該被切断体を切断するオブジェクト（例えば、剣、刀、斧等の刃物オブジェクト）は、モニタ２に表示されなくてもかまわない。例えば、図１０Ｂの破線矢印で示すような被切断体を切断するオブジェクトの軌跡のみを表示してもいいし、被切断体の動き変化のみを表示してもかまわない。
【００８２】
また、図１１においては、モニタ２にブラウザ等で用いられるウインドウＷが表示されている。そして、ウインドウＷは、コントローラ７が振り動かされることに応じて、表示画面内においてコントローラ７の振り方向に相当する方向に移動する。
【００８３】
さらに、図１２においては、コントローラ７が振り動かされることに応じて、モニタ２のスピーカ２ａから音が発生する。スピーカ２ａからは、コントローラ７の振り方向に応じて異なった音が発生する。
【００８４】
ここで、後述により明らかとなるが、上記振り方向を判定した後の経過時間は、当該振り方向を認識した信頼度として用いることができる。例えば、反応性を重視したいアプリケーションでは、上記経過時間が更新された直後（つまり、経過時間が０でなくなった瞬間等）に、判定された振り方向を用いてゲーム処理や情報処理等を行うことが可能である。また、より確実な振り方向を取得したいアプリケーションでは、経過時間がある時間以上経過することを待った後、判定された振り方向を用いてゲーム処理や情報処理等を行うことが可能である。
【００８５】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。まず、図１３を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１３は、ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図である。
【００８６】
図１３に示すように、メインメモリ３３には、最新加速度データＤａ、最終加速度データＤｂ、加速度変化量データＤｃ、スピードベクトルデータＤｄ、スピードベクトル大きさデータＤｅ、最大スピードデータＤｆ、振り方向データＤｇ、認識経過時間データＤｈ、姿勢データＤｉ、および画像データＤｊ等が記憶される。なお、メインメモリ３３には、図１３に示す情報に含まれるデータの他、ゲームに登場するオブジェクトＯＢＪや他のオブジェクト等に関するデータ（位置データ等）や仮想ゲーム空間に関するデータ（背景のデータ等）等、ゲーム処理に必要なデータが記憶される。
【００８７】
最新加速度データＤａは、コントローラ７に生じた最新加速度ａｃｃｎを示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる最新の加速度データが記憶される。この最新加速度データＤａには、加速度センサ７０１がＸ軸成分に対して検出した加速度ａｃｃｎＸを示すＸ軸方向加速度データＤａ１、Ｙ軸成分に対して検出した加速度ａｃｃｎＹを示すＹ軸方向加速度データＤａ２、およびＺ軸成分に対して検出した加速度ａｃｃｎＺを示すＺ軸方向加速度データＤａ３が含まれる。なお、ゲーム装置本体５に備える通信ユニット６は、コントローラ７から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれる加速度データを受信し、通信ユニット６に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新の加速度データがゲーム処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリ３３の最新加速度データＤａが更新される。
【００８８】
なお、後述する処理フローでは、最新加速度データＤａがゲーム処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ７からの送信周期毎に最新加速度データＤａを更新し、当該更新された加速度データをゲーム処理周期毎に利用する態様でもかまわない。この場合、最新加速度データＤａに記憶する加速度データＤａ１〜Ｄａ３を更新する周期と、ゲーム処理周期とが異なることになる。
【００８９】
最終加速度データＤｂは、加速度変化量ａｃｃｖを算出するために用いた最新加速度ａｃｃｎを最終加速度ａｃｃｌとして格納したデータである。つまり、最終加速度データＤｂには、最新加速度データＤａと同様に、Ｘ軸成分に対する最終加速度ａｃｃｌＸを示すＸ軸方向加速度データＤｂ１、Ｙ軸成分に対する最終加速度ａｃｃｌＹを示すＹ軸方向加速度データＤｂ２、およびＺ軸成分に対する最終加速度ａｃｃｌＺを示すＺ軸方向加速度データＤｂ３が含まれる。
【００９０】
加速度変化量データＤｃは、最新加速度ａｃｃｎと最終加速度ａｃｃｌとの間の変化量を示す加速度変化量ａｃｃｖを示すデータである。そして、加速度変化量データＤｃには、Ｘ軸成分に対する加速度変化量ａｃｃｖＸを示すＸ軸方向加速度変化量データＤｃ１、Ｙ軸成分に対する加速度変化量ａｃｃｖＹを示すＹ軸方向加速度変化量データＤｃ２、およびＺ軸成分に対する加速度変化量ａｃｃｖＺを示すＺ軸方向加速度変化量データＤｃ３が含まれる。つまり、加速度変化量ａｃｃｖは、各軸毎に加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺを含んでおり、最新加速度ａｃｃｎと最終加速度ａｃｃｌとの間の変化量を示す変化量ベクトルとして用いることができる。
【００９１】
スピードベクトルデータＤｄは、加速度変化量ａｃｃｖを累積するなどして算出されるコントローラ７の架空のスピードについて、その大きさおよび方向をベクトル（スピードベクトルｖｅｃｓ）で示すデータである。そして、スピードベクトルデータＤｄには、スピードベクトルｖｅｃｓのＸ軸成分ｖｅｃｓＸを示すＸ軸方向成分データＤｄ１、Ｙ軸成分ｖｅｃｓＹを示すＹ軸方向成分データＤｄ２、およびＺ軸成分ｖｅｃｓＺを示すＺ軸方向成分データＤｄ３が含まれる。
【００９２】
スピードベクトル大きさデータＤｅは、スピードベクトルｖｅｃｓの大きさｓｐを示すデータである。最大スピードデータＤｆは、一連の処理において大きさｓｐの最大値（最大スピードｓｐｍａｘ）を示すデータがである。
【００９３】
振り方向データＤｇは、コントローラ７が振り動かされている振り方向ｎｒｍを示すデータであり、例えば振り方向ｎｒｍを３次元ベクトルで示すデータである。認識経過時間データＤｈは、振り方向ｎｒｍが算出された後の認識経過時間ｃを示すデータである。姿勢データＤｉは、静的な状態におけるコントローラ７の姿勢を示すデータであり、例えばコントローラ７に対して作用する重力加速度の方向を３次元ベクトルで示すデータである。
【００９４】
画像データＤｊは、オブジェクト画像データ等を含んでいる。オブジェクト画像データは、仮想ゲーム空間にオブジェクトを配置してゲーム画像を生成するためのデータである。
【００９５】
次に、図１４〜図１６を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１４は、ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャートである。図１５は、図１４におけるステップ４５のコントローラの姿勢算出処理の詳細な動作を示すサブルーチンである。図１６は、図１４におけるステップ４６の加速度変化量を算出する処理の詳細な動作を示すサブルーチンである。なお、図１４〜図１６に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ７を振ることに応じて、その振り方向を認識する処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１４〜図１６では、ＣＰＵ３０が実行する各ステップを「Ｓ」と略称する。
【００９６】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。図１４〜図１６に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【００９７】
図１４において、ＣＰＵ３０は、ゲーム処理の初期化を行い（ステップ４１）、次のステップに処理を進める。例えば、上記ステップ４１におけるゲーム処理初期化では、仮想ゲーム空間において剣を振り動かしたり物を動かしたりするゲーム処理のとき、仮想ゲーム空間の設定やゲームオブジェクトの配置等の初期設定を行う。
【００９８】
次に、ＣＰＵ３０は、認識処理の初期化を行い（ステップ４２）、次のステップに処理を進める。上記ステップ４２における認識処理の初期化処理では、コントローラ７の振り方向を算出するための各パラメータを初期化する。例えば、ＣＰＵ３０は、最終加速度データＤｂに格納される最終加速度ａｃｃｌＸ、ａｃｃｌＹ、およびａｃｃｌＺをそれぞれ０に設定する。ＣＰＵ３０は、加速度変化量データＤｃに格納される加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺをそれぞれ０に設定する。ＣＰＵ３０は、スピードベクトルデータＤｄに格納される各成分ｖｅｃｓＸ、ｖｅｃｓＹ、およびｖｅｃｓＺをそれぞれ０に設定する。ＣＰＵ３０は、最大スピードデータＤｆに格納される最大スピードｓｐｍａｘを０に設定する。ＣＰＵ３０は、振り方向データＤｇおよび姿勢データＤｉに格納される振り方向ｎｒｍおよびコントローラ７の静的な姿勢を、それぞれ所定方向に向いた長さ１の３次元ベクトルに設定する。そして、ＣＰＵ３０は、認識経過時間データＤｈに格納される認識経過時間ｃを０に設定する。
【００９９】
次に、ＣＰＵ３０は、認識経過時間ｃのカウントを行い（ステップ４３）、次のステップに処理を進める。例えば、ＣＰＵ３０は、認識経過時間データＤｈに格納されている認識経過時間ｃに１を加算して、認識経過時間ｃを更新する。
【０１００】
次に、ＣＰＵ３０は、最新加速度ａｃｃｎを取得して（ステップ４４）、次のステップに処理を進める。例えば、ＣＰＵ３０は、コントローラ７から受信した最新の操作情報に含まれる加速度データが示す加速度を最新加速度ａｃｃｎとして最新加速度データＤａに格納する。具体的には、コントローラ７から受信した最新の操作情報に含まれるＸ軸方向の加速度データが示す加速度が、最新加速度ａｃｃｎＸとしてＸ軸方向加速度データＤａ１に格納される。また、最新の操作情報に含まれるＹ軸方向の加速度データが示す加速度が、最新加速度ａｃｃｎＹとしてＹ軸方向加速度データＤａ２に格納される。そして、最新の操作情報に含まれるＺ軸方向の加速度データが示す加速度が、最新加速度ａｃｃｎＺとしてＺ軸方向加速度データＤａ３に格納される。
【０１０１】
次に、ＣＰＵ３０は、コントローラ７の姿勢を算出する処理を行って（ステップ４５）、処理を次のステップに進める。以下、図１５を参照して、上記ステップ４５で行うコントローラ７の姿勢算出処理について説明する。
【０１０２】
図１５において、ＣＰＵ３０は、最新加速度データＤａに格納された最新加速度ａｃｃｎを参照して、コントローラ７が静的な状態にあるか否かを判断する（ステップ６１）。一例として、ＣＰＵ３０は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺの何れかの値が、重力加速度に相当する値以上を示している場合、コントローラ７が静的な状態にないと判断する。他の例として、ＣＰＵ３０は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺのそれぞれの変化量が全て所定値未満である場合、コントローラ７が静的な状態にあると判断する。最新加速度ａｃｃｎを参照してコントローラ７の静的な状態にあることを判定する方法は他にも考えられるが、上記ステップ６１においては他の方法を用いてコントローラ７の状態を判定してもかまわない。そして、ＣＰＵ３０は、コントローラ７が静的な状態にある場合、次のステップ６２に処理を進める。一方、ＣＰＵ３０は、コントローラ７が静的な状態にない場合、当該サブルーチンによる処理を終了する。
【０１０３】
ステップ６２において、ＣＰＵ３０は、最新加速度ａｃｃｎを用いてコントローラ７の姿勢を算出し姿勢データＤｉに格納して、当該サブルーチンによる処理を終了する。コントローラ７が静的な状態で配置されている場合、コントローラ７には重力加速度が作用する。この重力加速度がコントローラ７に作用している方向は、最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺの値から算出することが可能である。ここで、コントローラ７に対して重力加速度が作用する方向は、実空間における鉛直方向であり、コントローラ７に定義されたＸＹＺ軸に対する鉛直方向を取得することが可能となる。例えば、ＣＰＵ３０は、コントローラ７に作用する重力加速度の方向を示す３次元ベクトルデータをコントローラ７の静的な姿勢として、姿勢データＤｉに格納する。
【０１０４】
図１４に戻り、ステップ４５のコントローラ７の姿勢算出処理の後、ＣＰＵ３０は、加速度変化量ａｃｃｖを算出する処理を行って（ステップ４６）、処理を次のステップに進める。以下、図１６を参照して、上記ステップ４６で行う加速度変化量算出処理について説明する。
【０１０５】
図１６において、ＣＰＵ３０は、最新加速度データＤａに含まれるＸ軸方向加速度データＤａ１に格納された最新加速度ａｃｃｎＸを参照して、最新加速度ａｃｃｎＸが加速度センサ７０１の測定限界に達しているか否かを判断する（ステップ８１）。一般的に、加速度センサ７０１は、加速度が測定可能な範囲が限られており、その限度を超えたときに当該範囲の上限値（下限値）を出力することがある。例えば、加速度の測定可能範囲が−４Ｇ〜＋４Ｇの加速度センサ７０１を用いた場合、コントローラ７に４Ｇ以上の加速度が作用しても−４Ｇまたは＋４Ｇを示す加速度データを出力する。上記ステップ８１においては、このような加速度の測定可能範囲を超える加速度が作用しているか否かの判定が行われる。例えば、ＣＰＵ３０は、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＸ≦−３．３９または最新加速度ａｃｃｎＸ≧＋３．３９である場合、最新加速度ａｃｃｎＸが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ３０は、最新加速度ａｃｃｎＸが測定限界に達していない場合、次のステップ８２に処理を進める。一方、ＣＰＵ３０は、最新加速度ａｃｃｎＸが測定限界に達している場合、次のステップ８３に処理を進める。
【０１０６】
ステップ８２において、ＣＰＵ３０は、Ｘ軸方向の加速度変化量ａｃｃｖＸを算出してＸ軸方向加速度変化量データＤｃ１を更新し、次のステップ８５に処理を進める。例えば、上記ステップ８２において、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＸおよび最終加速度ａｃｃｌＸを参照して、加速度変化量ａｃｃｖＸをａｃｃｎＸ−ａｃｃｌＸで算出する。
【０１０７】
一方、ステップ８３において、ＣＰＵ３０は、加速度変化量ａｃｃｖＸを予測によって算出する処理を行ってＸ軸方向加速度変化量データＤｃ１を更新し、次のステップに処理を進める。例えば、上記ステップ８３において、ＣＰＵ３０は、現在格納されている加速度変化量ａｃｃｖＸ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＸ）を参照し、当該加速度変化量ａｃｃｖＸに所定の減衰率を乗算して新たな加速度変化量ａｃｃｖＸを算出して、Ｘ軸方向加速度変化量データＤｃ１を更新する。ここで、上記加速度変化量ａｃｃｖＸに乗算する値は、加速度センサ７０１の測定範囲外の値を予測するための加速度変化量の減衰率であり、１未満の正の値（例えば０．６）である。
【０１０８】
次に、ＣＰＵ３０は、最新加速度ａｃｃｎＸをステップ８３で算出された加速度変化量ａｃｃｖＸに合わせて修正してＸ軸方向加速度データＤａ１を更新し（ステップ８４）、次のステップ８５に処理を進める。例えば、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＸを参照し、当該最新加速度ａｃｃｎＸにステップ８３で算出された加速度変化量ａｃｃｖＸを加算して新たな最新加速度ａｃｃｎＸを算出して、Ｘ軸方向加速度データＤａ１を更新する。
【０１０９】
ステップ８５において、ＣＰＵ３０は、最新加速度データＤａに含まれるＹ軸方向加速度データＤａ２に格納された最新加速度ａｃｃｎＹを参照して、最新加速度ａｃｃｎＹが加速度センサ７０１の測定限界に達しているか否かを判断する。例えば、ＣＰＵ３０は、上記ステップ８１と同様に、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＹ≦−３．３９または最新加速度ａｃｃｎＹ≧＋３．３９である場合、最新加速度ａｃｃｎＹが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ３０は、最新加速度ａｃｃｎＹが測定限界に達していない場合、次のステップ８６に処理を進める。一方、ＣＰＵ３０は、最新加速度ａｃｃｎＹが測定限界に達している場合、次のステップ８７に処理を進める。
【０１１０】
ステップ８６において、ＣＰＵ３０は、Ｙ軸方向の加速度変化量ａｃｃｖＹを算出してＹ軸方向加速度変化量データＤｃ２を更新し、次のステップ８９に処理を進める。例えば、上記ステップ８６において、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＹおよび最終加速度ａｃｃｌＹを参照して、加速度変化量ａｃｃｖＹをａｃｃｎＹ−ａｃｃｌＹで算出する。
【０１１１】
一方、ステップ８７において、ＣＰＵ３０は、加速度変化量ａｃｃｖＹを予測によって算出する処理を行ってＹ軸方向加速度変化量データＤｃ２を更新し、次のステップに処理を進める。例えば、上記ステップ８７において、ＣＰＵ３０は、現在格納されている加速度変化量ａｃｃｖＹ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＹ）を参照し、当該加速度変化量ａｃｃｖＹに上記減衰率を乗算して新たな加速度変化量ａｃｃｖＹを算出して、Ｙ軸方向加速度変化量データＤｃ２を更新する。
【０１１２】
次に、ＣＰＵ３０は、最新加速度ａｃｃｎＹをステップ８７で算出された加速度変化量ａｃｃｖＹに合わせて修正してＹ軸方向加速度データＤａ２を更新し（ステップ８８）、次のステップ８９に処理を進める。例えば、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＹを参照し、当該最新加速度ａｃｃｎＹにステップ８７で算出された加速度変化量ａｃｃｖＹを加算して新たな最新加速度ａｃｃｎＹを算出して、Ｙ軸方向加速度データＤａ２を更新する。
【０１１３】
ステップ８９において、ＣＰＵ３０は、最新加速度データＤａに含まれるＺ軸方向加速度データＤａ３に格納された最新加速度ａｃｃｎＺを参照して、最新加速度ａｃｃｎＺが加速度センサ７０１の測定限界に達しているか否かを判断する。例えば、ＣＰＵ３０は、上記ステップ８１と同様に、加速度の測定可能範囲の上下限値付近となる値を閾値（例えば、−３．３９Ｇおよび＋３．３９Ｇ）として、最新加速度ａｃｃｎＺ≦−３．３９または最新加速度ａｃｃｎＺ≧＋３．３９である場合、最新加速度ａｃｃｎＺが加速度センサ７０１の測定限界に達していると判断する。そして、ＣＰＵ３０は、最新加速度ａｃｃｎＺが測定限界に達していない場合、次のステップ９０に処理を進める。一方、ＣＰＵ３０は、最新加速度ａｃｃｎＺが測定限界に達している場合、次のステップ９１に処理を進める。
【０１１４】
ステップ９０において、ＣＰＵ３０は、Ｚ軸方向の加速度変化量ａｃｃｖＺを算出してＺ軸方向加速度変化量データＤｃ３を更新し、当該サブルーチンによる処理を終了する。例えば、上記ステップ９０において、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＺおよび最終加速度ａｃｃｌＺを参照して、加速度変化量ａｃｃｖＺをａｃｃｎＺ−ａｃｃｌＺで算出する。
【０１１５】
一方、ステップ９１において、ＣＰＵ３０は、加速度変化量ａｃｃｖＺを予測によって算出する処理を行ってＺ軸方向加速度変化量データＤｃ３を更新し、次のステップに処理を進める。例えば、上記ステップ９１において、ＣＰＵ３０は、現在格納されている加速度変化量ａｃｃｖＺ（すなわち、前回の処理で算出された加速度変化量ａｃｃｖＺ）を参照し、当該加速度変化量ａｃｃｖＺに上記減衰率を乗算して新たな加速度変化量ａｃｃｖＺを算出して、Ｚ軸方向加速度変化量データＤｃ３を更新する。
【０１１６】
次に、ＣＰＵ３０は、最新加速度ａｃｃｎＺをステップ８７で算出された加速度変化量ａｃｃｖＺに合わせて修正してＺ軸方向加速度データＤａ３を更新し（ステップ９２）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＺを参照し、当該最新加速度ａｃｃｎＺにステップ９１で算出された加速度変化量ａｃｃｖＺを加算して新たな最新加速度ａｃｃｎＺを算出して、Ｚ軸方向加速度データＤａ３を更新する。
【０１１７】
このようにステップ４６で算出される加速度変化量ａｃｃｖは、各軸毎に加速度変化量ａｃｃｖＸ、ａｃｃｖＹ、およびａｃｃｖＺとして算出しており、変化量ベクトルとして用いることができる。
【０１１８】
図１４に戻り、ステップ４６における加速度変化量ａｃｃｖを算出した後、ＣＰＵ３０は、最新加速度ａｃｃｎで最終加速度ａｃｃｌを更新して、最終加速度データＤｂに格納し（ステップ４７）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在最新加速度データＤａに格納されている最新加速度ａｃｃｎＸ、ａｃｃｎＹ、およびａｃｃｎＺを、それぞれ最終加速度ａｃｃｌＸ、ａｃｃｌＹ、およびａｃｃｌＺとして最終加速度データＤｂに格納する。
【０１１９】
次に、ＣＰＵ３０は、スピードベクトルｖｅｃｓを所定量減衰させて、スピードベクトルデータＤｄを更新し（ステップ４８）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在格納されているスピードベクトルｖｅｃｓのＸ軸成分ｖｅｃｓＸを参照し、当該Ｘ軸成分ｖｅｃｓＸに所定の減衰率（１未満の正の値であり、例えば０．９）を乗算して新たなＸ軸成分ｖｅｃｓＸを算出してＸ軸方向成分データＤｄ１を更新する。また、ＣＰＵ３０は、現在格納されているＹ軸成分ｖｅｃｓＹに上記減衰率を乗算して新たなＹ軸成分ｖｅｃｓＹを算出してＹ軸方向成分データＤｄ２を更新する。そして、ＣＰＵ３０は、現在格納されているＺ軸成分ｖｅｃｓＺに上記減衰率を乗算して新たなＺ軸成分ｖｅｃｓＺを算出してＺ軸方向成分データＤｄ３を更新する。
【０１２０】
なお、上記ステップ４８においては、スピードベクトルｖｅｃｓの各成分に所定の減衰率を乗算することによって、スピードベクトルｖｅｃｓを減衰しているが、他の方法でスピードベクトルｖｅｃｓを減衰させてもかまわない。例えば、スピードベクトルｖｅｃｓの各成分が０となる方向に一定量加算または減算することによって、スピードベクトルｖｅｃｓを減衰させてもかまわない。
【０１２１】
次に、ＣＰＵ３０は、スピードベクトルｖｅｃｓを加速度変化量ａｃｃｖで加減速して、スピードベクトルデータＤｄを更新し（ステップ４９）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在格納されているスピードベクトルｖｅｃｓのＸ軸成分ｖｅｃｓＸを参照し、当該Ｘ軸成分ｖｅｃｓＸに加速度変化量ａｃｃｖＸを加算して新たなＸ軸成分ｖｅｃｓＸを算出してＸ軸方向成分データＤｄ１を更新する。また、ＣＰＵ３０は、現在格納されているＹ軸成分ｖｅｃｓＹを参照し、当該Ｙ軸成分ｖｅｃｓＹに加速度変化量ａｃｃｖＹを加算して新たなＹ軸成分ｖｅｃｓＹを算出してＹ軸方向成分データＤｄ２を更新する。そして、ＣＰＵ３０は、現在格納されているＺ軸成分ｖｅｃｓＺを参照し、当該Ｚ軸成分ｖｅｃｓＺに加速度変化量ａｃｃｖＺを加算して新たなＺ軸成分ｖｅｃｓＺを算出してＺ軸方向成分データＤｄ３を更新する。なお、上記ステップ４８およびステップ４９を実行する順序を逆にしてもかまわない。
【０１２２】
次に、ＣＰＵ３０は、スピードベクトルｖｅｃｓの大きさｓｐを算出して、スピードベクトル大きさデータＤｅを更新し（ステップ５０）、処理を次のステップに進める。例えば、ＣＰＵ３０は、スピードベクトルデータＤｄを参照して、大きさｓｐを
【数１】
2008173345.tif 000003
で算出する。
【０１２３】
次に、ＣＰＵ３０は、最大スピードｓｐｍａｘを所定量減衰させて、最大スピードデータＤｆを更新し（ステップ５１）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在最大スピードデータＤｆに格納されている最大スピードｓｐｍａｘを参照し、当該最大スピードｓｐｍａｘに所定の減衰率（１未満の正の値であり、例えば０．９８）を乗算して新たな最大スピードｓｐｍａｘを算出して最大スピードデータＤｆを更新する。
【０１２４】
次に、ＣＰＵ３０は、振り方向を認識するための認識条件を満たしているか否かを判断する（ステップ５２）。例えば、ＣＰＵ３０は、上記ステップ５０で算出された大きさｓｐが上記ステップ５１で算出された最大スピードｓｐｍａｘより大きく、かつ、当該大きさｓｐが所定値以上である場合、認識条件を満たしていると判断する。ここで、上記所定値は、振り方向を認識するために最低限必要なスピードベクトルｖｅｃｓの大きさであり、例えば１．９に設定される。そして、ＣＰＵ３０は、認識条件を満たしている場合、次のステップ５３に処理を進める。一方、ＣＰＵ３０は、認識条件を満たしていない場合、処理を次のステップ５６に処理を進める。
【０１２５】
ステップ５３において、ＣＰＵ３０は、上記ステップ５０で算出された大きさｓｐを最大スピードｓｐｍａｘとして、最大スピードデータＤｆを更新する。そして、現在のスピードベクトルｖｅｃｓの向きを振り方向ｎｒｍとして、振り方向データＤｇを更新し（ステップ５４）、処理を次のステップに進める。例えば、ＣＰＵ３０は、現在スピードベクトルデータＤｄに格納されているスピードベクトルｖｅｃｓを、長さ１に正規化した３次元ベクトルを算出し、当該３次元ベクトルを振り方向ｎｒｍとして、振り方向データＤｇを更新する。
【０１２６】
次に、ＣＰＵ３０は、認識経過時間ｃを０に初期化して、認識経過時間データＤｈを更新し（ステップ５５）、次のステップ５６に処理を進める。つまり、認識経過時間ｃは、振り方向ｎｒｍが算出されると０に初期化され、上記ステップ４３でカウントが更新されるパラメータである。
【０１２７】
ステップ５６において、ＣＰＵ３０は、ゲームメイン処理を行い、処理を次のステップに進める。ＣＰＵ３０は、上記ステップ４１〜ステップ５５における処理で算出された振り方向ｎｒｍ、認識経過時間ｃ、および姿勢データＤｉに格納されているコントローラ７の静的な姿勢等を示すデータを、ゲームメイン処理に用いることが可能である。例えば、ゲームメイン処理において、仮想ゲーム空間におけるオブジェクトを振り方向ｎｒｍに応じて動かす処理（剣を振り動かす、物を動かす等）や、振り方向ｎｒｍに応じてスピーカ２ａやコントローラ７に設けられた７０６から音を発生させたりする。
【０１２８】
次に、ＣＰＵ３０は、ゲームを終了するか否かを判断する（ステップ５７）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ３０は、ゲームを終了しない場合に上記ステップ４３に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１２９】
ここで、上述した加速度データ処理における基本原理について説明する。上述した処理動作では、振り方向ｎｒｍを求めるためにスピードベクトルｖｅｃｓを用いている。このスピードベクトルｖｅｃｓは、常に減衰される架空の３次元ベクトルであり（ステップ４８参照）、加速度変化量ａｃｃｖを累積していくことによってその大きさが大きく（増速）なる（ステップ４９参照）。そして、スピードベクトルｖｅｃｓの大きさｓｐが所定値以上に到達したとき、そのスピードベクトルｖｅｃｓの方向を振り方向ｎｒｍとして認識する。つまり、スピードベクトルｖｅｃｓが常に減衰されるため、大きさｓｐを上記所定値以上にするためには同じ方向に生じる加速度を継続的に累積することが必要となる。この累積される値が加速度センサ７０１から出力される加速度データから得られるため、加速度センサ７０１が検出する加速度の変化量が同じような傾向で続いたときに、振り方向ｎｒｍの認識が行われることになる。このように加速度の変化量が同じような傾向が続くケースは、加速度センサ７０１（すなわち、コントローラ７）に直線状の動きを与えたときに発生しやすい。具体的には、加速度センサ７０１に直線状の動きを与えたとき、当該加速度センサ７０１が検出する加速度自体も直線方向に変化するため、その加速度変化量（変化方向）も同じような傾向が続くことになる。つまり、上述した処理動作では、プレイヤがコントローラ７を直線状に振る動作を行ったとき、その動作に応じた振り方向ｎｒｍを認識していることになる。このように、加速度センサ７０１から取得した各加速度の変化量を累積し、その累積値に応じてコントローラ７の直線状の振り方向を認識している。
【０１３０】
なお、プレイヤが所定方向に振ろうとした場合、無意識にその方向に対して強く振り始める。本願発明では、この振り始めに着目することにより、ここで説明する処理を行うことによって、この強い振り始めの加速を識別し、動作終了までの全ての加速度の推移を見ることなく所定方向の振り動作を検出している。
【０１３１】
なお、このような効果を期待しない場合、スピードベクトルｖｅｃｓを減衰しなくてもかまわない。この場合、同じ方向に生じる加速度を継続的に累積することが不要となるため、加速度センサ７０１が検出する加速度の変化量が異なった傾向に変化したときにおいても、振り方向ｎｒｍの認識が行われることになる。つまり、加速度センサ７０１に直線状以外の動きを与えてもその振り方向ｎｒｍが逐次算出されるため、コントローラ７の移動方向のような複雑な方向の認識が可能となる。
【０１３２】
また、上記ステップ４６の加速度変化量ａｃｃｖの算出においては、加速度センサ７０１の測定限界範囲を超えたときに、直前の加速度変化量ａｃｃｖを用いて新たに算出する加速度変化量ａｃｃｖの予測を行っている。この加速度変化量ａｃｃｖの予測方法は、単純に直前の加速度変化量ａｃｃｖに所定の減衰率を乗算して行われているため、即時性が高い。例えば、加速度センサ７０１から得られる加速度データを全てバッファリングしてからスプライン曲線等で補間する方法と比較すると、非常に即時性が高くバッファリングのメモリも不要となり計算処理負荷も軽くなる。
【０１３３】
さらに、上記ステップ５１およびステップ５２においては、常時所定量減衰する最大スピードｓｐｍａｘと新たに得られた大きさｓｐとの比較に基づいて、認識条件を設定している。例えば、振り方向ｎｒｍが算出された直後に最大スピードｓｐｍａｘを極端に小さな値に初期化すると、当該振り方向ｎｒｍの算出後に生じるコントローラ７の小さな動きを認識してしまい、誤認識する可能性が高くなる。例えば、コントローラ７を大きく振り動かした後にコントローラ７の移動を止める動作等を認識することになり、プレイヤがコントローラ７を振り動かした方向とは異なった手ぶれ等の不安定な動きを誤認識することも考えられる。一方、更新された最大スピードｓｐｍａｘをそのまま長時間維持すると、新たな振り方向ｎｒｍを算出するためには維持されている最大スピードｓｐｍａｘを超えるような大きさｓｐに達するスピードベクトルｖｅｃｓを得る必要がある。つまり、前回認識された振りスピード以上の速さでコントローラ７を振り動かすことが必要となり、やがて必要な認識動作が不可能となる。上記ステップ５１においては、最大スピードｓｐｍａｘに１未満の１に近い正の値（例えば、０．９８）を減衰率として乗算しているため、上述したように頻繁な認識が生じることなく次の認識動作も可能としており、安定した振り方向の認識を行うことができる。
【０１３４】
また、上記ステップ５６におけるゲームメイン処理においては、上述した加速度データ処理で得られたパラメータを様々な態様で利用することができる。第１の例として、振り方向ｎｒｍを用いれば、コントローラ７に定義された座標軸（図３および図４参照）において、プレイヤがどの方向にコントローラ７を振り動かしているのかが推定できる。例えば、振り方向ｎｒｍを用いれば、コントローラ７がその本体を基準としたどの方向に振り動かされているのか（例えば、コントローラ７の上面方向や正面方向など）が推定できる。このようなコントローラ７の本体を基準とした振り方向を、ゲームメイン処理に用いることができる。
【０１３５】
第２の例として、振り方向ｎｒｍおよび認識経過時間ｃを用いれば、算出された振り方向ｎｒｍの信頼度を考慮したゲームメイン処理が可能となる。上記処理動作より明らかなように、認識経過時間ｃは、新たな振り方向ｎｒｍが算出されたときに０に初期化されるパラメータである。つまり、認識経過時間ｃは、プレイヤがコントローラ７を振り動かす方向が変化する毎に初期化される。一般的に、プレイヤがコントローラ７を第１の方向に振る場合、当該第１の方向の逆方向へその振り動作直前にコントローラ７を動かす傾向がある（いわゆる、振りかぶり動作）。このような振りかぶり動作がコントローラ７に与えられたとき、まず振りかぶり動作中に逆方向の振り方向ｎｒｍが算出された後に、上記第１の方向を示す振り方向ｎｒｍが算出される。このような本来プレイヤが意図していない振りかぶり動作等を認識しないようにする場合は、振り方向ｎｒｍが算出された後にある程度の経過時間を待つことが好ましい。つまり、コントローラ７を振り動かした際の反応性を重視したいゲームでは、認識経過時間ｃが０でなくなった瞬間等に、算出された振り方向ｎｒｍを用いてゲームメイン処理を行うことが可能である。また、コントローラ７を振り動かした際により確実な振り方向ｎｒｍを取得したいゲームでは、認識経過時間ｃがあるカウント以上に達したときに算出されている振り方向ｎｒｍを用いてゲームメイン処理を行うことが可能である。
【０１３６】
第３の例として、振り方向ｎｒｍおよび姿勢データＤｉに格納されているコントローラ７の静的な姿勢を用いれば、プレイヤがコントローラ７を操作している実空間において、プレイヤが当該実空間のどの方向にコントローラ７を振り動かしているのかが推定できる。例えば、上述したように、振り方向ｎｒｍを用いれば、コントローラ７がその本体を基準としたどの方向に振り動かされているのかが推定できる。一方、姿勢データＤｉに格納されているコントローラ７の静的な姿勢は、プレイヤがコントローラ７を振り動かす前時点等において、コントローラ７に対して作用する重力加速度の方向を示しており、コントローラ７の本体に対する実空間の鉛直方向を示すデータとなる、したがって、振り方向ｎｒｍおよび姿勢データＤｉに格納されているコントローラ７の静的な姿勢を用いれば、コントローラ７が実空間においてどの方向に振り動かされているか（例えば、実空間における水平方向や上下方向等）を推定することができる。また、コントローラ７を操作する基本姿勢や方向（コントローラ７でモニタ２を指し示すようにその正面をモニタ２に向ける、コントローラ７を横持ちしてその側面をモニタ２に向ける等）を設定した場合、プレイヤがコントローラ７を上下方向、左右方向、前後方向等のどの方向に振り動かしているか推定することができる。さらに、認識経過時間ｃを用いれば、上述と同様に振り方向ｎｒｍの信頼度を考慮したゲームメイン処理が可能となることは言うまでもない。
【０１３７】
また、上述した加速度データ処理では、コントローラ７の振り方向ｎｒｍを３次元ベクトルで認識しているが、コントローラ７を振り動かした方向を２次元で取得することも可能である。以下、図１７を参照して、コントローラ７を振り動かした方向を２次元（例えば、ＸＹ平面）で取得するときの処理について説明する。なお、図１７は、コントローラ７を振り動かした方向を２次元で取得するときのスピードベクトルｖｅｃｓを加減速する処理を示すサブルーチンである。なお、コントローラ７を振り動かした方向を２次元で取得するときの動作は、３次元ベクトルで認識する動作と比較してステップ４９の動作のみ異なり、上述したステップ４９の動作が図１７で示すサブルーチンに基づいた動作に変更される。以下、３次元ベクトルで認識する動作と異なる動作のみ説明し、３次元ベクトルで認識する動作と同様の動作については詳細な説明を省略する。
【０１３８】
図１７において、ＣＰＵ３０は、係数ｋを算出し（ステップ１０１）、係数ｋが０より大きい値か否かを判断する（ステップ１０２）。ここで、係数ｋは、Ｚ軸方向の加速度変化量ａｃｃｖＺが０に近いほど１に近くなる数値であり、例えば、
ｋ＝１−ａｃｃｖＺ2
で算出される。そして、ＣＰＵ３０は、ｋ＞０の場合、次のステップ１０３に処理を進める。一方、ＣＰＵ３０は、ｋ≦０の場合、次のステップ１０４に処理を進める。
【０１３９】
ステップ１０３において、スピードベクトルｖｅｃｓのＸ軸成分ｖｅｃｓＸおよびＹ軸成分ｖｅｃｓＹに、係数ｋを乗算した加速度変化量ａｃｃｖＸおよびａｃｃｖＹをそれぞれ加算して、スピードベクトルデータＤｄを更新し、次のステップ１０４に処理を進める。例えば、ＣＰＵ３０は、現在格納されているスピードベクトルｖｅｃｓのＸ軸成分ｖｅｃｓＸを参照し、当該Ｘ軸成分ｖｅｃｓＸに係数ｋを乗算した加速度変化量ａｃｃｖＸを加算して新たなＸ軸成分ｖｅｃｓＸを算出してＸ軸方向成分データＤｄ１を更新する。また、ＣＰＵ３０は、現在格納されているＹ軸成分ｖｅｃｓＹを参照し、当該Ｙ軸成分ｖｅｃｓＹに係数ｋを乗算した加速度変化量ａｃｃｖＹを加算して新たなＹ軸成分ｖｅｃｓＹを算出してＹ軸方向成分データＤｄ２を更新する。
【０１４０】
ステップ１０４において、ＣＰＵ３０は、スピードベクトルｖｅｃｓのＺ軸成分ｖｅｃｓＺを０に設定して、スピードベクトルデータＤｄを更新し、当該サブルーチンによる処理を終了する。その後、図１４に示したステップ５０以降の処理が行われる。
【０１４１】
上記ステップ１０１〜ステップ１０４の処理によれば、スピードベクトルｖｅｃｓのＺ軸成分ｖｅｃｓＺが常に０に設定されるため、振り方向ｎｒｍもＸＹ平面上の２次元ベクトルとして認識される。また、上述した処理動作では、コントローラ７がＺ軸方向への動きが少ないときほどＸＹ平面に沿った加速度変化量の影響が大きくなるようなスピードベクトルｖｅｃｓの算出を行っており、求めたいＸＹ平面上に沿ったコントローラ７の動きを優先的に認識することができる。
【０１４２】
このように、上記実施形態に係るゲーム装置３は、加速度センサ７０１を搭載したコントローラ７において、検出された加速度の変化量を累積して得られるスピードベクトルを用いることによって、コントローラ７の振り方向を認識する応答性を向上させることができる。
【０１４３】
なお、２軸方向や１軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、Ｘ軸およびＹ軸方向（図３、図４参照）に対して生じる加速度を検出する加速度センサがコントローラ７に設けられている場合、上述した処理動作をＸおよびＹ成分のみを用いて行えば、ＸＹ平面に沿ったコントローラ７の振り方向を認識することが可能である。また、Ｙ軸成分のみ検出して出力する加速度センサを用いても、上述した処理動作をＹ成分のみを用いて行えば、Ｙ軸方向へのコントローラ７の振り動作を認識することが可能である。
【０１４４】
また、上述した説明では、コントローラ７を振り動かす動作を用いて操作するゲーム装置本体５をゲームシステム１に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトやウインドウの状態や位置を制御する等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。
【０１４５】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１４６】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【０１４７】
また、本発明の加速度データ処理プログラムやゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、加速度データ処理プログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、加速度データ処理プログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【０１４８】
本発明に係る加速度データ処理プログラムおよびゲームプログラムは、入力装置の振り方向を認識する応答性を向上させることができ、ゲームコントローラ等に与えられる動作に応じてゲーム処理や情報処理等を行うプログラムとして有用である。
【図面の簡単な説明】
【０１４９】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図４のコントローラ７の下筐体を外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図９】コントローラ７の振り方向に応じて行われるゲーム処理や情報処理の第１の例を示す図
【図１０Ａ】コントローラ７の振り方向に応じて行われるゲーム処理や情報処理の第２の例におけるオブジェクト切断前を示す図
【図１０Ｂ】コントローラ７の振り方向に応じて行われるゲーム処理や情報処理の第２の例におけるオブジェクト切断後を示す図
【図１１】コントローラ７の振り方向に応じて行われるゲーム処理や情報処理の第３の例を示す図
【図１２】コントローラ７の振り方向に応じて行われるゲーム処理や情報処理の第４の例を示す図
【図１３】ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図
【図１４】ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャート
【図１５】図１４におけるステップ４５のコントローラの姿勢算出処理の詳細な動作を示すサブルーチン
【図１６】図１４におけるステップ４６の加速度変化量を算出する処理の詳細な動作を示すサブルーチン
【図１７】コントローラ７を振り動かした方向を２次元で取得するときのスピードベクトルｖｅｃｓを加減速する処理を示すサブルーチン
【符号の説明】
【０１５０】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…フラッシュメモリ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…ゲーム装置本体
６…通信ユニット
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
【図１】
2008173345.tif 000004
【図２】
2008173345.tif 000005
【図３】
2008173345.tif 000006
【図４】
2008173345.tif 000007
【図５】
2008173345.tif 000008
【図６】
2008173345.tif 000009
【図７】
2008173345.tif 000010
【図８】
2008173345.tif 000011
【図９】
2008173345.tif 000012
【図１０Ａ】
2008173345.tif 000013
【図１０Ｂ】
2008173345.tif 000014
【図１１】
2008173345.tif 000015
【図１２】
2008173345.tif 000016
【図１３】
2008173345.tif 000017
【図１４】
2008173345.tif 000018
【図１５】
2008173345.tif 000019
【図１６】
2008173345.tif 000020
【図１７】
2008173345.tif 000021
【手続補正書】
【提出日】平成19年3月14日(2007.3.14)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
ここで、後述により明らかとなるが、上記振り方向を判定した後の経過時間は、当該振り方向を認識した信頼度として用いることができる。例えば、反応性を重視したいアプリケーションでは、上記経過時間が０に更新された直後（例えば、経過時間が０でなくなった瞬間等）に、判定された振り方向を用いてゲーム処理や情報処理等を行うことが可能である。また、より確実な振り方向を取得したいアプリケーションでは、経過時間がある時間以上経過することを待った後、判定された振り方向を用いてゲーム処理や情報処理等を行うことが可能である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
次に、ＣＰＵ３０は、最新加速度ａｃｃｎＺをステップ９１で算出された加速度変化量ａｃｃｖＺに合わせて修正してＺ軸方向加速度データＤａ３を更新し（ステップ９２）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ３０は、現在格納されている最新加速度ａｃｃｎＺを参照し、当該最新加速度ａｃｃｎＺにステップ９１で算出された加速度変化量ａｃｃｖＺを加算して新たな最新加速度ａｃｃｎＺを算出して、Ｚ軸方向加速度データＤａ３を更新する。