(57)【特許請求の範囲】
【請求項１】
ユーザによって荷重が加えられる、荷重センサを備えた第１入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータを、
前記第１入力装置からの信号に基づいて、前記第１入力装置に加えられた荷重の時間変化に関する荷重情報を取得する荷重情報取得手段、
前記第１入力装置からの信号に基づいて、前記ユーザの重心位置を検出する重心位置検出手段、
前記重心位置の移動速度を示す重心速度を算出する重心速度算出手段、
前記荷重情報と前記重心速度に関する重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する動作判定手段、として機能させる情報処理プログラム。
【請求項２】
前記第１入力装置からの信号に基づいて、所定期間における前記第１入力装置に加えられた荷重を示す荷重値データを記憶する記憶手段として前記コンピュータをさらに機能させ、
前記荷重情報取得手段は、前記記憶手段に記憶された荷重値データに基づいて、前記荷重情報を取得する、請求項１に記載の情報処理プログラム。
【請求項３】
前記荷重情報取得手段は、前記荷重情報として、前記第１入力装置に加えられた荷重が第１の条件を満たすタイミングを取得し、
前記動作判定手段は、前記第１入力装置に加えられた荷重が前記第１の条件を満たすタイミングと前記重心速度が第２の条件を満たすタイミングとに基づいて、前記ユーザの所定の動作を判定する、請求項１または２に記載の情報処理プログラム。
【請求項４】
前記荷重情報取得手段は、前記第１入力装置に加えられた荷重が最大となるタイミングを取得し、
前記動作判定手段は、前記荷重が最大となるタイミングと前記重心速度が最大となるタイミングとに基づいて、前記ユーザの所定の動作を判定する、請求項３に記載の情報処理プログラム。
【請求項５】
前記動作判定手段は、前記荷重が最大となるタイミングと前記重心速度が最大となるタイミングとの差に基づいて、前記ユーザの所定の動作を判定する、請求項４に記載の情報処理プログラム。
【請求項６】
前記荷重情報取得手段は、前記荷重情報として、前記第１入力装置に加えられた荷重の所定期間における変化量を示す荷重速度を取得し、
前記動作判定手段は、前記重心速度と前記荷重速度とに基づいて、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項７】
前記荷重情報取得手段は、前記荷重情報として、前記第１入力装置に加えられた荷重の所定期間における変化量を示す荷重速度を取得し、
前記動作判定手段は、予め定められた荷重速度及び重心速度の関係と、前記荷重情報取得手段によって取得された荷重速度及び前記重心速度算出手段によって算出された重心速度の関係と、を比較することにより、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項８】
前記動作判定手段は、前記荷重速度を第１軸とし前記重心速度を第２軸とする座標系において、前記予め定められた荷重速度及び重心速度の関係を示す直線又は曲線から、前記荷重情報取得手段によって取得された荷重速度及び前記重心速度算出手段によって算出された重心速度を示す前記座標系における点までの距離に基づいて、前記ユーザの所定の動作を判定する、請求項７に記載の情報処理プログラム。
【請求項９】
前記動作判定手段は、前記荷重速度を第１軸とし前記重心速度を第２軸とする座標系において、前記ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線から、前記荷重情報取得手段によって取得された荷重速度及び前記重心速度算出手段によって算出された重心速度を示す前記座標系における点までの距離に基づいて、前記ユーザの所定の動作を判定する、請求項８に記載の情報処理プログラム。
【請求項１０】
前記直線の傾きが略２である、請求項９に記載の情報処理プログラム。
【請求項１１】
前記直線の切片が略０．０７である、請求項１０に記載の情報処理プログラム。
【請求項１２】
前記直線の傾きは１．７〜２．３程度である、請求項９に記載の情報処理プログラム。
【請求項１３】
前記直線の切片は０．０５８〜０．０８３程度である、請求項１２に記載の情報処理プログラム。
【請求項１４】
前記直線の切片は、前記直線の傾きが増加するにしたがって減少する、請求項１３に記載の情報処理プログラム。
【請求項１５】
前記荷重情報取得手段は、前記荷重情報として、前記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと、前記第１入力装置に加えられた荷重の所定時間における変化量を示す荷重速度とを取得し、
前記情報処理プログラムは、前記コンピュータを、
前記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと前記重心速度が第２の条件を満たすタイミングとに基づいて、第１の評価を行う第１評価手段、
前記重心速度と前記荷重速度とに基づいて、第２の評価を行う第２評価手段としてさらに機能させ、
前記動作判定手段は、前記第１評価手段による評価結果と前記第２評価手段による評価結果とに基づいて、前記ユーザの所定の動作を判定する、請求項１に記載の情報処理プログラム。
【請求項１６】
前記重心位置検出手段によって検出された重心位置の軌跡に基づいて、第３の評価を行う第３評価手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記第３評価手段による評価結果にも基づいて、前記ユーザの所定の動作を判定する、請求項１５に記載の情報処理プログラム。
【請求項１７】
前記重心位置検出手段によって検出された重心位置の軌跡の少なくとも一部と前記重心位置検出手段によって検出された重心位置のうち２つの重心位置を結ぶ線とによって囲まれる面積に基づいて、第３の評価を行う第３評価手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記第３評価手段による評価結果にも基づいて、前記ユーザの所定の動作を判定する、請求項１５に記載の情報処理プログラム。
【請求項１８】
前記第１評価手段は、前記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと前記重心速度が第２の条件を満たすタイミングとに基づいて、第１評価値を算出し、
前記第２評価手段は、前記重心速度と前記荷重速度とに基づいて、第２評価値を算出し、
前記動作判定手段は、前記第１評価値の値に応じて前記第２評価値を変化させ、前記第１評価値と当該変化後の第２評価値とに基づいて、前記ユーザの所定の動作を判定する、請求項１５に記載の情報処理プログラム。
【請求項１９】
前記動作判定手段は、前記第１評価値の値が大きくなるにしたがって前記第２評価値の値が小さくなるように当該第２評価値を変化させる、請求項１８に記載の情報処理プログラム。
【請求項２０】
前記動作判定手段は、前記ユーザの所定の動作のタイミングが所定のタイミングよりも遅れているか否かを判定する、請求項１ないし１９のいずれかに記載の情報処理プログラム。
【請求項２１】
前記情報処理装置は、前記第１入力装置とは異なる第２入力装置からの信号をさらに処理し、
前記第２入力装置による前記情報処理装置への入力が所定の条件を満たした時点を基準時として設定する基準時設定手段、として前記コンピュータをさらに機能させ、
前記動作判定手段は、前記基準時に応じて定められる期間に前記荷重情報取得手段によって取得された荷重情報と前記重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する、請求項１ないし２０のいずれかに記載の情報処理プログラム。
【請求項２２】
前記動作判定手段は、前記基準時に応じて定められる期間において取得される前記荷重情報と当該期間における前記重心速度情報との関係に基づいて、当該期間における複数時点での前記ユーザの所定の動作を判定する、請求項２１に記載の情報処理プログラム。
【請求項２３】
前記第２入力装置は、加速度センサを備え、
前記基準時設定手段は、前記第２入力装置からの信号に基づいて、前記加速度センサによって検出された加速度の大きさが所定の閾値よりも大きくなった時点を、前記基準時として設定する、請求項２１に記載の情報処理プログラム。
【請求項２４】
前記動作判定手段による判定結果に基づいて、仮想空間上の所定のオブジェクトが当該仮想空間を移動する様子を表示する表示制御手段、として前記コンピュータをさらに機能させる、請求項１ないし２３のいずれかに記載の情報処理プログラム。
【請求項２５】
ユーザによって荷重が加えられる、荷重センサを備えた第１入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、前記コンピュータを、
前記第１入力装置からの信号に基づいて、所定期間における前記第１入力装置に加えられた荷重の重心位置を検出する重心位置検出手段、
前記重心位置検出手段によって検出された重心位置の軌跡に基づいて、前記ユーザの所定の動作を判定する動作判定手段、として機能させる情報処理プログラム。
【請求項２６】
ユーザによって荷重が加えられる、荷重センサを備えた第１入力装置からの信号を処理する情報処理装置であって、
前記第１入力装置からの信号に基づいて、前記第１入力装置に加えられた荷重の時間変化に関する荷重情報を取得する荷重情報取得手段と、
前記第１入力装置からの信号に基づいて、前記ユーザの重心位置を検出する重心位置検出手段と、
前記重心位置の移動速度を示す重心速度を算出する重心速度算出手段と、
前記荷重情報と前記重心速度に関する重心速度情報との関係に基づいて、前記ユーザの所定の動作を判定する動作判定手段とを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム及び情報処理装置に関し、具体的には、ユーザの荷重及び重心位置に基づいて所定の処理を行う情報処理プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
従来より、ユーザの重心位置を測定してスイング中における重心位置の軌跡を表示するとともに、光センサ等によりボールの存否を検出することによりスイングのトップ位置やインパクト点等を表示するゴルフ練習機が存在する（例えば、特許文献１）。具体的には、特許文献１に記載のゴルフ練習機では、光センサによりクラブヘッドの通過を検出することでスイングの開始点やインパクト点を検出する。また、上記ゴルフ練習機は、ユーザの荷重及び重心位置の変化に基づいて、スイング開始点からインパクト点までのボディーターン開始点、トップ位置、及び、振り下ろし点等の特徴点を検出する。そして、ゴルフ練習機は、スイングの各特徴点を荷重及び重心位置の測定情報と関連付けて表示装置に表示する。これにより、ユーザのゴルフスイングのフォームをきめ細かく分析することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０６−６３１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術では、以下の課題があった。すなわち、特許文献１に記載の技術では、ユーザの動作を判定するためには、ボールやクラブヘッドの存否を検出する光センサ等を用いてインパクト時点等を測定する必要があり、装置の構成が複雑になったり、製造コストが増大したりするという問題があった。
【０００５】
それ故、本発明の目的は、単純な装置の構成によりユーザの所定の動作を判定することが可能な情報処理プログラム及び情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【０００７】
本発明は、ユーザによって荷重が加えられる荷重センサを備えた第１入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、上記コンピュータを、荷重情報取得手段、重心位置検出手段、重心速度算出手段、及び、動作判定手段として機能させる。荷重情報取得手段は、上記第１入力装置からの信号に基づいて、上記第１入力装置に加えられた荷重の時間変化に関する荷重情報を取得する。重心位置検出手段は、上記第１入力装置からの信号に基づいて、上記ユーザの重心位置を検出する。重心速度算出手段は、上記重心位置の移動速度を示す重心速度を算出する。動作判定手段は、上記荷重情報と上記重心速度に関する重心速度情報との関係に基づいて、上記ユーザの所定の動作を判定する。
【０００８】
なお、上記荷重情報とは、例えば、荷重の最大値（又は最小値）やその値となる時間、荷重の極大値（又は極小値）やその値となる時間、荷重値が所定の値となる場合の時間等であってもよい。また、上記荷重情報は、所定期間における荷重の変化量であってもよい。すなわち、荷重情報とは、荷重値の時間変化に関する様々な情報を含む概念である。また、上記重心速度情報とは、上記重心速度に関する様々な情報を含む概念であり、例えば、上記所定期間における最大（又は最小）の重心速度やその時間、所定の重心速度となる時間、重心速度の極大値（又は極小値）やその時間、重心速度の方向（重心の移動方向）等であってもよい。
【０００９】
上記によれば、ユーザによって第１入力装置に加えられた荷重と当該荷重の重心速度とに基づいて、ユーザの所定の動作を判定することができる。これにより、複雑な装置構成を必要とせず、第１入力装置に対する荷重の入力のみによって、ユーザの所定の動作を判定することができる。
【００１０】
本発明では、上記情報処理プログラムは、上記コンピュータを記憶手段としてさらに機能させてもよい。記憶手段は、上記第１入力装置からの信号に基づいて、所定期間における上記第１入力装置に加えられた荷重を示す荷重値データを記憶する。そして、上記荷重情報取得手段は、上記記憶手段に記憶された荷重値データに基づいて、上記荷重情報を取得する。
【００１１】
上記によれば、所定期間に第１入力装置が検出した荷重値を記憶し、当該荷重値に基づいて、荷重情報を取得することができる。
【００１２】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第１入力装置に加えられた荷重が第１の条件を満たすタイミングを取得してもよい。この場合において、上記動作判定手段は、上記第１入力装置に加えられた荷重が上記第１の条件を満たすタイミングと上記重心速度が第２の条件を満たすタイミングとに基づいて、上記ユーザの所定の動作を判定してもよい。
【００１３】
上記によれば、荷重値が第１の条件を満たすタイミングと重心速度が第２の条件を満たすタイミングとに基づいて、ユーザの所定の動作を判定することができる。
【００１４】
本発明では、上記荷重情報取得手段は、上記第１入力装置に加えられた荷重が最大となるタイミングを取得してもよい。この場合において、上記動作判定手段は、上記荷重が最大となるタイミングと上記重心速度が最大となるタイミングとに基づいて、上記ユーザの所定の動作を判定してもよい。
【００１５】
上記によれば、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、ユーザの動作を判定することができる。これにより、例えば、ユーザが体重移動を伴って腕を振ったり腰を回転させたりする動作を判定する場合において、上記２つのタイミングに基づいて、当該動作を判定することができる。例えば、当該動作が予め定められた所望の動作であるか否か等を判定することができる。
【００１６】
本発明では、上記動作判定手段は、上記荷重が最大となるタイミングと上記重心速度が最大となるタイミングとの差に基づいて、上記ユーザの所定の動作を判定してもよい。
【００１７】
上記によれば、荷重値が最大となるタイミングと重心速度が最大となるタイミングとの差に基づいて、ユーザの動作を判定することができる。これにより、例えば、当該差が大きいほど、ユーザが行った動作が予め定められた動作と異なる動作であると判定することができる。
【００１８】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第１入力装置に加えられた荷重の所定期間における変化量を示す荷重速度を取得してもよい。この場合において、上記動作判定手段は、上記重心速度と上記荷重速度とに基づいて、上記ユーザの所定の動作を判定してもよい。
【００１９】
上記によれば、荷重速度と重心速度とに基づいて、ユーザの動作を判定することができる。
【００２０】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第１入力装置に加えられた荷重の所定期間における変化量を示す荷重速度を取得してもよい。この場合において、上記動作判定手段は、予め定められた荷重速度及び重心速度の関係と、上記荷重情報取得手段によって取得された荷重速度及び上記重心速度算出手段によって算出された重心速度の関係と、を比較することにより、上記ユーザの所定の動作を判定してもよい。
【００２１】
上記によれば、荷重速度と重心速度とに基づいて、ユーザの動作を判定することができる。これにより、例えば、ユーザが体重移動を伴って腕を振ったり腰を回転させたりする動作を判定する場合において、当該腕の振りや腰の回転の速さと体重移動の速さとのバランスを判定することができる。
【００２２】
本発明では、上記動作判定手段は、上記荷重速度を第１軸とし上記重心速度を第２軸とする座標系において、上記予め定められた荷重速度及び重心速度の関係を示す直線又は曲線から、上記荷重情報取得手段によって取得された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す上記座標系における点までの距離に基づいて、上記ユーザの所定の動作を判定してもよい。
【００２３】
上記によれば、上記距離に基づいて、ユーザの所定の動作が、予め定められた動作と比較してどのていど異なるかを判定することができる。また、上記距離に基づいて判定することにより、荷重速度と重心速度の双方に基づいて、ユーザの所定の動作を判定することができる。
【００２４】
本発明では、上記動作判定手段は、上記荷重速度を第１軸とし上記重心速度を第２軸とする座標系において、ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線から、上記荷重情報取得手段によって取得された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す上記座標系における点までの距離に基づいて、ユーザの所定の動作を判定してもよい。
【００２５】
上記によれば、上記座標系において、ユーザの所定の動作が理想的に行われたときに検出される荷重速度および重心速度の関係を示す直線が定められる。そして、当該直線から、上記荷重情報取得手段によって取得された荷重速度及び上記重心速度算出手段によって算出された重心速度を示す点までの距離に基づいて、ユーザの動作を判定することができる。
【００２６】
本発明では、上記直線の傾きが略２であってもよい。
【００２７】
また、本発明では、上記直線の切片が略０．０７であってもよい。
【００２８】
また、本発明では、上記直線の傾きが１．７〜２．３程度であってもよい。
【００２９】
また、本発明では、上記直線の切片が０．０５８〜０．０８３程度であってもよい。
【００３０】
また、本発明では、上記直線の切片は、上記直線の傾きが増加するにしたがって減少してもよい。
【００３１】
上記によれば、ユーザの所定の動作が理想的に行われたときの荷重速度と重心速度との関係を表す直線が定められ、例えば、ゴルフスイングにおいて打球がストレートとなる場合のスイングを定めることができる。
【００３２】
本発明では、上記荷重情報取得手段は、上記荷重情報として、上記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと、上記第１入力装置に加えられた荷重の所定期間における変化量を示す荷重速度とを取得してもよい。この場合において、上記情報処理プログラムは、上記コンピュータを、第１評価手段、及び、第２評価手段としてさらに機能させる。第１評価手段は、上記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと上記重心速度が第２の条件を満たすタイミングとに基づいて、第１の評価を行う。第２評価手段は、上記重心速度と上記荷重速度とに基づいて、第２の評価を行う。そして、上記動作判定手段は、上記第１評価手段による評価結果と上記第２評価手段による評価結果とに基づいて、上記ユーザの所定の動作を判定する。
【００３３】
上記によれば、第１評価手段の評価結果と第２評価手段の評価結果とに基づいて、ユーザの動作を判定することができる。これにより、上記２つのタイミングに加えて、上記重心速度及び上記荷重速度にも基づいて、ユーザの動作を判定することができる。
【００３４】
本発明では、上記情報処理プログラムは、第３評価手段として上記コンピュータをさらに機能させてもよい。第３評価手段は、上記重心位置検出手段によって検出された重心位置の軌跡に基づいて、第３の評価を行う。この場合において、上記動作判定手段は、上記第３評価手段による評価結果にも基づいて、上記ユーザの所定の動作を判定する。
【００３５】
上記によれば、重心位置の軌跡に基づいて第３の評価を行うことができ、当該第３の評価結果にも基づいてユーザの動作を判定することができる。従って、例えば、ユーザの体重移動に基づく重心位置の軌跡によって囲まれる面積や軌跡の形状等にも基づいて、ユーザの動作を判定することができる。
【００３６】
本発明では、上記情報処理プログラムは、第３評価手段として上記コンピュータをさらに機能させてもよい。第３評価手段は、上記重心位置検出手段によって検出された重心位置の軌跡の少なくとも一部と、上記重心位置検出手段によって検出された重心位置のうち２つの重心位置を結ぶ線とによって囲まれる面積に基づいて、第３の評価を行う。そして、上記動作判定手段は、上記第３評価手段による評価結果にも基づいて、上記ユーザの所定の動作を判定する。
【００３７】
上記によれば、重心位置の軌跡の少なくとも一部によって囲まれる面積に基づいて第３の評価を行うことができる。そして、第３の評価結果にも基づいてユーザの動作を判定することができる。
【００３８】
本発明では、上記第１評価手段は、上記第１入力装置に加えられた荷重が第１の条件を満たすタイミングと上記重心速度が第２の条件を満たすタイミングとに基づいて、第１評価値を算出してもよい。また、上記第２評価手段は、上記重心速度と上記荷重速度とに基づいて、第２評価値を算出してもよい。そして、上記動作判定手段は、上記第１評価値の値に応じて上記第２評価値を変化させ、上記第１評価値と当該変化後の第２評価値とに基づいて、上記ユーザの所定の動作を判定してもよい。
【００３９】
上記によれば、第１評価値に応じて第２評価値を変化させることができ、当該変化後の第２評価値を用いてユーザの動作を判定することができる。これにより、ユーザの動作の判定に対する第２評価値の影響を、第１評価値の値に応じて変化させることができる。
【００４０】
本発明では、上記動作判定手段は、上記第１評価値の値が大きくなるにしたがって上記第２評価値の値が小さくなるように当該第２評価値を変化させてもよい。
【００４１】
上記によれば、第１評価値の値が大きければ大きいほど、第２評価値の値を小さくすることができる。これにより、第１評価値の値が大きければ大きいほど、ユーザの動作の判定に対する第２評価値の影響を小さくすることができる。
【００４２】
本発明では、上記動作判定手段は、上記ユーザの所定の動作のタイミングが所定のタイミングよりも遅れているか否かを判定してもよい。
【００４３】
上記によれば、荷重を測定することにより、ユーザが行った動作のタイミングが、所定のタイミングよりも遅れているか否かを判定することができる。
【００４４】
本発明では、上記情報処理装置は、上記第１入力装置とは異なる第２入力装置からの信号をさらに処理してもよい。この場合において、上記情報処理プログラムは、基準時設定手段として上記コンピュータをさらに機能させてもよい。基準時設定手段は、上記第２入力装置による上記情報処理装置への入力が所定の条件を満たした時点を基準時として設定する。そして、上記動作判定手段は、上記基準時に応じて定められる期間に上記荷重情報取得手段によって取得された荷重情報と上記重心速度情報との関係に基づいて、上記ユーザの所定の動作を判定する。
【００４５】
上記によれば、第２入力装置からの信号に応じて、基準時を設定することができる。そして、設定された基準時に応じて定められる期間に取得された荷重情報と重心速度情報との関係に基づいて、ユーザの動作を判定することができる。
【００４６】
本発明では、上記動作判定手段は、上記基準時に応じて定められる期間において取得される上記荷重情報と当該期間における上記重心速度情報との関係に基づいて、当該期間における複数時点での上記ユーザの所定の動作を判定してもよい。
【００４７】
上記によれば、上記基準時に応じて定められる期間において、複数回上記ユーザの動作を判定することができる。従って、基準時後の所定期間繰り返しユーザの動作を判定することができる。
【００４８】
本発明では、上記第２入力装置は、加速度センサを備えてもよい。この場合において、上記基準時設定手段は、上記第２入力装置からの信号に基づいて、上記加速度センサによって検出された加速度の大きさが所定の閾値よりも大きくなった時点を、上記基準時として設定する。
【００４９】
上記によれば、例えば、ユーザが上記第２入力装置を所定の速さ以上で振った時点を、上記基準時として設定することができる。
【００５０】
本発明では、上記情報処理プログラムは、表示制御手段として上記コンピュータをさらに機能させてもよい。表示制御手段は、上記動作判定手段による判定結果に基づいて、仮想空間上の所定のオブジェクトが当該仮想空間を移動する様子を表示する。
【００５１】
上記によれば、ユーザの動作に応じて、所定のオブジェクトが仮想空間上を移動する様子を表示させることができる。
【００５２】
本発明は、ユーザによって荷重が加えられる、荷重センサを備えた第１入力装置からの信号を処理する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、上記コンピュータを、重心位置検出手段、動作判定手段として機能させる。重心位置検出手段は、上記第１入力装置からの信号に基づいて、所定期間における上記第１入力装置に加えられた荷重の重心位置を検出する。動作判定手段は、上記重心位置検出手段によって検出された重心位置の軌跡に基づいて、上記ユーザの所定の動作を判定する。
【００５３】
上記によれば、ユーザの動作に応じて変化する重心位置の軌跡の少なくとも一部によって囲まれる面積に基づいて、当該ユーザの動作を判定することができる。
【００５４】
また、本発明は、上記情報処理プログラムを実行する情報処理装置の形態で実施されてもよい。
【発明の効果】
【００５５】
本発明によれば、複雑な装置構成を必要とせず、荷重センサを備えた第１入力装置に対する荷重の入力のみによって、ユーザの所定の動作を判定することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の一実施例であるゲームシステムの外観を示す外観図
【図２】本実施例のビデオゲームシステム１０の電気的な構成を示すブロック図
【図３】コントローラ２２の外観の一例を示す図
【図４】コントローラ２２の電気的な構成を示すブロック図
【図５】図１に示した荷重コントローラ３６の外観を示す斜視図
【図６】図５に示した荷重コントローラ３６のＶＩ−ＶＩ断面図
【図７】荷重コントローラ３６の電気的な構成の一例を示すブロック図
【図８】本実施形態で想定するゲームの画面の一例を示した図
【図９】右打ちのプレイヤが荷重コントローラ３６の上に乗り、ゴルフクラブをスイングするようにコントローラ２２を振る様子を示した図
【図１０】ボール１２２に初速度が与えられる瞬間（インパクトの瞬間）の様子をゲーム空間の横から見た図であり、ボールの打ち出し角度を示す図
【図１１】初速度が与えられたボール１２２を後ろ側から見た図であり、ボールのスライス量を示す図
【図１２】ボール１２２に初速度が与えられる瞬間（インパクトの瞬間）の様子をゲーム空間の上から見た図であり、ボールの右打ち出し角度を示す図
【図１３Ａ】プレイヤがバックスイングの状態で静止している様子を示した図
【図１３Ｂ】プレイヤがバックスイングの状態からダウンスイングに移行する瞬間の様子を示した図
【図１３Ｃ】プレイヤがダウンスイングをしている様子を示した図
【図１３Ｄ】プレイヤがボールを打つ瞬間（インパクトの瞬間）を示した図
【図１３Ｅ】プレイヤがフォロースルーをしている様子を示した図
【図１４】プレイヤがダウンスイングを開始した直後からの荷重コントローラ３６が検出する荷重値の時間変化を示した図
【図１５Ａ】荷重コントローラ３６を上方から見た図
【図１５Ｂ】荷重コントローラ３６の台３６ａ上の位置に対応したＳＴ座標系を示す図
【図１６】プレイヤがバックスイングを開始した直後からの重心位置の軌跡を示した図
【図１７】荷重速度を説明するための図
【図１８】理想的なスイングにおける荷重速度と重心速度との関係を示した図であり、第２評価値を示した図
【図１９】重心位置の軌跡を示した図であり、第３評価値を示した図
【図２０】右打ち出し角度θｙの算出方法を示した図
【図２１】ゲーム装置１２のメインメモリ（外部メインメモリ４６又は内部メインメモリ４２ｅ）に記憶される主なデータを示す図
【図２２】ゲーム装置１２において実行されるゲーム処理の流れを示すメインフローチャート
【図２３】各パラメータの算出処理（Ｓ８）の詳細を示すフローチャート
【発明を実施するための形態】
【００５７】
（ゲームシステムの全体構成）
次に、図面を参照して本発明に一実施例について説明する。図１は、本発明の一実施例であるゲームシステムの外観を示す外観図である。ゲームシステム１０は、ゲーム装置１２、コントローラ２２および荷重コントローラ３６を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ（２２，３６）と通信可能に設計されている。また、ゲーム装置１２と各コントローラ（２２，３６）とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００５８】
ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。ディスクスロット１６の周囲には、ＬＥＤと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
【００５９】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という。）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
【００６０】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００６１】
ゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａは、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４０ｍ，３４０ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４０ｍ，３４０ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００６２】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００６３】
このゲームシステム１０において、ユーザまたはユーザがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。それに応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段２６に対する操作以外にも、コントローラ２２自体を動かすことによって、動画オブジェクト（ユーザオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００６４】
図２は、本実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示されるように、ゲーム装置１２には、ＣＰＵ４０が設けられる。このＣＰＵ４０は、ゲームプロセッサとして機能する。このＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００６５】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラムデータやテクスチャデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００６６】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ（Graphics Processor Unit）４２ｂ，ＤＳＰ（Digital Signal Processor）４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
【００６７】
入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
【００６８】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド（作画命令）を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００６９】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。なお、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００７０】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００７１】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００７２】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００７３】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００７４】
入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（送信データとする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（受信データとする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、受信データをフラッシュメモリ４４に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、ダウンロードデータをフラッシュメモリ４４に記憶する。
【００７５】
また、入出力プロセッサ４２ａは、コントローラ２２や荷重コントローラ３６から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０のゲーム処理によって利用された後、バッファ領域から消去される。
【００７６】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格にしたがってコントローラ２２や荷重コントローラ３６との間で通信を行う。
【００７７】
また、図面の都合上、図２では、コントローラ２２と荷重コントローラ３６とをまとめて記載してある。
【００７８】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０および外部メモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。外部メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０や外部メモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００７９】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、システムＬＳＩ４２は、通常の通電状態となるモード（通常モードと呼ぶこととする）を設定する。一方、電源ボタン２０ａがオフされると、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、システムＬＳＩ４２は、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という。）を設定する。この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、ＣＰＵ４０によってアプリケーションの実行が行われないモードである。
【００８０】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
【００８１】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００８２】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００８３】
また、通常モードとスタンバイモードの切り替えは、コントローラ２２の電源スイッチ２６ｈ（図３参照）のオン／オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００８４】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００８５】
図３（Ａ）ないし図３（Ｅ）は、コントローラ２２の外観の一例を示す図である。図３（Ａ）はコントローラ２２の先端面を示し、図３（Ｂ）はコントローラ２２の上面を示し、図３（Ｃ）はコントローラ２２の右側面を示し、図３（Ｄ）はコントローラ２２の下面を示し、そして、図３（Ｅ）はコントローラ２２の後端面を示す。
【００８６】
図３（Ａ）ないし図３（Ｅ）を参照して、コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング２２ａを有している。ハウジング２２ａは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング２２ａ（コントローラ２２）には、入力手段（複数のボタンないしスイッチ）２６が設けられる。具体的には、図３（Ｂ）に示されるように、ハウジング２２ａの上面には、十字キー２６ａ，１ボタン２６ｂ，２ボタン２６ｃ，Ａボタン２６ｄ，−ボタン２６ｅ，ＨＯＭＥボタン２６ｆ，＋ボタン２６ｇおよび電源スイッチ２６ｈが設けられる。また、図３（Ｃ）および図３（Ｄ）に示されるように、ハウジング２２ａの下面に傾斜面が形成されており、この傾斜面に、Ｂトリガースイッチ２６ｉが設けられる。
【００８７】
十字キー２６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、ユーザによって操作可能なキャラクタまたはオブジェクト（ユーザキャラクタまたはユーザオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００８８】
１ボタン２６ｂおよび２ボタン２６ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン２６ｂおよび２ボタン２６ｃは、Ａボタン２６ｄおよびＢトリガースイッチ２６ｉと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００８９】
Ａボタンスイッチ２６ｄは、押しボタンスイッチであり、ユーザキャラクタまたはユーザオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【００９０】
−ボタン２６ｅ、ＨＯＭＥボタン２６ｆ、＋ボタン２６ｇおよび電源スイッチ２６ｈもまた、押しボタンスイッチである。−ボタン２６ｅは、ゲームモードを選択するために使用される。ＨＯＭＥボタン２６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン２６ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ２６ｈは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００９１】
なお、この実施例では、コントローラ２２自体をオン／オフするための電源スイッチは設けておらず、コントローラ２２の入力手段２６のいずれかを操作することによってコントローラ２２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００９２】
Ｂトリガースイッチ２６ｉもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ２２で選択した位置を指定したりするために使用される。また、Ｂトリガースイッチ２６ｉを押し続けると、ユーザオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂトリガースイッチ２６ｉは、通常のＢボタンと同様に機能し、Ａボタン２６ｄによって決定したアクションを取り消すなどのために使用される。
【００９３】
また、図３（Ｅ）に示されるように、ハウジング２２ａの後端面に外部拡張コネクタ２２ｂが設けられ、また、図３（Ｂ）に示されるように、ハウジング２２ａの上面であり、後端面側にはインジケータ２２ｃが設けられる。外部拡張コネクタ２２ｂは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ２２ｃは、たとえば、４つのＬＥＤで構成され、４つのうちのいずれか１つを点灯することにより、点灯ＬＥＤに対応するコントローラ２２の識別情報（コントローラ番号）を示したり、点灯させるＬＥＤの個数によってコントローラ２２の電源残量を示したりすることができる。
【００９４】
さらに、コントローラ２２は、撮像情報演算部８０（図４参照）を有しており、図３（Ａ）に示されるように、ハウジング２２ａの先端面には撮像情報演算部８０の光入射口２２ｄが設けられる。また、コントローラ２２は、スピーカ８６（図４参照）を有しており、このスピーカ８６は、図３（Ｂ）に示されるように、ハウジング２２ａの上面であり、１ボタン２６ｂとＨＯＭＥボタン２６ｆとの間に設けられる音抜き孔２２ｅに対応して、ハウジング２２ａ内部に設けられる。
【００９５】
なお、図３（Ａ）ないし図３（Ｅ）に示したコントローラ２２の形状や、各入力手段２６の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【００９６】
図４は、コントローラ２２の電気的な構成を示すブロック図である。この図４を参照して、コントローラ２２はプロセッサ７０を含み、このプロセッサ７０には、内部バス（図示せず）によって、外部拡張コネクタ２２ｂ、入力手段２６、メモリ７２、加速度センサ７４、無線モジュール７６、撮像情報演算部８０、ＬＥＤ８２（インジケータ２２ｃ）、バイブレータ８４、スピーカ８６および電源回路８８が接続される。また、無線モジュール７６には、アンテナ７８が接続される。
【００９７】
プロセッサ７０は、コントローラ２２の全体制御を司り、入力手段２６、加速度センサ７４および撮像情報演算部８０によって入力された情報（入力情報）を、入力データとして無線モジュール７６およびアンテナ７８を介してゲーム装置１２に送信（入力）する。このとき、プロセッサ７０は、メモリ７２を作業領域ないしバッファ領域として用いる。
【００９８】
上述した入力手段２６（２６ａ−２６ｉ）からの操作信号（操作データ）は、プロセッサ７０に入力され、プロセッサ７０は操作データを一旦メモリ７２に記憶する。
【００９９】
また、加速度センサ７４は、コントローラ２２の縦方向（Ｙ軸方向）、横方向（Ｘ軸方向）および前後方向（Ｚ軸方向）の３軸で各々の加速度を検出する。すなわち、加速度センサ７４は、コントローラ２２のＸＹＺ座標系（物体座標系）における各軸方向の加速度を検出する。この加速度センサ７４は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【０１００】
たとえば、加速度センサ７４は、第１所定時間毎に、Ｘ軸，Ｙ軸，Ｚ軸の各々についての加速度（ａｘ，ａｙ，ａｚ）を検出し、検出した加速度のデータ（加速度データ）をプロセッサ７０に入力する。たとえば、加速度センサ７４は、各軸方向の加速度を、−２．０ｇ〜２．０ｇ（ｇは重力加速度である。以下、同じ。）の範囲で検出する。プロセッサ７０は、加速度センサ７４から与えられる加速度データを、第２所定時間毎に検出し、一旦メモリ７２に記憶する。プロセッサ７０は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも１つを含む入力データを作成し、作成した入力データを、第３所定時間（たとえば、５ｍｓｅｃ）毎にゲーム装置１２に送信する。
【０１０１】
なお、図３（Ａ）−図３（Ｅ）では省略したが、この実施例では、加速度センサ７４は、ハウジング２２ａ内部の基板上の十字キー２６ａが配置される付近に設けられる。
【０１０２】
無線モジュール７６は、たとえばＢｌｕｅｔｏｏｔｈの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ７８から放射する。つまり、入力データは、無線モジュール７６によって微弱電波信号に変調されてアンテナ７８（コントローラ２２）から送信される。この微弱電波信号が上述したゲーム装置１２に設けられた無線コントローラモジュール５２によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置１２（ＣＰＵ４０）は、コントローラ２２からの入力データを取得することができる。そして、ＣＰＵ４０は、取得した入力データとプログラム（ゲームプログラム）とに従ってゲーム処理を行う。
【０１０３】
さらに、上述したように、コントローラ２２には、撮像情報演算部８０が設けられる。この撮像情報演算部８０は、赤外線フィルタ８０ａ、レンズ８０ｂ、撮像素子８０ｃおよび画像処理回路８０ｄによって構成される。赤外線フィルタ８０ａは、コントローラ２２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示画面近傍（周辺）に配置されるマーカ３４０ｍおよび３４０ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ８０ａを設けることによってマーカ３４０ｍおよび３４０ｎの画像をより正確に撮像することができる。レンズ８０ｂは、赤外線フィルタ８２を透過した赤外線を集光して撮像素子８０ｃへ出射する。撮像素子８０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ８０ｂによって集光された赤外線を撮像する。したがって、撮像素子８０ｃは、赤外線フィルタ８０ａを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子８０ｃによって撮像された画像を撮像画像と呼ぶ。撮像素子８０ｃによって生成された画像データは、画像処理回路８０ｄで処理される。画像処理回路８０ｄは、撮像画像内における撮像対象（マーカ３４０ｍおよび３４０ｎ）の位置を算出し、第４所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ７０に出力する。なお、画像処理回路８０ｄにおける処理については後述する。
【０１０４】
図５は、図１に示した荷重コントローラ３６の外観を示す斜視図である。図５に示されるように、荷重コントローラ３６は、ユーザがその上に乗る（ユーザの足を乗せる）台３６ａ、および台３６ａにかかる荷重を検出するための少なくとも４つの荷重センサ３６４（３６４ａ〜３６４ｄ）を備える。なお、各荷重センサ３６４は台３６ａに内包されており（図７参照）、図５においてはその配置が点線で示されている。
【０１０５】
台３６ａは、略直方体に形成されており、上面視で略長方形状である。たとえば長方形の短辺が３０ｃｍ程度に設定され、その長辺が５０ｃｍ程度に設定される。ユーザが乗る台３６ａの上面は平坦にされる。台３６ａの４隅の側面は、部分的に円柱状に張り出すように形成されている。
【０１０６】
この台３６ａにおいて、４つの荷重センサ３６４は、所定の間隔を置いて配置される。この実施例では、４つの荷重センサ３６４は、台３６ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ３６４の間隔は、台３６ａに対するユーザの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【０１０７】
図６は、図５に示した荷重コントローラ３６のＶＩ−ＶＩ断面図を示すとともに、荷重センサ３６４の配置された隅の部分が拡大表示されている。この図６から分かるように、台３６ａは、ユーザが乗るための支持板３６０と脚３６２を含む。脚３６２は、荷重センサ３６４が配置される箇所に設けられる。この実施例では４つの荷重センサ３６４が４隅に配置されるので、４つの脚３６２が４隅に設けられる。脚３６２は、たとえばプラスチック成型によって略有底円筒状に形成されており、荷重センサ３６４は、脚３６２内の底面に設けられた球面部品３６２ａ上に配置される。支持板３６０は、この荷重センサ３６４を介して脚３６２に支持される。
【０１０８】
支持板３６０は、上面と側面上部とを形成する上層板３６０ａ、下面と側面下部とを形成する下層板３６０ｂ、および上層板３６０ａと下層板３６０ｂとの間に設けられる中層板３６０ｃを含む。上層板３６０ａと下層板３６０ｂとは、たとえばプラスチック成型により形成されており、接着等により一体化される。中層板３６０ｃは、たとえば１枚の金属板のプレス成型により形成されている。この中層板３６０ｃが、４つの荷重センサ３６４の上に固定される。上層板３６０ａは、その下面に格子状のリブ（図示しない）を有しており、当該リブを介して中層板３６０ｃに支持されている。したがって、台３６ａにユーザが乗ったときには、その荷重は、支持板３６０、荷重センサ３６４および脚３６２を伝達する。図６に矢印で示したように、入力される荷重によって生じた床からの反作用は、脚３６２から、球面部品３６２ａ、荷重センサ３６４、中層板３６０ｃを介して、上層板３６０ａに伝達する。
【０１０９】
荷重センサ３６４は、たとえば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ３６４では、荷重入力に応じて、起歪体３６５が変形して歪が生じる。この歪が、起歪体に貼り付けられた歪センサ３６６によって、電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ３６４は、入力荷重を示す電圧信号を出力端子から出力する。
【０１１０】
なお、荷重センサ３６４は、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【０１１１】
図５に戻って、荷重コントローラ３６には、さらに、電源ボタン３６ｃが設けられる。この電源ボタン３６ｃがオンされると、荷重コントローラ３６の各回路コンポーネント（図７参照）に電源が供給される。ただし、荷重コントローラ３６は、ゲーム装置１２からの指示に従ってオンされる場合もある。また、荷重コントローラ３６は、ユーザが乗っていない状態が一定時間（たとえば、３０秒）以上継続すると、電源がオフされる。ただし、荷重コントローラ３６が起動されている状態で、電源ボタン３６ｃをオンしたときに、電源がオフされてもよい。
【０１１２】
図７は、荷重コントローラ３６の電気的な構成の一例を示すブロック図である。なお、この図７では、信号および通信の流れは実線矢印で示される。破線矢印は、電源の供給を示している。
【０１１３】
荷重コントローラ３６は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は図示しないＣＰＵ、ＲＯＭおよびＲＡＭ等を含み、ＣＰＵはＲＯＭに記憶されたプログラムに従って荷重コントローラ３６の動作を制御する。
【０１１４】
マイコン１００には、電源ボタン３６ｃ、ＡＤコンバータ１０２、ＤＣ−ＤＣコンバータ１０４および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。４つの荷重センサ３６４は、それぞれ、増幅器１０８を介してＡＤコンバータ１０２に接続される。
【０１１５】
また、荷重コントローラ３６には電源供給のために電池１００が収容されている。他の実施例では、電池に代えてＡＣアダプタを接続し、商用電源を供給するようにしてもよい。かかる場合には、ＤＣ−ＤＣコンバータに代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路を設ける必要がある。この実施例では、マイコン１００および無線モジュール１０６への電源の供給は、電池から直接的に行われる。つまり、マイコン１００内部の一部のコンポーネント（ＣＰＵ）と無線モジュール１０６とには、常に電源が供給されており、電源ボタン３６ｃがオンされたか否か、ゲーム装置１２から電源オン（荷重検出）のコマンドが送信されたか否かを検出する。一方、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８には、電池１１０からの電源がＤＣ−ＤＣコンバータ１０４を介して供給される。ＤＣ−ＤＣコンバータ１０４は、電池１１０からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８に与える。
【０１１６】
これら荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８への電源供給は、マイコン１００によるＤＣ−ＤＣコンバータ１０４の制御によって、必要に応じて行われるようにしてよい。つまり、マイコン１００は、荷重センサ３６４を動作させて荷重を検出する必要があると判断されるときに、ＤＣ−ＤＣコンバータ１０４を制御して、各荷重センサ３６４、ＡＤコンバータ１０２および各増幅器１０８に電源を供給するようにしてよい。
【０１１７】
電源が供給されると、各荷重センサ３６４は、入力された荷重を示す信号を出力する。当該信号は各増幅器１０８で増幅され、ＡＤコンバータ１０２でアナログ信号からディジタルデータに変換されて、マイコン１００に入力される。各荷重センサ３６４の検出値には各荷重センサ３６４の識別情報が付与されて、いずれの荷重センサ３６４の検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ３６４のそれぞれの荷重検出値を示すデータを取得することができる。
【０１１８】
一方、マイコン１００は、荷重センサ３６４を動作させる必要がないと判断されるとき、つまり、荷重検出タイミングでないとき、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６４、ＡＤコンバータ１０２および増幅器１０８への電源の供給を停止する。このように、荷重コントローラ３６では、必要なときにだけ、荷重センサ３６４を動作させて荷重の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【０１１９】
荷重検出の必要なときとは、典型的には、ゲーム装置１２（図１）が荷重データを取得したいときである。たとえば、ゲーム装置１２が荷重情報を必要とするとき、ゲーム装置１２は荷重コントローラ３６に対して荷重取得命令を送信する。マイコン１００は、ゲーム装置１２から荷重取得命令を受信したときに、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ３６４等に電源を供給し、荷重を検出する。一方、マイコン１００は、ゲーム装置１２から荷重取得命令を受信していないときには、ＤＣ−ＤＣコンバータ１０４を制御して、電源供給を停止する。
【０１２０】
あるいは、マイコン１００は、一定時間ごとに荷重検出タイミングであると判断して、ＤＣ−ＤＣコンバータ１０４を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、たとえば、初めにゲーム装置１２から荷重コントローラ３６のマイコン１００に与えられて記憶されてよいし、または、予めマイコン１００に記憶されてよい。
【０１２１】
荷重センサ３６４からの検出値を示すデータは、荷重コントローラ３６の操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ｂを介してゲーム装置１２（図１）に送信される。たとえば、ゲーム装置１２からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ３６４の検出値データを受信したときに、当該検出値データをゲーム装置１２に送信する。あるいは、マイコン１００は、一定時間ごとに検出値データをゲーム装置１２に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータが送信される。
【０１２２】
なお、無線モジュール１０６は、ゲーム装置１２の無線コントローラモジュール５２と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置１２のＣＰＵ４０は、無線コントローラモジュール５２等を介して荷重取得命令を荷重コントローラ３６に送信することができる。荷重コントローラ３６のマイコン１００は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置１２からの命令を受信し、また、各荷重センサ３６４の荷重検出値（または荷重算出値）を含む入力データをゲーム装置１２に送信することができる。
【０１２３】
たとえば４つの荷重センサ３６４で検出される４つの荷重値の単なる合計値に基づいて実行されるようなゲームの場合には、ユーザは荷重コントローラ３６の４つの荷重センサ３６４に対して任意の位置をとることができ、つまり、ユーザは台３６ａの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかし、ゲームの種類によっては、各荷重センサ３６４で検出される荷重値がユーザから見ていずれの方向の荷重値であるかを識別して処理を行う必要があり、つまり、荷重コントローラ３６の４つの荷重センサ３６４とユーザとの位置関係が把握されている必要がある。この場合、たとえば、４つの荷重センサ３６４とユーザとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにユーザが台３６ａ上に乗ることが前提とされてよい。典型的には、台３６ａの中央に乗ったユーザの前後左右にそれぞれ荷重センサ３６４が２つずつ存在するような位置関係、つまり、ユーザが荷重コントローラ３６の台３６ａの中央に乗ったとき、ユーザの中心から右前、左前、右後および左後の方向にそれぞれ荷重センサ３６４が存在するような位置関係が規定される。この場合、この実施例では、荷重コントローラ３６の台３６ａが平面視で矩形状に形成されるとともにその矩形の１辺（長辺）に電源ボタン３６ｃが設けられているので、この電源ボタン３６ｃを目印として利用して、ユーザには電源ボタン３６ｃの設けられた長辺が所定の方向（前、後、左または右）に存在するようにして台３６ａに乗ってもらうことを予め決めておく。このようにすれば、各荷重センサ３６４で検出される荷重値は、ユーザから見て所定の方向（右前、左前、右後および左後）の荷重値となる。したがって、荷重コントローラ３６およびゲーム装置１２は、荷重検出値データに含まれる各荷重センサ３６４の識別情報と、予め設定（記憶）された各荷重センサ３６４のユーザに対する位置ないし方向を示す配置データとに基づいて、各荷重検出値がユーザから見ていずれの方向に対応するかを把握することができる。これにより、たとえば前後左右の操作方向のようなユーザによるゲーム操作の意図を把握することが可能になる。
【０１２４】
なお、各荷重センサ３６４のユーザに対する配置は予め規定せずに、初期設定やゲーム中の設定などでユーザの入力によって配置が設定されるようにしてもよい。たとえば、ユーザから見て所定の方向（左前、右前、左後または右後など）の部分に乗るようにユーザに指示する画面を表示するとともに荷重値を取得することによって、各荷重センサ３６４のユーザに対する位置関係を特定することができるので、この設定による配置データを生成して記憶するようにしてよい。あるいは、モニタ３４の画面上に、荷重コントローラ３６の配置を選択するための画面を表示して、目印（電源ボタン３６ｃ）がユーザから見てどの方向に存在するかをコントローラ２２による入力によって選択してもらい、この選択に応じて各荷重センサ３６４の配置データを生成して記憶するようにしてよい。
【０１２５】
（ゲーム処理の概要）
次に、図８及び図９を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。本実施形態で想定するゲームは、ゴルフ練習用のゲームである。図８は、本実施形態で想定するゲームの画面の一例を示した図である。図８では、仮想ゲーム空間に構築されたゴルフ練習場、仮想ゲーム空間に登場するプレイヤであるプレイヤオブジェクト１２０、ボールオブジェクト（単にボールという）１２２、ゴルフクラブのヘッド１２４、及び、ピン１２６が画面に表示される。このゲームでは、仮想ゲーム空間内に登場するプレイヤオブジェクト１２０をプレイヤが操作することによって仮想的にゴルフの練習を行う。図８では、右打ちのプレイヤオブジェクト１２０が表示されている。仮想ゲーム空間の任意の位置は、ｘｙｚ座標系（空間固定座標系）の座標値で示される。図８に示されるように、ｘｙｚ座標系のｘ軸正方向は、画面の左から右に向かう方向であり、ｙ軸正方向は、仮想ゲーム空間の上方向であり、ｚ軸正方向は、プレイヤオブジェクト１２０からピン１２６に向かう方向（画面の手前から奥への方向）である。なお、ｘｙｚ座標軸は実際には画面に表示されない。
【０１２６】
この場合、モニタ３４の画面に対して荷重コントローラ３６を縦置き（長辺方向が画面に向かう方向と平行となる配置）にする。例えば、右打ちのプレイヤは、縦置きにした荷重コントローラ３６の上に乗り、画面に対して右向きになるように立って、実際にゴルフクラブをスイングするようにコントローラ２２を振る。図９は、右打ちのプレイヤが荷重コントローラ３６の上に乗り、ゴルフクラブをスイングするようにコントローラ２２を振る様子を示した図である。図９に示されるように、プレイヤがコントローラ２２を両手又は片手で把持し、スイング動作をする。このプレイヤのスイング動作に応じて、画面に表示されるプレイヤオブジェクト１２０は、ゴルフスイングを行い、ボール１２２をショットする。そして、ショットされたボール１２２がゲーム空間上を飛んでいく様子が、画面に表示される。
【０１２７】
本実施形態に係るゲーム処理では、プレイヤがコントローラ２２を振る動作、及び、プレイヤの体重移動による荷重及び重心位置の変化に基づいて、ボール１２２に与えられる各パラメータが算出され、算出されたパラメータに基づいてボール１２２の飛距離や軌道が決定される。以下、具体的にボール１２２に与えられる各パラメータについて説明する。
【０１２８】
一般的にショットしたゴルフボールの飛距離や軌道は、ボールに与えられる各パラメータによって決定される。すなわち、ボールの飛距離や軌道は、ボールに与えられる初速度の大きさ、ボールの打ち出し角度、スライス量（サイドスピン）、右打ち出し角度、及び、バックスピン量に応じて、決定される。以下、各パラメータについて説明する。なお、各パラメータを算出する方法については、後述する。
【０１２９】
ボールの初速度の大きさは、ボールがゴルフクラブでショットされた瞬間にボールに与えられる初速度の大きさである。ボールの打ち出し角度は、ボールの初速度ベクトルと地面とがなす角度である。図１０は、ボール１２２に初速度が与えられる瞬間（インパクトの瞬間）の様子を仮想ゲーム空間の横から見た図であり、ボールの打ち出し角度を示す図である。図１０に示されるように、ボール１２２の打ち出し角度θｘは、初速度ベクトルと地面とがなす角度である。すなわち、打ち出し角度θｘは、ボールの初速度ベクトルをゲーム空間のｘｙｚ座標系におけるｙｚ平面に射影した場合のｙｚ平面射影ベクトルとｚ軸とのなす角度である。
【０１３０】
ボールのスライス量は、ボールが打ち出されてゲーム空間を飛んでいく場合に右又は左に曲がる度合いを示す量である。具体的には、ボールのスライス量は、ボールの回転軸の地面に対する傾き（角度）によって表される。図１１は、初速度が与えられたボール１２２を後ろ側から見た図であり、ボールのスライス量を示す図である。図１１に示すように、ボールのスライス量θｚは、ボールの回転軸のｚ軸周りの回転角度（図１１の破線と実線との角度）である。一般に、初速が与えられたボールは、バックスピン（回転）がかかる。図１１の破線で示すように、バックスピンの回転軸が地面に対して傾いていない場合（バックスピンの回転軸がｘ軸と平行の場合）、ボール１２２は、仮想ゲーム空間をカーブすることなく真っ直ぐ（ストレート）に進む。しかしながら、図１１の実線で示すように、バックスピンの回転軸が地面に対して右に所定の角度（正の値）だけ傾いている場合、ボール１２２は、右方向（ｘ軸正方向）に曲がりながら進む（スライスする）。逆に、バックスピンの回転軸が地面に対して左に所定の角度（負の値）だけ傾いている場合、ボール１２２は、左方向（ｘ軸負方向）に曲がりながら進む（フックする）。ボール１２２にバックスピンがかかると、スピンの回転軸に対して垂直上向きの力がボール１２２に働くため、ボール１２２は、スピンの回転軸の角度に応じた横方向（ｘ軸方向）の力が働く。すなわち、ボールのスライス量θｚの大きさ及び符号（正又は負）に応じて、ボール１２２のカーブする量及び方向が定まる。
【０１３１】
なお、一般的には、ボールがカーブする量は、バックスピンの回転量（回転速度）に依存する。しかしながら、本実施形態では、バックスピンの回転量はゴルフクラブの種類（番手）に応じて予め定められるため、ボール１２２がカーブする量は、上記スライス量θｚの値とゴルフクラブの種類によってのみ定められる。
【０１３２】
ボールの右打ち出し角度は、ボールが打ち出される横方向の角度である。図１２は、ボール１２２に初速度が与えられる瞬間（インパクトの瞬間）の様子をゲーム空間の上から見た図であり、ボールの右打ち出し角度を示す図である。図１２に示すように、ゴルフクラブのヘッド１２４がボール１２２にヒットする瞬間、ボール１２２が当たるヘッド１２４のフェース（打接面）は、ｚ軸方向（ピン方向）に真っ直ぐに向いていない場合がある。この場合、ボール１２２が打ち出される方向とｚ軸方向とは、所定の角度を有し、当該角度が右打ち出し角度θｙである。ボールの右打ち出し角度θｙは、ボール１２２の初速度ベクトルをｘｚ平面に射影した場合のｘｚ平面射影ベクトルとｚ軸とがなす角度である。すなわち、ボールの右打ち出し角度θｙは、ピンに真っ直ぐに向かう方向（図１２の破線）からのｙ軸周りの回転角度である。図１２に示すように、右打ち出し角度θｙが正の場合、ボール１２２は、ゲーム空間の右側（ｘ軸正方向）に打ち出される。逆に、右打ち出し角度が負の場合、ボール１２２は、ゲーム空間の左側（ｘ軸負方向）に打ち出される。
【０１３３】
（各パラメータの算出）
次に、上記各パラメータの算出方法について説明する。まず、スライス量θｚの算出方法について説明した後、その他のパラメータ（初速度の大きさ、打ち出し角度θｘ、及び、右打ち出し角度θｙ）について説明する。
【０１３４】
本実施形態では、ボールのスライス量θｚは、荷重コントローラ３６が検出する荷重値とその時間変化に基づいて定められる。具体的には、スライス量θｚは、荷重コントローラ３６が検出する荷重値、重心位置、及び、これらの時間変化によって定められる、３つの評価値（第１〜第３評価値）を用いて、算出される。以下、３つの評価値について説明する。
【０１３５】
第１評価値は、荷重コントローラ３６が検出する荷重値が最大となるタイミングと、荷重コントローラ３６に加えられる荷重の重心位置、すなわちプレイヤの重心位置の移動速度を示す重心速度が最大となるタイミングとに基づいて、算出される。第１評価値は、インパクトのタイミングに関する評価値であり、プレイヤのスイングが振り遅れか否かを示す値である。まず、荷重コントローラ３６が検出する荷重値が最大となるタイミングについて、説明する。
【０１３６】
プレイヤが荷重コントローラ３６の上に乗ってゴルフのスイングをする間、荷重コントローラ３６が検出する荷重値（４つの荷重センサ３６４ａ〜ｄの合計荷重値）は変化する。図１３Ａ〜Ｅは、プレイヤが実際にゴルフスイングをする様子を示した図である。図１３Ａは、プレイヤがバックスイングの状態で静止している様子を示した図である。図１３Ｂは、プレイヤがバックスイングの状態からダウンスイングに移行する瞬間の様子を示した図である。図１３Ｃは、プレイヤがダウンスイングをしている様子を示した図である。図１３Ｄは、プレイヤがボールを打つ瞬間（インパクトの瞬間）を示した図である。図１３Ｅは、プレイヤがフォロースルーをしている様子を示した図である。
【０１３７】
図１３Ａ〜Ｅに示すように、プレイヤは、ゴルフのスイングをする場合、バックスイングの状態からダウンスイングに移行し、ボールを打った（インパクトした）後、フォロースルーに移行してスイングを終了する。この間、荷重コントローラ３６が検出する荷重値は、バックスイングの状態からダウンスイングに移行した直後（図１３Ｂ）では減少し、ダウンスイング中（図１３Ｃ）では荷重値は増加し、インパクトの瞬間（図１３Ｄ）近傍で最大値を示す。そして、インパクト後からフォロースルーの間（図１３Ｅ）は、荷重値は再び減少し、プレイヤがスイング動作を終了すると、荷重値は一定（すなわち、プレイヤの体重の値）となる。
【０１３８】
ここで、上述のようにプレイヤがスイングをしている間、荷重値が変化する理由について説明する。プレイヤが荷重コントローラ３６上で静止している場合、荷重コントローラ３６が検出する荷重値は一定となる。しかしながら、プレイヤが荷重コントローラ３６上で腕を振ると、荷重値は変化する。例えば、プレイヤがバックスイングの状態からダウンスイングに移行する際、プレイヤは自身の腕を振り下ろそうとして力を加える。プレイヤの腕を振り下ろす動作に応じて、腕やゴルフクラブ（コントローラ２２）に対して、略鉛直下向きの加速度が生じる。この場合、慣性の法則（作用・反作用）により、略鉛直下向きの加速度に応じた略鉛直上向きの力が、プレイヤの体全体（より正確にはプレイヤの腕の付け根）に加わる。従って、プレイヤがバックスイングの状態からダウンスイングに移行した直後、荷重コントローラ３６が検出する荷重値は、プレイヤの体重よりも小さい値を示す。
【０１３９】
一方、プレイヤがダウンスイングをしている間（図１３Ｃ）、プレイヤの腕の振りの強さ（振りの速さ）に応じて、腕やゴルフクラブ（コントローラ２２）に対して、遠心力が加わる。従って、プレイヤがダウンスイングをしている場合であってプレイヤの腕が地面の方向を向いている場合（図１３Ｃ〜Ｄに示すスイングをしている場合）、鉛直下向きの力が腕やゴルフクラブ（コントローラ２２）に加わる。このため、プレイヤがダウンスイングをしている間、荷重コントローラ３６が検出する荷重値は、増加する。そして、プレイヤがボールを打つ瞬間（インパクトの瞬間）近傍で、上記遠心力は最大となるため、荷重コントローラ３６が検出する荷重値は、インパクトの瞬間近傍で最大値となる。インパクトの後、プレイヤは力を抜いてフォロースルーとなる。フォロースルーの状態では、腕にかかる遠心力の上下方向の力は、鉛直上向きとなるため、荷重コントローラ３６が検出する荷重値は、再び減少する。そして、プレイヤの動きが停止すると、荷重値は一定となる。
【０１４０】
また、プレイヤの腰の回転（体重の移動）によっても荷重値は変化する。例えば、右打ちのプレイヤがバックスイングの状態で静止している場合、右足により体重をかける傾向にある。プレイヤは、バックスイングの状態からダウンスイングに移行すると、右足で地面（荷重コントローラ３６）を軽く蹴るようにして体重を右足の方から左足の方に移動させようとする。そして、プレイヤは、インパクトの瞬間では、左足を踏ん張らせてボールを打つ。このようなプレイヤの腰の回転に応じて、荷重値は、バックスイングの状態からダウンスイングに移行すると増加し、インパクトの瞬間近傍で最大となる。そして、その後、フォロースルーでは荷重値は減少し、一定の値となる。
【０１４１】
図１４は、プレイヤがダウンスイングを開始した直後からの荷重コントローラ３６が検出する荷重値の時間変化を示した図である。図１４において、縦軸は荷重値の体重比率（荷重コントローラ３６が検出する荷重値をプレイヤの体重で除した値）を示し、横軸は時間を示す。なお、図１４では、縦軸の下方向ほど体重比率が大きくなっている。図１４に示すように、プレイヤがバックスイングで静止している状態（トップの状態）からダウンスイングに移行すると、荷重値が一時的に減少し、その後増加する。そして、インパクトの瞬間近傍では、荷重値が最大となる（ｔ＝ｔ０の時点）。その後、フォロースルーに移行すると再び荷重値は減少し、スイングを終了する直前において荷重値は最小となる（ｔ＝ｔ１）。
【０１４２】
上述のように、荷重コントローラ３６が検出する荷重値は、プレイヤのスイング動作中に変化し、インパクトの瞬間近傍で最大となる。従って、荷重コントローラ３６が検出する荷重値が最大となるタイミングを検出することによって、インパクトの瞬間を予測することができる。
【０１４３】
次に、重心速度が最大となるタイミングについて説明する。上述のように、重心速度とは、プレイヤの重心位置が変化する速度である。重心位置は、荷重コントローラ３６の台３６ａに加わる荷重の重心位置であり、各荷重センサ３６４ａ〜ｄ（図５参照）が検出する荷重値によって定められる。重心位置は、荷重コントローラ３６の台３６ａ上の位置に対応した、ＳＴ座標系の座標値によって表される。図１５Ａは、荷重コントローラ３６を上方から見た図である。図１５Ｂは、荷重コントローラ３６の台３６ａ上の位置に対応した、ＳＴ座標系を示す図である。図１５Ａにおいて、中心Ｏ’より上側（荷重センサ３６４ｂ及びｄが内包された側）の領域は、右打ちのプレイヤが左足を乗せる領域である。中心Ｏ’より下側（荷重センサ３６４ａ及びｃが内包された側）の領域は、右打ちのプレイヤが右足を乗せる領域である。図１５Ａ及びＢに示されるように、荷重コントローラ３６の台３６ａ上の位置は、ＳＴ座標系の位置と対応しており、例えば、台３６ａの中心Ｏ’は、ＳＴ座標系の原点Ｏに対応する。ここで、荷重センサ３６４ａが検出する荷重値をａ、荷重センサ３６４ｂが検出する荷重値をｂ、荷重センサ３６４ｃが検出する荷重値をｃ、荷重センサ３６４ｄが検出する荷重値をｄとした場合、重心のＳ軸座標値（ＳＧ）及びＴ軸座標値（ＴＧ）は、以下の式１及び式２によって算出される。
ＳＧ＝（（ｃ＋ｄ）―（ａ＋ｂ））×ｍ      ・・・（１）
ＴＧ＝（（ｂ＋ｄ）―（ａ＋ｃ））×ｎ      ・・・（２）
ここで、ｍ及びｎは定数であり、−１≦ＳＧ≦１、−１≦ＴＧ≦１である。このようにして算出される重心位置は、プレイヤの体重移動に応じて変化する。例えば、右打ちのプレイヤが左足に体重を掛けると、Ｔ軸座標値は正の値になり、プレイヤがつま先に体重を掛けると、Ｓ軸座標値は正の値となる。なお、上記重心位置の算出式は単なる一例であり、その他の方法によって重心位置を算出してもよい。
【０１４４】
プレイヤがスイング動作をする場合、腕の振りに応じて体重を移動させるため、上記重心位置は変化する。具体的には、右打ちのプレイヤは、バックスイングからダウンスイング、インパクト、フォロースルーへと状態が変化することに応じて、体重を右足から左足の方に移動させるようにして、スイングをする。この場合において、重心の移動速度は、バックスイングからダウンスイングまでは比較的ゆっくりとしているのに対して、インパクトの瞬間では、速くなる傾向にある。そして、インパクト後のフォロースルーでは、重心の移動速度は、再びゆっくりとなり、スイングの停止とともに重心の移動速度は０になる。これは、プレイヤはインパクトの瞬間に最大の力を加えようとするためと考えられる。プレイヤは、ボールを遠くに飛ばすため、自身の体重をボールに乗せるようにして腰を回転させ、体重を移動させる。従って、重心の移動速度は、インパクトの瞬間近傍で最大になる。
【０１４５】
図１６は、プレイヤがバックスイングを開始した直後からの重心位置の軌跡を示した図である。図１６に示すように、プレイヤがバックスイングを開始すると、重心位置は中心付近から右足の方に移動する。次に、プレイヤがスイングのトップの状態からダウンスイングを開始すると、重心位置は右足の方から左足の方に移動する。ダウンスイングを開始してからインパクトまでに重心速度は徐々に増加し、インパクトの瞬間近傍で最大となる。
【０１４６】
上述のように、理想的なスイングでは、インパクトの瞬間近傍で、荷重コントローラ３６が検出する荷重値と重心の移動速度（重心速度）とが最大となる。ここで、理想的なスイングとは、ボールがスライスもフックもせず、真っ直ぐに飛ぶようなスイングである。すなわち、理想的なスイングでは、荷重値が最大となるタイミングと重心速度が最大となるタイミングは、略一致し、これらのタイミングには所定の関係（後述する式３）が成り立つ。そして、理想的なスイングでボールを打つと、ボールは真っ直ぐに飛ぶ。
【０１４７】
しかしながら、実際のスイングでは、上記２つのタイミングが、理想的なスイングにおけるタイミングとずれる場合がある。例えば、振り遅れの場合、上記２つのタイミングに大きなずれが生じる。具体的には、荷重コントローラ３６が検出する荷重値が最大となっている時点では、プレイヤの腕（コントローラ２２）は最下点に達し（図１３Ｅ参照）インパクトの瞬間であると考えられる。しかしながら、この時点において、既に体重移動が十分に行われており、左足の方により重心が移動している場合、重心速度は既に最大値の時点を過ぎて減少している。つまり、このような場合、インパクトの瞬間においてプレイヤの体が前のめりになっており、プレイヤは振り遅れている。実際のゴルフでは、右打ちのプレイヤが振り遅れると、ボールはスライスする。逆に、振るタイミングが早い場合、インパクトの瞬間では、十分な体重移動が行われておらず、重心速度は、増加の途中である。すなわち、体重の移動に比べて振りが早い場合、重心速度が最大値を示している時点では、既にインパクトの瞬間が過ぎている。実際のゴルフでは、右打ちのプレイヤの振りが早い場合、ボールはフックする。
【０１４８】
以上のように、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、ボールがスライスするか否か、フックするか否かを判定することができる。従って、スライス量θｚを算出するために用いられる第１評価値は、以下の式３で算出される。
第１評価値＝荷重値が最大となる時間−重心速度が最大となる時間−所定値      （３）
なお、式３において、「所定値」は定数であってゴルフのスイングに特有なものである。したがって、テニスのラケットでボールを打つ動作、卓球のラケットでボールを打つ動作や野球のバットでボールを打つ動作についてプレイヤの動作を判定する場合には、例えば競技に応じて上記「所定値」を変化させることによって本発明を適用させることができる。式３で算出される第１評価値は、振り遅れの度合いを示す値であり、理想的なスイングにおけるインパクト時のタイミングからのずれを示す値である。第１評価値が０の場合、インパクトのタイミングは、理想のスイングでのタイミングであることを示す。第１評価値が０の場合、打球はストレートとなる。
【０１４９】
次に、第２評価値について説明する。第２評価値は、腕の振りの速さと腰の回転速度とのバランスを示す値であり、プレイヤのスイングが振り遅れか否かを示す値である。具体的には、第２評価値は、理想的なスイングにおける重心速度と荷重速度との関係からのずれに基づいて、算出される。ここで、荷重速度とは、荷重コントローラ３６が検出する荷重値（合計荷重値）の増加度合い（荷重のかかり度合い）である。図１７は、荷重速度を説明するための図である。図１７では、図１４と同様に縦軸はプレイヤの体重比率を示し、横軸は時間を示す。荷重速度は、所定期間における荷重値の変化量であり、図１７に示す破線矢印の傾きである。具体的には、荷重速度は、最大荷重値から所定フレーム時間前の点と当該最大荷重値を示す点とを結んだ直線の傾きである。
【０１５０】
ここで、理想的なスイング（ボールがストレートになるスイング）では、荷重速度と重心速度には所定の関係があると考えられる。具体的には、理想的なスイングでは、荷重速度と重心速度とは比例関係にあると考えられる。この理由を以下に示す。
【０１５１】
すなわち、荷重速度は、スイングの速さ（腕を振るスピード）と腰の回転速度に比例する。これは、スイングの速度が大きければ大きいほど、荷重の増加度合いが大きくなり、腰の回転速度が大きければ大きいほど、荷重の増加度合いが大きくなるからである。すなわち、スイングが速ければ速いほど、バックスイングを開始してからインパクトまでの時間が短く、腰の回転速度が大きければ大きいほど、バックスイングを開始してからインパクトまでの時間が短いからである。さらに、スイングが速ければ速いほど、荷重値は大きくなり、腰の回転速度が大きければ大きいほど、荷重値は大きくなる。従って、荷重速度は、スイングの速さ及び腰の回転速度に依存して大きくなる。また、理想的なスイングにおいては、スイングの速さに応じて、体重の移動も速くなる。すなわち、理想的なスイングにおいては、荷重速度と重心速度には所定の関係があると考えられ、具体的には、荷重速度と重心速度は比例関係にあると考えられる。
【０１５２】
スイングが遅く荷重速度が小さいのに重心の移動速度（重心速度）が大きいと、腕の振りが体重の移動速度に対して遅すぎるため、体だけが打球方向に流れてしまう。このため、インパクトの瞬間では、体の移動に比べて腕が遅れることになる。従って、この場合、振り遅れとなり打球はスライスする。逆に、スイングが速く荷重速度が大きいのに重心速度が小さいと、腕の振りが体重の移動速度に対して速すぎるため、腕だけで振ることになる。このため、インパクトの瞬間では、ボールを引っ張るようにして打球することになる。従って、この場合、打球はフックする。
【０１５３】
以上のように、荷重速度が重心速度に対して相対的に大きい場合は、打球はフックとなり、荷重速度が重心速度に対して相対的に小さい場合は、打球はスライスとなる。従って、打球がストレートになるためには、荷重速度と重心速度とは一定の関係があると考えられる。
【０１５４】
図１８は、理想的なスイングにおける荷重速度と重心速度との関係を示した図であり、第２評価値を示した図である。図１８において、縦軸は重心速度を示し、横軸は荷重速度を示す。図１８では、ストレートボールを打つことができるゴルファーが実際にストレートボールを打つようにスイングしたときの荷重速度と重心速度を示す点（Ｐ１０〜Ｐ１４）が直線（理想直線）上にプロットされている。また、図１８では、スライスボールを打つことができるゴルファーが実際にスライスボールを打つようにスイングしたときの点（Ｐ２０〜Ｐ２１）がプロットされている。さらに、図１８では、フックボールを打つことができるゴルファーが実際にフックボールを打つようにスイングしたときの点（Ｐ３０〜Ｐ３１）もプロットされている。図１８に示すように、理想的なスイング（ストレートボールとなるスイング）では、荷重速度の増加量と重心速度の増加量との比は一定となっている。しかしながら、スライスボールとなるスイングにおける荷重速度と重心速度を示す点は、理想直線よりも上側にプロットされる。また、フックボールとなるスイングにおける荷重速度と重心速度を示す点は、理想直線よりも下側にプロットされる。
【０１５５】
図１８に示す点Ｐ１０〜Ｐ１４の座標値を以下の表に示す。
【表１】
0005496591.tif 000002
なお、上記表１における荷重速度は、１フレーム時間（具体的には、１／６０秒）当たりのプレイヤの体重比率（荷重コントローラ３６が検出した荷重値をプレイヤの体重で除した値）の変化量を示す。従って、例えば、荷重速度が０．０１４の場合では、１秒間における体重比率の増加量は０．０１４×６０＝０．８４となる（すなわち、１秒間における荷重値の増加量は、プレイヤの体重×０．８４（ｋｇ）である）。また、上記表１における重心速度は、１フレーム時間当たりのＳＴ座標系における重心位置の移動量を示す。すなわち、上記表１における重心速度は、ある時点でのＳＴ座標系での点とその１フレーム時間後のＳＴ座標系での点との距離を示す。
【０１５６】
図１８及び上記表１に示すように、理想的なスイングでは上記理想直線の傾き（重心速度の増加量を荷重速度の増加量で除した値）は、略２となる。例えば、点Ｐ１０と点Ｐ１４とを結ぶ直線の傾きは、略１．９８であり、点Ｐ１０と点Ｐ１３とを結ぶ直線の傾きは、略２．０９である。また、理想直線の傾きを２とした場合の切片（重心速度を示す座標軸と理想直線との交点）は、略０．０７となる。例えば、点Ｐ１０を通る傾きが２の直線の切片は、０．０７１であり、点Ｐ１２を通る傾きが２の直線の切片は、０．０６８である。従って、理想的なスイング（ボールがストレートボールとなるスイング）における理想直線の傾きは略２であり、切片は略０．０７となる。なお、理想直線の傾きは、２である必要はなく、所定の範囲（例えば、１．７〜２．３の範囲）であってもよい。また、理想直線の切片は、０．０７である必要はなく、所定の範囲（例えば、０．０５８〜０．０８３程度）であってもよい。例えば、点Ｐ１１と点Ｐ１２とを結ぶ直線の傾きは、略１．６７であり、点Ｐ１１と点Ｐ１３とを結ぶ直線の傾きは、略２．３１である。傾きが１．７である場合において、上記各点を通る直線の切片を算出すると、例えば、点Ｐ１０を通る直線の切片は略０．０７５となり、点Ｐ１４を通る直線の切片は、略０．０９となる。そして、傾きが１．７である場合において、各点を通る直線の切片を平均すると、略０．０８３となる。また、傾きが２．３である場合において、上記各点を通る直線の切片を算出すると、例えば、点Ｐ１０を通る傾きが２．３の直線の切片は略０．０６７となり、点Ｐ１４を通る傾きが２．３の直線の切片は、略０．０５１となる。そして、傾きが２．３である場合において、各点を通る直線の切片を平均すると、略０．０５８となる。従って、理想直線は、傾きが１．７〜２．３程度の範囲で、切片が０．０５８〜０．０８３程度の範囲が好ましい（この場合、直線の傾きが大きいほど切片の値は小さくなる）。以上のように、理想的なスイングを行ったときの実測データに基づいて、理想的なスイングを示す様々な特徴（直線の傾きや切片の値、あるいは、現実的な荷重速度や重心速度の範囲等）を予め算出することができる。
【０１５７】
また、図１８では、理想直線から離れた位置に点Ｐがプロットされている。点Ｐは、重心速度が荷重速度に対して遅い（荷重速度が重心速度に対して速い）スイングを示した点である。図１８に示すように、スライス量θｚを算出するために用いられる第２評価値は、点Ｐと理想直線との距離として算出される。プレイヤが行ったスイングを示す点Ｐと理想直線との距離が長ければ長いほど、当該スイングは理想のスイングからはかけ離れており、ボールはフック又はスライスする。また、プレイヤが行ったスイングを示す点が、理想直線よりも上側に位置する場合、荷重速度が重心速度に対して相対的に遅いため、振り遅れとなり、打球はスライスする。逆に、プレイヤが行ったスイングを示す点が、理想直線よりも下側に位置する場合、荷重速度が重心速度に対して相対的に速いため、打球はフックする。
【０１５８】
以上のようにして、重心速度と荷重速度を算出し、理想直線との距離を求めることによって、第２評価値を算出する。上記理想直線と点Ｐとの距離を第２評価値とすることで、荷重速度と重心速度の双方をバランスして評価することができる。なお、第２評価値は、理想直線と点Ｐとの距離に限らず、理想直線と点Ｐの縦軸又は横軸方向のずれ（点Ｐを通り縦軸又は横軸に平行な直線と理想直線との交点と、点Ｐとの長さ）によって定められてもよい。なお、第２評価値は、後述するように、第１評価値の値に応じて補正される。
【０１５９】
次に、第３評価値について説明する。第３評価値は、重心位置の軌跡によって定められる値であり、プレイヤのスイングの仕方（スイングの軌道）を示す値である。具体的には、第３評価値は、重心位置の軌跡を示す曲線と所定の直線とによって囲まれる面積の値である。図１９は、重心位置の軌跡を示した図であり、第３評価値を示した図である。図１９において、図１６と同様、プレイヤがバックスイングを開始した直後からの重心位置の軌跡が示されている。図１９に示すように、第３評価値は、ダウンスイングの開始時点から所定時間前の重心位置と現在の重心位置とを結んだ直線と、重心位置の軌跡とによって囲まれる面積ＴｒａｃｋＳである。当該面積ＴｒａｃｋＳが大きい場合、ボールはスライスする傾向にある。この理由を次に示す。
【０１６０】
実際のゴルフにおいて、プレイヤが脇を開いたままスイングすると、ボールはスライスする。具体的にはこの場合、プレイヤのスイングの軌道は、いわゆるアウトサイドインとなり、打球はスライスする。プレイヤが、脇が開いたままスイングする場合、ゴルフクラブが体から離れた位置を通ることになるため、体重はつま先の方向にかかる。従って、重心位置の軌道は、より膨らんだ形（Ｓ軸正方向に膨らんだ形）となるため、上記面積ＴｒａｃｋＳは大きくなる。逆に、実際のゴルフにおいて、プレイヤが脇を閉じたままスイングすると、ボールはフックする。具体的にはこの場合、プレイヤのスイングの軌道は、いわゆるインサイドアウトとなり、打球はフックする。プレイヤが、脇を閉じたままスイングすると、ゴルフクラブが体から近い位置を通ることになるため、体重はかかとの方向にかかる。従って、重心位置の軌道は、Ｓ軸負方向に膨らんだ形状となるため、上記面積ＴｒａｃｋＳは小さくなる。なお、図１９に示す直線の右側を正の値、左側を負の値として上記面積は算出される。従って、重心位置の軌道がＳ軸負方向に膨らんだ形状となると、上記面積ＴｒａｃｋＳは負の値となる場合がある。以上のように、重心位置の軌跡と所定の直線によって囲まれる面積ＴｒａｃｋＳに応じて、打球がスライスするかフックするかを判定することができる。
【０１６１】
以上のようにして算出される第１〜第３評価値に基づいて、ボールのスライス量θｚは算出される。具体的には、ボールのスライス量θｚは、以下の式４を用いて算出される。
スライス量θｚ＝第１評価値＋第２評価値＋Ｋ３×第３評価値      （４）
ここで、Ｋ３は定数である。なお、詳細は後述するが、上記式４において、第２評価値は第１評価値の値に応じて補正される場合がある。従って、スライス量θｚは、当該補正後の第２評価値を用いて算出される場合がある。
【０１６２】
次に、ボールの飛距離や軌道に関連するその他のパラメータ（初速度の大きさ、打ち出し角度θｘ、右打ち出し角度θｙ）の算出方法について、説明する。ボールの初速度の大きさは、ゴルフクラブの種類（番手）とスイングパワー（ヘッドスピード）に基づいて算出される。スイングパワーは、コントローラ２２が検出する加速度の大きさ、上記荷重速度の大きさ、及び、上記重心速度の大きさに基づいて算出される。ボールの初速度の大きさとスイングパワーとの関係は、予めテーブルによって定められている。当該テーブルは、ゴルフクラブの番手に応じて、予め用意される。従って、スイングパワーが算出されると、上記テーブルを参照することによって、初速度の大きさが求められる。
【０１６３】
ボールの打ち出し角度θｘは、プレイヤオブジェクト１２０が使用しているゴルフクラブの種類（番手）と、スイングパワー（ヘッドスピード）に基づいて算出される。ボールの打ち出し角度θｘとスイングパワーとの関係は、予めテーブルによって定められている。当該テーブルは、ゴルフクラブの番手に応じて、予め用意される。
【０１６４】
また、ボールの右打ち出し角度θｙは、上記重心位置の軌跡に基づいて算出される。図２０は、右打ち出し角度θｙの算出方法を示した図である。図２０では、プレイヤがスイングを開始した時点からの重心位置の軌跡が示されている。具体的には、右打ち出し角度θｙは、インパクトの所定時間前における重心位置とインパクトの瞬間における重心位置とを結んだ直線Ｌ１が、打球方向となす角度である。すなわち、右打ち出し角度θｙは、上記直線Ｌ１と、インパクトの所定時間前における重心位置を通るＴ軸と平行な直線Ｌ２とがなす角度である。
【０１６５】
［ゲーム処理の詳細］
次に、図２１〜図２３を参照してゲーム装置１２において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置１２における処理において用いられる主なデータについて図２１を用いて説明する。図２１は、ゲーム装置１２のメインメモリ（外部メインメモリ４６又は内部メインメモリ４２ｅ）に記憶される主なデータを示す図である。
【０１６６】
図２１に示されるように、ゲーム装置１２のメインメモリのデータ記憶領域５００には、荷重値データ５０２、重心位置データ５０４、荷重速度データ５０６、重心速度データ５０８、加速度データ５１０、テーブルデータ５１２、第１評価値データ５１４、第２評価値データ５１６、第３評価値データ５１８、スイングパワーデータ５２０、スライス量データ５２２、及び、右打ち出し角度データ５２４が記憶される。なお、メインメモリには、図２１に示すデータの他、ゲームに登場する各種オブジェクト（プレイヤオブジェクト１２０やボール１２２）の画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム領域には、ゲーム処理を実行するゲームプログラムが記憶される。また、コントローラ２２及び荷重コントローラ３６からゲーム装置１２に、例えば１／２００秒毎に、操作データ（入力手段２６に対する入力データ、加速度センサ７４が検出する加速度を示すデータや荷重センサ３６４が検出する荷重を示すデータ）が送信されるため、ゲーム装置１２（ＣＰＵ４０）は、メインメモリに設けられたバッファ領域にこれらの操作データを一時的に格納する。
【０１６７】
荷重値データ５０２は、荷重コントローラ３６が検出する荷重値を示すデータの集合である。すなわち、荷重コントローラ３６の各荷重センサ３６４ａ〜３６４ｄが検出する荷重の合計値を示すデータの集合である。具体的には、荷重値データ５０２は、配列であり、配列の各要素には上記合計荷重値を示すデータが時系列に格納される。
【０１６８】
重心位置データ５０４は、各荷重センサ３６４ａ〜３６４ｄの荷重値から上記式１及び２によって算出される重心位置を示すデータの集合である。具体的には、重心位置データ５０４は、配列であり、配列の各要素には重心位置を示すデータが時系列に格納される。
【０１６９】
荷重速度データ５０６は、上記荷重速度を示すデータである。荷重速度は、荷重値データ５０２に基づいて、算出される。また、重心速度データ５０８は、上記重心速度を示すデータの集合である。具体的には、重心速度データ５０８は、配列であり、配列の各要素には重心速度を示すデータが時系列に格納される。重心速度は、重心位置データ５０４に基づいて算出される。
【０１７０】
加速度データ５１０は、コントローラ２２の加速度センサ７４が検出した加速度の大きさを示すデータの集合である。具体的には、加速度データ５１０は、配列であり、配列の各要素には加速度の大きさを示すデータが時系列に格納される。
【０１７１】
テーブルデータ５１２は、スイングパワー（ヘッドスピード）と、上記初速度の大きさと、上記打ち出し角度θｘとの関係を示したテーブルを示すデータの集合である。テーブルデータ５１２は、ゴルフクラブの番手毎に予め用意されたデータであり、光ディスク１８に予め記憶されている。例えば、ドライバ用のテーブルには、スイングパワー（ヘッドスピード）に応じた初速度の大きさや打ち出し角度θｘが記憶されている。
【０１７２】
第１評価値データ５１４は、上記第１評価値を示すデータである。また、第２評価値データ５１６は、上記第２評価値を示すデータであり、第３評価値データ５１８は、上記第３評価値を示すデータである。
【０１７３】
スイングパワーデータ５２０は、スイングパワーを示すデータである。スイングパワーは、上述したように、コントローラ２２が検出する加速度の大きさ、上記荷重速度の大きさ、及び、上記重心速度の大きさに基づいて算出される値である。スイングパワーは、例えば、０〜１．０の範囲の値を示す。
【０１７４】
スライス量データ５２２は、上記スライス量θｚを示すデータである。また、右打ち出し角度データ５２４は、上記右打ち出し角度θｙを示すデータである。
【０１７５】
次に、図２２を参照して、ゲーム装置１２によって実行されるゲーム処理について説明する。図２２は、ゲーム装置１２において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置１２の電源が投入されると、ゲーム装置１２のＣＰＵ４０は、ＲＯＭ／ＲＴＣ４８に記憶されている起動プログラムを実行し、これによって外部メインメモリ４６等の各ユニットが初期化される。次に、光ディスク１８に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ４０によって当該ゲームプログラムの実行が開始される。そして、ＣＰＵ４０は、初期設定を行う。初期設定では、ＣＰＵ４０は、ゲーム空間にプレイヤオブジェクト１２０やボール１２２等を配置したり、プレイヤオブジェクト１２０が所持するゴルフクラブの種類（番手）等を設定したりする。図２２に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図２２では、本発明に直接関連しないゲーム処理については記載を省略する。また、図２２に示すステップＳ１〜ステップＳ１１の処理ループは、１フレーム（例えば１／６０秒。フレーム時間という）毎に繰り返し実行される。
【０１７６】
まず、ステップＳ１において、ＣＰＵ４０は、コントローラ２２と荷重コントローラ３６に対するプレイヤの入力値を算出する。具体的には、ＣＰＵ４０は、メインメモリのバッファ領域を参照してコントローラ２２から送信された最新の加速度（ベクトル）を示すデータや入力手段２６に対する操作を示すデータを取得する。そして、ＣＰＵ４０は、取得した最新の加速度の大きさを算出し、加速度データ５１０としてメインメモリに記憶する。同様に、ＣＰＵ４０は、メインメモリのバッファ領域を参照して荷重コントローラ３６から送信された各荷重センサ３６４の荷重値を示すデータを取得する。そして、ＣＰＵ４０は、取得した各荷重センサ３６４の荷重値を合計して、当該合計荷重値を荷重値データ５０２としてメインメモリに記憶する。また、ＣＰＵ４０は、取得した各荷重センサ３６４の荷重値を上記式１及び式２に代入して、重心位置を算出し、重心位置データ５０４としてメインメモリに記憶する。さらに、ＣＰＵ４０は、重心位置データ５０４を参照して、算出した重心位置と１フレーム時間前の重心位置との距離を算出する。ＣＰＵ４０は、算出した距離を１フレーム時間で割ることにより、現時点での重心速度を算出し、重心速度データ５０８としてメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２の処理を実行する。
【０１７７】
ステップＳ２において、ＣＰＵ４０は、プレイヤがスイングを開始しているか否かを判定する。ここでの処理は、現在の状態が、既にスイングが開始されている状態か、又は、スイングが開始された直後の状態かを判定する処理である。スイングが開始されている状態とは、プレイヤがダウンスイングを開始してスイングを終了するまでの間の状態である（図１３Ｂ〜スイング終了までの間の状態）。また、スイングが開始された直後の状態とは、ダウンスイングが開始された直後の状態である（図１３Ｂの瞬間の状態）。ステップＳ２では、２つの判定が行われる。具体的には、ＣＰＵ４０は、現在スイングが行われている状態であるか否かを判定し（第１の判定）、スイングが行われている状態でない場合、スイングを開始したか否かを判定する（第２の判定）。ステップＳ２では、第１の判定結果が肯定の場合は、第２の判定を行わず、ステップＳ２の判定結果は肯定となる。第１の判定結果が否定の場合は、ＣＰＵ４０は、第２の判定を行い、第２の判定が肯定の場合、ステップＳ２の判定結果は肯定となる。第１の判定結果が否定で、かつ、第２の判定結果も否定の場合、ステップＳ２の判定結果は否定となる。
【０１７８】
より具体的には、ＣＰＵ４０は、第１の判定において、メインメモリを参照して、現在の状態が、スイングが行われている状態か否かを判定する。例えば、ＣＰＵ４０は、メインメモリに記憶されたスイング状態フラグ（当該フラグはスイングが開始されている状態を示す）が１を示す場合、現在の状態が、スイングが行われている状態であると判定する（第１の判定結果が肯定）。第１の判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ３の処理を実行する。一方、上記スイング状態フラグが０を示す場合（第１の判定結果が否定の場合）、ＣＰＵ４０は、第２の判定を行う。第２の判定は、プレイヤがスイングを開始したか否かの判定である。具体的には、ＣＰＵ４０は、第２の判定において、ステップＳ１で取得した最新の加速度の大きさが所定の閾値を超えているか否かを判定し、所定の閾値を超えている場合、プレイヤがスイングを開始したと判定する。ステップＳ１で取得した最新の加速度の大きさが所定の閾値以下の場合、ＣＰＵ４０は、プレイヤがスイングを開始していないと判定する。第２の判定結果が肯定の場合、ＣＰＵ４０は、上記スイング状態フラグを１に設定するとともに、スイングを開始してからの経過時間を示すスイング開始経過時間を０に設定して、メインメモリにそれぞれ記憶する。そして、ＣＰＵ４０は、次に、ステップＳ３の処理を実行する。一方、第２の判定結果が否定の場合、ステップＳ２の判定結果は否定となり、ＣＰＵ４０は、次にステップＳ１１の処理を実行する。
【０１７９】
すなわち、ステップＳ２においては、１回のストローク（プレイヤオブジェクト１２０がボール１２２を１回打つ動作を１回のストロークとする）において、プレイヤがコントローラ２２を所定の速さ（強さ）で振った場合は、スイングが開始されたと判定される。スイングが開始されたと判定されると、以降のループ処理（Ｓ１〜Ｓ１２の処理）においても、ステップＳ２の判定結果は、当該ストロークが終了して次のストロークに移行するまで常に肯定となる。一方、プレイヤがコントローラ２２を所定の速さ（強さ）で振っていない場合は、当該ストロークにおいて、未だスイングが開始されていないとして、以降のループ処理においてもスイングが開始されたか否かの判定が行われる。
【０１８０】
ステップＳ３において、ＣＰＵ４０は、プレイヤオブジェクト１２０がボール１２２をショットしたか否かを判定する。ショットしたか否かの判定は、スイングが開始されてから所定の時間が経過したか否かによって行われる。具体的には、ＣＰＵ４０は、メインメモリに記憶された上記スイング開始経過時間を参照して、スイングが開始された時点から所定の時間（ダウンスイング開始からインパクトまでに要するフレーム時間）が経過しているか否かを判定する。スイングが開始された時点から所定の時間が経過している場合、ＣＰＵ４０は、プレイヤオブジェクト１２０がボール１２２をショットしたと判定する。スイングが開始された時点から所定の時間が経過していない場合、ＣＰＵ４０は、上記スイング開始経過時間に１を加算して、メインメモリに記憶する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ４の処理を実行する。判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ１１の処理を実行する。
【０１８１】
なお、ステップＳ３において、上記所定の時間は、ステップＳ２での上記第２の判定（スイングを開始したか否かの判定）において判定結果が肯定とされたときの加速度の大きさに応じて定められる。具体的には、プレイヤがスイングを開始する時点で、コントローラ２２をより強く振ると、その時点での加速度の大きさは大きくなり、上記所定の時間はより小さく設定される。すなわち、プレイヤのコントローラ２２をより強く振ると、スイングを開始してからボール１２２をショットするまでの時間がより短く設定される。このスイングを開始してからボール１２２をショットするまでの時間の長さに応じて、画面に表示されるプレイヤオブジェクト１２０の動き（プレイヤオブジェクト１２０のアニメーション）が定められる。すなわち、この時間が短ければ短いほど、画面に表示されるプレイヤオブジェクト１２０のスイング動作が速くなる。
【０１８２】
ステップＳ４において、ＣＰＵ４０は、ショットカウンタが６未満か否かを判定する。ここで、ショットカウンタとは、プレイヤオブジェクト１２０がボール１２２をショット（インパクト）してからの経過時間（フレーム時間）である。当該ショットカウンタは、プレイヤオブジェクト１２０がボール１２２をショットした時点で初期的に０に設定されてメインメモリに格納される。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ５の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ９の処理を実行する。すなわち、後述するステップＳ５〜Ｓ８の処理は、インパクトの瞬間から６フレーム時間までの間実行される。
【０１８３】
ステップＳ５において、ＣＰＵ４０は、現時点での入力値を解析する。ここでは、ＣＰＵ４０は、コントローラ２２が検出した加速度に基づくパワー、荷重コントローラ３６が検出した荷重値の最大値、重心速度、及び、重心速度の最大値を算出する。具体的には、ＣＰＵ４０は、メインメモリの加速度データ５１０を参照して、スイング（ダウンスイング）開始から所定フレーム時間（例えば、２５フレーム時間）に検出された加速度の大きさ（絶対値）を積算することにより、コントローラ２２の加速度に基づくパワーを算出する。より具体的には、ＣＰＵ４０は、スイング開始から上記所定フレーム時間後までの各時点における加速度の大きさから所定の閾値（例えば、２．５）を引いた値をそれぞれ加算することにより、加速度に基づくパワーを算出する。これにより、プレイヤがスイングを開始してからコントローラ２２に加えられた力をスイングパワーに反映することができる。
【０１８４】
また、ＣＰＵ４０は、メインメモリの荷重値データ５０２を参照して、スイング開始から現時点までの最大荷重値及びそのフレーム時間を算出する。具体的には、ＣＰＵ４０は、荷重値データ５０２を参照して、荷重値データ５０２に含まれる各荷重値を探索することにより、最大荷重値とそのフレーム時間（配列のインデックス）を取得する。さらに、ＣＰＵ４０は、重心速度データ５０８に含まれる各重心速度を探索することにより、スイング開始から現時点までの最大重心速度及びそのフレーム時間を取得する。そして、ＣＰＵ４０は、各値（加速度に基づくパワー、最大荷重値とそのフレーム時間、及び、最大重心速度とそのフレーム時間）をメインメモリに記憶する。
【０１８５】
ステップＳ６において、ＣＰＵ４０は、ショットカウンタが０か否かを判定する。ここでの処理は、現時点がインパクトの瞬間か否かを判定する処理である。具体的には、ＣＰＵ４０は、メインメモリを参照して上記ショットカウンタが０と等しいか否かを判定する。判定結果が肯定の場合、ＣＰＵ４０は、次にステップＳ７の処理を実行する。一方、判定結果が否定の場合、ＣＰＵ４０は、次にステップＳ８の処理を実行する。
【０１８６】
ステップＳ７において、ＣＰＵ４０は、右打ち出し角度θｙを算出する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、現時点（インパクトの時点）より所定フレーム時間前（例えば、３０フレーム時間前）の重心位置から現時点での重心位置に向かう直線（図２０のＬ１）を算出する。また、ＣＰＵ４０は、現時点より所定フレーム時間前の重心位置を通ってＴ軸と平行な直線（Ｌ２）を算出する。そして、ＣＰＵ４０は、算出した２つの直線がなす角度（θｙ）を算出し、右打ち出し角度データ５２４としてメインメモリに記憶する。なお、右打ち出し角度θｙが所定の範囲（例えば、−４．０〜４．０）にない場合、ＣＰＵ４０は、算出した右打ち出し角度θｙを、上記所定の範囲の上限値（４．０）又は下限値（−４．０）に設定する。これにより、ＣＰＵ４０は、現実的でない右打ち出し角度θｙを排除することができる。次に、ＣＰＵ４０は、ステップＳ８の処理を実行する。
【０１８７】
ステップＳ８において、ＣＰＵ４０は、各パラメータの算出処理を実行する。ステップＳ８では、ＣＰＵ４０は、上記スイングパワー、打ち出し角度θｘ、及び、スライス量θｚを算出する。ステップＳ８における処理の詳細を、図２３を用いて説明する。図２３は、各パラメータの算出処理（Ｓ８）の詳細を示すフローチャートである。
【０１８８】
まず、ステップＳ２１において、ＣＰＵ４０は、上記荷重速度及び荷重速度に基づくパワーを算出する。荷重速度に基づくパワーとは、上記荷重速度から算出される値であり、後述するスイングパワーを構成する要素の１つである。具体的には、ＣＰＵ４０は、まず、メインメモリを参照して、ステップＳ５で取得した最大荷重のフレーム時間から所定フレーム時間前（例えば、５フレーム時間前）の荷重値を取得する。次に、ＣＰＵ４０は、ステップＳ５で取得した最大荷重値から上記所定フレーム時間前の荷重値を引いた値を、当該所定フレーム時間で割ることにより荷重速度を算出する。そして、ＣＰＵ４０は、算出した荷重速度を荷重速度データ５０６として、メインメモリに記憶する。また、ＣＰＵ４０は、算出した荷重速度に所定の係数を掛けた値を、荷重速度に基づくパワーとして算出し、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２２の処理を実行する。
【０１８９】
ステップＳ２２において、ＣＰＵ４０は、上記重心速度及び重心速度に基づくパワーを算出する。重心速度に基づくパワーとは、上記重心速度から算出される値であり、後述するスイングパワーを構成する要素の１つである。具体的には、ＣＰＵ４０は、メインメモリの重心速度データ５０８を参照して、現時点での重心速度を取得する。また、ＣＰＵ４０は、取得した重心速度に所定の係数を掛けた値を、重心速度に基づくパワーとして算出し、メインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２３の処理を実行する。
【０１９０】
ステップＳ２３において、ＣＰＵ４０は、上記第１評価値を算出する。上述したように、第１評価値は、荷重値が最大となる時間と重心速度が最大となる時間とに基づいて算出される値であり、上記式３を用いて算出される。具体的には、ＣＰＵ４０は、ステップＳ５で取得した最大荷重のフレーム時間から、ステップＳ５で取得した最大重心速度のフレーム時間及び所定の値（例えば、２）を引いた値を、上記第１評価値として算出する。そして、ＣＰＵ４０は、算出した第１評価値を第１評価値データ５１４としてメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２４の処理を実行する。
【０１９１】
ステップＳ２４において、ＣＰＵ４０は、上記第２評価値を算出する。具体的には、ＣＰＵ４０は、荷重速度を第１軸とし重心速度を第２軸とする座標系において、予めメインメモリに記憶された理想直線（図１８に示す理想直線）から、ステップＳ２１で算出した荷重速度とステップＳ２２で算出した重心速度とを各軸の座標値とする点までの距離を算出する。そして、ＣＰＵ４０は、当該点が理想直線よりも上側に位置する場合（スライスの場合）、算出した距離を第２評価値データ５１６としてメインメモリに記憶する。ＣＰＵ４０は、当該点が理想直線よりも下側に位置する場合（フックの場合）、算出した距離に−１を乗じた値を第２評価値データ５１６としてメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２５の処理を実行する。
【０１９２】
ステップＳ２５において、ＣＰＵ４０は、上記第３評価値（重心位置の軌跡を示す曲線と所定の直線によって囲まれる面積ＴｒａｃｋＳ）を算出する。具体的には、ＣＰＵ４０は、重心位置データ５０４を参照して、ダウンスイングの開始から所定フレーム時間前（例えば、３０フレーム時間前）における重心位置と、現時点における重心位置とを結ぶ直線を算出する。そして、ＣＰＵ４０は、算出した直線と重心位置データ５０４に含まれる各重心位置の軌跡とによって囲まれる面積ＴｒａｃｋＳを算出する。ＣＰＵ４０は、算出した面積ＴｒａｃｋＳを、第３評価値データ５１８としてメインメモリに記憶する。図１９に示すように、当該面積ＴｒａｃｋＳは、上記直線より右側（Ｓ軸正方向）の面積を正、上記直線より左側（Ｓ軸負方向）の面積を負の値として、算出される。従って、図１９に示すような重心位置の軌跡の場合、上記面積ＴｒａｃｋＳは正の値となるが、重心位置の軌跡が左側（Ｓ軸負方向）に膨らんだ形状となっている場合は、上記面積ＴｒａｃｋＳは負の値となる。次に、ＣＰＵ４０は、ステップＳ２６の処理を実行する。
【０１９３】
ステップＳ２６において、ＣＰＵ４０は、スイングパワーを算出する。ＣＰＵ４０は、コントローラ２２が検出した加速度、上記荷重速度、及び、上記重心速度に基づいて、スイングパワーを算出する。具体的には、ＣＰＵ４０は、ステップＳ５で算出したコントローラ２２の加速度に基づくパワーと、ステップＳ２１で算出した荷重速度に基づくパワーと、ステップＳ２２で算出した重心速度に基づくパワーとの和を算出し、スイングパワーデータ５２０としてメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ２７の処理を実行する。
【０１９４】
ステップＳ２７において、ＣＰＵ４０は、上記打ち出し角度θｘを算出する。具体的には、ＣＰＵ４０は、メインメモリのテーブルデータ５１２を参照して、ステップＳ２６で算出したスイングパワーに基づいて打ち出し角度θｘを算出する。上述したように、テーブルデータ５１２には、スイングパワーと打ち出し角度θｘとの関係がテーブルで記憶されているため、ＣＰＵ４０は、当該テーブルを参照することによって、ステップＳ２６で算出したスイングパワーから打ち出し角度θｘを算出することができる。次に、ＣＰＵ４０は、ステップＳ２８の処理を実行する。
【０１９５】
ステップＳ２８において、ＣＰＵ４０は、上記スライス量θｚを算出する。具体的には、ＣＰＵ４０は、ステップＳ２３で算出した第１評価値、ステップＳ２４で算出した第２評価値、及び、ステップＳ２５で算出した第３評価値を上記式４に代入することにより、スライス量θｚを算出する。ＣＰＵ４０は、算出したスライス量θｚをスライス量データ５２２として、メインメモリに記憶する。
【０１９６】
なお、ステップＳ２８において、ＣＰＵ４０は、上記第２評価値の値を第１評価値の値に応じて補正する。例えば、ＣＰＵ４０は、以下の式５を用いて第２評価値を補正する。
補正後の第２評価値＝（１−第１評価値／５）×補正前の第２評価値      （５）
補正前の第２評価値とは、ステップＳ２４で算出した第２評価値である。上記式５に示すように、例えば、第１評価値が０の場合、補正後の第２評価値と補正前の第２評価値は等しい。しかしながら、例えば、第１評価値が１の場合、補正後の第２評価値は補正前の第２評価値の０．８倍となる。これは、第１評価値の絶対値が大きい場合、すなわち、インパクトのタイミングが理想と大きくずれている場合、スライス量θｚに与える第２評価値の影響を小さくするための処理である。例えば、第１評価値が正の値で大きい場合、荷重値が最大となる時間が、重心速度が最大となる時間よりも遅いため、プレイヤのスイングは、理想のスイングよりも大きく振り遅れている。このようにプレイヤのスイングが大きく振り遅れている場合は、第２評価値の値に拘わらず、スライスすると考えられる。すなわち、インパクトのタイミングが大きくずれている場合は、ボールはストレートになる可能性は低い。従って、第１評価値の大きさに応じて、第２評価値を補正する。これにより、インパクトのタイミングが合っている場合（第１評価値が０に近い場合）に、第２評価値（すなわち、理想的なスイングにおけるスイングの速さと腰の回転速度との関係からのずれ）を考慮することができる。逆に、インパクトのタイミングが合っていない場合（第１評価値の絶対値が大きい場合）、第２評価値を考慮せず、スイングの判定を行うことができる。次に、ＣＰＵ４０は、各パラメータの算出処理を終了する。
【０１９７】
図２２に戻り、ステップＳ９において、ＣＰＵ４０は、弾道シミュレーションの処理を実行する。具体的には、ＣＰＵ４０は、ステップＳ８で算出した各パラメータを用いて、ボール１２２に初速度（初速度の大きさと方向）及び回転（上記スライス量やバックスピン量）を加える。そして、ＣＰＵ４０は、例えば、ルンゲ＝クッタ法を用いて、ボール１２２の弾道に関する運動方程式を解くことにより、ボール１２２のゲーム空間における位置を算出する。なお、バックスピン量（ボール１２２の回転量）は、上記スイングパワー及びゴルフクラブの種類（番手）に応じて、定められる。次に、ＣＰＵ４０は、ステップＳ１０の処理を実行する。
【０１９８】
ステップＳ１０において、ＣＰＵ４０は、ショットカウンタに１を加える。具体的には、ＣＰＵ４０は、メインメモリのショットカウンタに１を加えて、再びメインメモリに記憶する。次に、ＣＰＵ４０は、ステップＳ１１の処理を実行する。
【０１９９】
ステップＳ１１において、ＣＰＵ４０は、描画処理を実行する。具体的には、ＣＰＵ４０は、上記スイング開始経過時間に応じてプレイヤオブジェクト１２０がスイングする様子を表示したり、ステップＳ９で算出したボール１２２のゲーム空間における位置にボール１２２を配置して、画面に表示したりする。また、ＣＰＵ４０は、背景の画像等を画面に表示する。これにより、ボール１２２がゲーム空間を飛んでいく様子やプレイヤオブジェクト１２０がスイングする様子（例えば、図１３Ｂや図１３Ｃに示すプレイヤオブジェクト１２０の画像）が画面に表示される。次に、ＣＰＵ４０は、ステップＳ１２の処理を実行する。
【０２００】
次に、ステップＳ１２において、ＣＰＵ４０は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップＳ１に戻って、ゲーム処理を繰り返す。例えば、ＣＰＵ４０は、プレイヤによってゲーム処理の終了を示すコントローラ２２のボタン等が押された場合、ゲーム処理を終了する。以上で、本実施形態に係るゲーム処理は終了する。
【０２０１】
上記フローでは、インパクトの瞬間から６フレーム時間までの間、上記ステップＳ５〜Ｓ８までの処理を実行し、各パラメータを算出した。このように、インパクトの瞬間のみならず、インパクトから所定フレーム時間の間各パラメータを算出することにより、プレイヤのスイングをより正確にゲーム処理に反映することができる。すなわち、最大荷重を検出する場合、直前のフレーム時間における荷重値よりも現在の荷重値が小さくなったことを検出することによって、最大荷重を認識することができるため、現時点では最大荷重値であるか否かを判定することはできない。プレイヤのスイングの速さは最大荷重値に左右されるため、プレイヤのスイングの速さを正確に求めるためには、最大荷重値を正確に求める必要がある。従って、インパクトの瞬間のみではなく、インパクト後の所定期間、各パラメータを算出することにより、プレイヤのスイングをより正確にボールの弾道に反映することができる。なお、他の実施形態では、インパクトの瞬間のみ各パラメータを算出し、算出したパラメータでその後の弾道シミュレーションを行ってもよい。
【０２０２】
また、上記フローでは、インパクトの瞬間にのみステップＳ７において右打ち出し角度θｙを算出した。これは、インパクト直後の数フレーム時間においては、ボールの弾道はほぼ右打ち出し角度θｙによって定められるからである。従って、インパクト直後の数フレーム時間において右打ち出し角度θｙが変化すると、ボールが震えるように動作するため、違和感が生じる。従って、このようなボールの弾道を防止するため、右打ち出し角度θｙは、インパクトの瞬間にのみ算出される。なお、他の実施形態では、インパクト直後の数フレーム時間において、上記右打ち出し角度θｙを算出してもよい。この場合、各フレーム時間で算出した右打ち出し角度θｙを補完することによって、ボールの弾道を違和感のないようにすることが好ましい。
【０２０３】
以上のように、本実施形態では、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、理想的なスイングにおけるインパクト時のタイミングからのずれを示す第１評価値を算出する。また、所定期間における荷重のかかり度合いを示す荷重速度と、重心位置の移動速度を示す重心速度とに基づいて、理想的なスイングにおける荷重速度と重心速度との関係からのずれを示す第２評価値を算出する。さらに、本実施形態では、重心位置の軌跡によって囲まれる面積を示す第３評価値を算出する。そして、算出した第１〜第３評価値に基づいて、ボール１２２のスライス量θｚを算出することができる。これにより、ショットされた後のボール１２２がスライスするか否か、又は、フックするか否かを判定することができる。
【０２０４】
なお、本実施形態では、第１〜第３評価値を用いてスライス量θｚを算出したが、他の実施形態では、これらの評価値のうち何れかのみを用いてスライス量を算出してもよい。例えば、第１評価値又は第２評価値のみに基づいて、ボール１２２がスライスするか否か、又は、フックするか否かを判定してもよい。また、第３評価値のみに基づいて、ボール１２２がスライスするか否か等を判定してもよい。
【０２０５】
また、本実施形態ではゴルフ練習用のゲームについて説明したが、プレイヤが仮想のゴルフコースを楽しむゴルフゲームであってもよい。また、他の実施形態では、例えば、テニスや野球、卓球等の他のゲームにも本発明が適用されてもよい。
【０２０６】
また、本実施形態では、荷重値が最大となるタイミングと重心速度が最大となるタイミングとに基づいて、プレイヤの動作を判定した（プレイヤのスイングに応じてボールがスライスするか否か等を判定した）。他の実施形態では、荷重値が所定の条件を満たすタイミングと、重心速度が所定の条件を満たすタイミングとに基づいて、プレイヤの動作を判定してもよい。例えば、テニスのサーブにおいては、プレイヤはラケットを振り上げてから振り下ろす動作を行い、テニスボールを打つ。プレイヤがラケットを振り上げる場合には、プレイヤは体重を後方に移動させ、プレイヤがラケットを振り下ろす場合には、プレイヤは体重を前方に移動させると考えられる。従って、その間重心速度は変化し、プレイヤがテニスボールを打つタイミングにおいては、重心速度は所定の条件を満たす（例えば、重心速度が最大或いは極大になったり、最大から所定の値だけ小さくなったり、極小となったりする）。一方、プレイヤがラケットを振り上げてから振り下ろす際には、荷重コントローラ３６が検出する荷重値は、プレイヤの体重よりも小さくなると考えられる。すなわち、テニスボールを打つタイミングにおいては、荷重値は最大とはならず、荷重値は所定の条件を満たす（例えば、荷重値が最小値となったり、あるいは最大値から所定の値だけ小さい値になったりする）。テニスのサーブにおいては、ボールを打つタイミングにおける体重移動によって、ボールがネットに引っかかったり（振りが早い）、ボールがオーバーしたり（振り遅れ）する場合がある。従って、荷重値が所定の条件を満たすタイミングと重心速度が所定の条件を満たすタイミングとには所定の関係があると考えられるため、これらのタイミングに基づいて、プレイヤの動作を判定してもよい。
【０２０７】
また、プレイヤが体重移動を伴って、腕を振ったり、腰を回転させたり、或いは、頭部を振ったりするような動作を判定することにも、本発明は適用可能である。すなわち、道具を用いてボール等のオブジェクトを打つ動作に限らず、例えば、野球の投球動作やバレーボールにおけるサーブやレシーブ動作に対する判定が行われてもよい。つまり、プレイヤが腕等を振ることによって荷重コントローラ３６が検出する荷重値が変化し、かつ、プレイヤの体重移動によって重心位置が変化するような動作を、上述した方法により判定することができる。
【０２０８】
また、本実施形態では、上記第２評価値は、予め定められた荷重速度と重心速度とを表す理想直線からの距離に基づいて、算出された。他の実施形態では、算出された荷重速度と重心速度とに基づいて、第２評価値が算出されてもよい。例えば、算出した荷重速度と重心速度との比と、予め定められた値とを比較することにより、第２評価値が定められてもよい。すなわち、第２評価値は、予め定められた荷重速度及び重心速度の関係（当該関係は、式によって定められてもよいし、比や積によって定められる値であってもよい）と、算出した荷重速度及び重心速度の関係とを比較することによって、算出されてもよい。また、他の実施形態では、予め定められた荷重速度と重心速度との関係は、直線に限らず、曲線であってもよい。
【０２０９】
また、本実施形態では、荷重の増加度合い（荷重の増加の度合い）を示す荷重速度の値と上記重心速度の値とに基づいて、第２評価値を算出した。他の実施形態では、荷重速度は、荷重の減少の度合いであってもよい。また、他の実施形態では、重心速度の方向をも考慮してもよい。例えば、ある時点における重心速度の方向（重心の移動方向）と荷重速度の値とが所定の関係を満たすか否かに応じて、第２評価値が算出されてもよい。
【０２１０】
以上のように、荷重コントローラ３６が検出する荷重値の時間変化に関する荷重情報と、重心位置の移動速度を示す重心速度に関する情報との関係に基づいて、プレイヤの動作を判定してもよい。ここで、荷重情報とは、荷重の最大値（又は最小値）やその値となる時間、荷重の極大値（又は極小値）やその値となる時間、荷重値が所定の値となる場合の時間、又は、上記荷重速度等であってもよい。また、重心速度に関する情報とは、重心速度の値や方向、最大（又は最小）重心速度やその値となる時間等であってもよい。
【０２１１】
また、本実施形態では、上記第３評価値を重心位置の軌跡によって囲まれる面積として算出したが、他の実施形態では、重心位置の軌跡の形状（例えば、右又は左側への膨らみ具合）によって、上記第３評価値を算出してもよい。例えば、第３評価値は、ダウンスイング開始から所定フレーム時間前の点におけるＳ座標値と、重心位置の最大のＳ座標値との差に基づいて定められてもよい。当該差が大きい場合、重心位置の軌跡はＳ軸正方向に大きく膨らんでいるため、右打ちのプレイヤの場合では、ボールはスライスとなる。
【０２１２】
また、本実施形態では、プレイヤがダウンスイングを開始した時点から所定の時間が経過したか否かによって、プレイヤオブジェクト１２０がボール１２２をショットしたか否かを判定した。すなわち、本実施形態では、コントローラ２２の加速度の大きさが所定の閾値を越えた場合、プレイヤがダウンスイングを開始したと判定し、ダウンスイング開始後、所定の時間が経過した時点をインパクト時点として定めた。他の実施形態では、コントローラ２２の加速度の大きさ及び方向が所定の条件を満たした場合（例えば、加速度の大きさが所定の閾値未満になった場合や加速度の方向が変化した場合等）、スイングを開始したと判定してもよい。また、他の実施形態では、コントローラ２２の入力手段（例えば、Ａボタン２６ｄ）への入力があったか否かによって、プレイヤオブジェクト１２０のダウンスイングを開始させてもよく、ダウンスイング開始から所定の時間が経過した時点をインパクト時点として定めてもよい。また、コントローラ２２の姿勢や加速度によって、インパクトの時点を定めてもよい。例えば、トップの状態（図１３Ａの状態）ではプレイヤは略静止しているため、コントローラ２２の姿勢を加速度センサ７４で検出することにより、ゲーム装置１２は、スイングの状態がトップの状態であることを検出することができる。当該姿勢からプレイヤがダウンスイングを開始すると、コントローラ２２には加速度が生じるため、ゲーム装置１２は、当該加速度を検出することでダウンスイングの開始を検出することができる。そして、インパクトの付近でコントローラ２２に生じる加速度は最大となると考えられるため、ゲーム装置１２は、当該加速度が最大となった時点をインパクトの時点として定めることもできる。この場合において、加速度センサ７４が検出できる加速度の最大値は、プレイヤによるコントローラ２２の振り動作によって生じる加速度よりも十分に大きいことが好ましい。
【０２１３】
また、本実施形態では、４つの荷重センサ３６４を備えた荷重コントローラ３６を用いて上記処理を行った。他の実施形態では、荷重センサは４つである必要はなく、３つであってもよいし、５つ以上であってもよい。また、４つの荷重センサ３６４は、荷重コントローラ３６の四隅に配置される必要はなく、どのように配置されてもよい。すなわち、荷重センサの数や配置はどのようなものでもよく、荷重センサの幾何学的な配置に固有の補正を行うことによって、重心位置を算出することができる。
【０２１４】
また、本実施形態では、各荷重センサ３６４からの検出値を示すデータがゲーム装置１２に送信されることとした。他の実施形態では、荷重コントローラ３６が、各荷重センサ３６４が検出する荷重の合計値と重心位置とを算出し、算出した合計値と重心位置とをゲーム装置１２に送信してもよい。すなわち、荷重コントローラ３６が算出した合計荷重値と重心位置とを含む信号をゲーム装置１２が受信し、ゲーム装置１２が受信した信号からこれらの情報を取得してもよい。
【０２１５】
また、本発明のゲームプログラムは、光ディスク１８等の外部記憶媒体を通じてゲーム装置１２に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置１２に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置１２内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体（コンピュータ読み取り可能な記憶媒体）としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【０２１６】
また、他の実施形態では、上述した動作の判定プログラムは、ゲーム装置以外の情報処理装置、例えば、動作判定用の専用装置（例えば、ゴルフのスイング判定等のトレーニング用装置）や荷重を測定可能な入力装置を備えるパーソナルコンピュータ等において実行されてもよい。
【０２１７】
また、本実施形態においては、ゲーム装置１２のＣＰＵ４０がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置１２が備える専用回路によって行われてもよい。
【符号の説明】
【０２１８】
１０  ゲームシステム
１２  ゲーム装置
１８  光ディスク
２２  コントローラ
３４  モニタ
３４ａ  スピーカ
３６  荷重コントローラ
３６４  荷重センサ
４０  ＣＰＵ
４２  システムＬＳＩ
４２ａ  入出力プロセッサ
４２ｂ  ＧＰＵ
４２ｃ  ＤＳＰ
４２ｄ  ＶＲＡＭ
４２ｅ  内部メインメモリ
４４  フラッシュメモリ
４６  外部メインメモリ
４８  ＲＯＭ／ＲＴＣ
５２  無線コントローラモジュール
５４  ディスクドライブ
５６  ＡＶ  ＩＣ
５８  ＡＶコネクタ
６０  拡張コネクタ
７４  加速度センサ
１００  マイコン
１０２  ＡＤコンバータ
１０４  ＤＣ−ＤＣコンバータ
１０６  無線モジュール
１０８  増幅器
１２０  プレイヤオブジェクト
１２２  ボール
【図１】
0005496591.tif 000003
【図２】
0005496591.tif 000004
【図３】
0005496591.tif 000005
【図４】
0005496591.tif 000006
【図５】
0005496591.tif 000007
【図６】
0005496591.tif 000008
【図７】
0005496591.tif 000009
【図８】
0005496591.tif 000010
【図９】
0005496591.tif 000011
【図１０】
0005496591.tif 000012
【図１１】
0005496591.tif 000013
【図１２】
0005496591.tif 000014
【図１３Ａ】
0005496591.tif 000015
【図１３Ｂ】
0005496591.tif 000016
【図１３Ｃ】
0005496591.tif 000017
【図１３Ｄ】
0005496591.tif 000018
【図１３Ｅ】
0005496591.tif 000019
【図１４】
0005496591.tif 000020
【図１５Ａ】
0005496591.tif 000021
【図１５Ｂ】
0005496591.tif 000022
【図１６】
0005496591.tif 000023
【図１７】
0005496591.tif 000024
【図１８】
0005496591.tif 000025
【図１９】
0005496591.tif 000026
【図２０】
0005496591.tif 000027
【図２１】
0005496591.tif 000028
【図２２】
0005496591.tif 000029
【図２３】
0005496591.tif 000030