(57)【要約】【課題】入力装置の振りの強さを算出する。【解決手段】ゲーム装置は、少なくとも所定の２軸方向に関する入力装置の加速度ベクトルを示す加速度データを繰り返し取得する。次に、所定の振り期間中に取得された各加速度データにより示される各加速度ベクトルについて、当該加速度ベクトルの変化量を算出する。次に、算出された各変化量を累積することによって得られる累積値が算出される。入力装置の振りの強さは、累積値に基づいて算出される。ゲーム処理は、算出された振りの強さを用いて実行される。【選択図】図１３
2008125549.tif 000002
【特許請求の範囲】
【請求項１】
入力装置の動きに応じてゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記入力装置の少なくとも所定の２軸方向に生じる加速度を繰り返し取得する取得ステップと、
所定の期間中に前記取得ステップで取得された各加速度の変化量を算出する変化量算出ステップと、
前記算出された各変化量を累積することによって得られる累積値を算出する累積値算出ステップと、
前記累積値に基づいて前記入力装置の振りの強さを算出する振り強さ算出ステップと、
前記算出された振りの強さを用いて前記ゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項２】
前記入力装置には所定のボタンが設けられており、
前記ゲームプログラムは、前記所定のボタンの押下状況に基づいて前記所定の期間を設定する期間設定ステップを前記コンピュータにさらに実行させる、請求項１に記載のゲームプログラム。
【請求項３】
前記ゲームプログラムは、前記加速度の大きさが所定の大きさ以上となっている期間を前記所定の期間として設定する期間設定ステップを前記コンピュータにさらに実行させる、請求項１に記載のゲームプログラム。
【請求項４】
前記累積値算出ステップにおいて、前記コンピュータは、前記変化量が算出される度に、前記変化量が基準値よりも小さい場合には累積値が前回よりも小さくなるように累積値を算出し、
前記振り強さ算出ステップにおいて、前記コンピュータは、前記所定の期間中に算出された累積値の最大値が大きいほど大きくなるように振りの強さを算出する、請求項１に記載のゲームプログラム。
【請求項５】
前記累積値算出ステップにおいて、前記コンピュータは、前記変化量が算出される度に、現在の累積値より所定量減じた値に当該変化量を加算することにより新たな累積値を算出し、
前記振り強さ算出ステップにおいて、前記コンピュータは、前記所定の期間中に算出された累積値の最大値が大きいほど大きくなるように振りの強さを算出する、請求項１に記載のゲームプログラム。
【請求項６】
前記所定量とは、現在の累積値の所定比率となる量である、請求項５に記載のゲームプログラム。
【請求項７】
前記入力装置は、少なくとも前記所定の２軸方向に関する加速度を検出する加速度センサを備え、
前記取得ステップにおいて、前記コンピュータは、前記加速度センサから出力されたデータにより示されるベクトルに追従して変化するベクトルを、取得すべき加速度として算出する、請求項１に記載のゲームプログラム。
【請求項８】
前記入力装置は、少なくとも前記所定の２軸方向に関する加速度を検出する加速度センサを備え、
前記取得ステップにおいて、前記コンピュータは、現在の加速度を示すベクトルと前記加速度センサから出力されたデータにより示されるベクトルとの内分ベクトルを、新たに取得すべき加速度として算出する、請求項１に記載のゲームプログラム。
【請求項９】
前記所定の期間中に取得された各加速度の大きさを算出する大きさ算出ステップを前記コンピュータにさらに実行させ、
前記振り強さ算出ステップにおいて、前記コンピュータは、前記累積値と前記加速度の大きさとに基づいて前記入力装置の振りの強さを算出する、請求項１または請求項７または請求項８に記載のゲームプログラム。
【請求項１０】
前記振り強さ算出ステップにおいて、前記コンピュータは、前記所定の期間中に算出された前記加速度の大きさの最大値と前記累積値とに基づいて前記入力装置の振りの強さを算出する、請求項９に記載のゲームプログラム。
【請求項１１】
前記変化量算出ステップにおいて、前記コンピュータは、最後に取得された加速度を示す加速度ベクトルと、１つ前に取得された加速度を示す加速度ベクトルとの差分ベクトルの大きさを前記変化量として算出する、請求項１に記載のゲームプログラム。
【請求項１２】
入力装置の動きに応じてゲーム処理を行うゲーム装置であって、
前記入力装置の少なくとも所定の２軸方向に生じる加速度を繰り返し取得する取得手段と、
所定の期間中に前記取得手段によって取得された各加速度の変化量を算出する変化量算出手段と、
前記算出された各変化量を累積することによって得られる累積値を算出する累積値算出手段と、
前記累積値に基づいて前記入力装置の振りの強さを算出する振り強さ算出手段と、
前記算出された振りの強さを用いて前記ゲーム処理を実行するゲーム処理手段とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、入力装置自体の動きに応じてゲーム処理を行うゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来、入力装置自体の動きに応じてゲーム処理を行うゲーム装置として特許文献１に記載の技術がある。特許文献１では、プレイヤは圧電ブザー等を利用した加速度センサが設けられたバット型入力装置が開示されている。プレイヤは、このバット型入力装置を実際に振ることによってゲーム操作を行う。ゲーム装置は、バット型入力装置の速度（移動速度または回転速度）を検出し、検出された速度をゲーム内での打球の移動に反映させる。これによって、バット型入力装置のスイングの速度に応じて、ゲーム内でのボールの飛距離や方向の変化を生じさせることができる。
【特許文献１】特開２００１−１０４６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１では、ゲーム装置は、入力装置の速度がピークになった時点の値を用いて、ボールの移動を決定する（ステップＳ７参照）。しかし、ある時点の入力装置の速度のみでは、入力装置の振りの強さを算出することはできない。なぜなら、振りの強さとは、入力装置のピークの速度の他に、入力装置を振ったときのストロークの長さ（時間的および距離的な長さ）等の要素によっても決められるものだからである。例えば、上記特許文献１の方法では、入力装置を振ったときのストロークが長くても短くても、速度のピーク値が同じであれば同じ結果となってしまい、振りの強さをゲームに反映させることはできない。
【０００４】
それ故、本発明の目的は、入力装置の振りの強さを算出することができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、入力装置（コントローラ５）の動きに応じてゲーム処理（図１１）を行うゲーム装置（３）のコンピュータ（ＣＰＵ１０）に実行させるゲームプログラム（６０）である。ゲームプログラムは、取得ステップ（Ｓ３１）と、変化量算出ステップ（Ｓ２２）と、累積値算出ステップ（Ｓ２３）と、振り強さ算出ステップ（Ｓ２９）と、ゲーム処理ステップ（Ｓ３）とをコンピュータに実行させる。取得ステップにおいては、コンピュータは、入力装置の少なくとも所定の２軸方向に生じる加速度（加速度ベクトルＡまたは処理用加速度ベクトルａ）を繰り返し取得する。変化量算出ステップにおいては、所定の期間（振り期間）中に取得ステップで取得された各加速度の変化量（ａｓ）を算出する。累積値算出ステップにおいては、算出された各変化量を累積することによって得られる累積値（ｓ）を算出する。振り強さ算出ステップにおいては、累積値に基づいて入力装置の振りの強さ（ｐ）を算出する。ゲーム処理ステップにおいては、算出された振りの強さを用いてゲーム処理を実行する。
【０００７】
第２の発明においては、入力装置には所定のボタンが設けられていてもよい。このとき、ゲームプログラムは、所定のボタンの押下状況に基づいて所定の期間を設定する期間設定ステップ（Ｓ１３およびＳ１５）をコンピュータにさらに実行させる。
【０００８】
第３の発明においては、ゲームプログラムは、加速度の大きさが所定の大きさ以上となっている期間を所定の期間として設定する期間設定ステップ（Ｓ１３およびＳ１５）をコンピュータにさらに実行させてもよい。
【０００９】
第４の発明においては、累積値算出ステップにおいて、コンピュータは、変化量が算出される度に、変化量が基準値よりも小さい場合には累積値が前回よりも小さくなるように累積値を算出してもよい（式（３））。このとき、振り強さ算出ステップにおいて、コンピュータは、所定の期間中に算出された累積値の最大値（ｓ＿ｍａｘ）が大きいほど大きくなるように振りの強さを算出する（式（５））。
【００１０】
第５の発明においては、累積値算出ステップにおいて、コンピュータは、変化量が算出される度に、現在の累積値より所定量減じた値に当該変化量を加算することにより新たな累積値を算出してもよい（式（５））。このとき、振り強さ算出ステップにおいて、コンピュータは、所定の期間中に算出された累積値の最大値が大きいほど大きくなるように振りの強さを算出する。
【００１１】
第６の発明においては、所定量とは、現在の累積値の所定比率となる量であってもよい。  
【００１２】
第７の発明においては、入力装置は、少なくとも所定の２軸方向に関する加速度を検出する加速度センサを備えていてもよい。このとき、取得ステップにおいて、コンピュータは、加速度センサから出力されたデータにより示されるベクトルに追従して変化するベクトル（処理用加速度ベクトル）を、取得すべき加速度として算出する。
【００１３】
第８の発明においては、入力装置は、少なくとも所定の２軸方向に関する加速度を検出する加速度センサを備えていてもよい。このとき、取得ステップにおいて、コンピュータは、現在の加速度を示すベクトルと加速度センサから出力されたデータにより示されるベクトルとの内分ベクトルを、新たに取得すべき加速度として算出する。
【００１４】
第９の発明においては、ゲームプログラムは、大きさ算出ステップ（Ｓ２６）をコンピュータにさらに実行させてもよい。大きさ算出ステップにおいて、コンピュータは、所定の期間中に取得された各加速度の大きさを算出する。このとき、振り強さ算出ステップにおいて、コンピュータは、累積値と加速度ベクトルの大きさとに基づいて入力装置の振りの強さを算出する（式（５））。
【００１５】
第１０の発明においては、振り強さ算出ステップにおいて、コンピュータは、振り期間中に算出された加速度の大きさの最大値（ａｖ＿ｍａｘ）と累積値とに基づいて入力装置の振りの強さを算出するようにしてもよい。
【００１６】
第１１の発明においては、変化量算出ステップにおいて、コンピュータは、最後に取得された加速度を示す加速度ベクトルと、１つ前に取得された加速度を示す加速度ベクトルとの差分ベクトルの大きさを変化量として算出するようにしてもよい。
【００１７】
また、本発明は、上記各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。
【発明の効果】
【００１８】
第１の発明によれば、振り期間中における入力装置の加速度の変化量が算出され、変化量を累積することによって得られる累積値に基づいて振りの強さが算出される。上記累積値を用いることによって、入力装置が実際に振られている時間の長さを反映して振りの強さを算出することができるとともに、入力装置が実際に振られた速さを反映して振りの強さを算出することができる。したがって、第１の発明によれば、入力装置の振りの強さを正確に算出することができる。
【００１９】
第２の発明によれば、ボタンの押下状況に基づいて振り期間が決定されるので、プレイヤはみずから振り期間を決定することができる。したがって、プレイヤが入力装置を誤って振ってしまったために、入力措置を振る操作がプレイヤの意に反して行われることがない。これによって、入力措置を振る操作の操作性を向上することができる。
【００２０】
第３の発明によれば、加速度が所定の大きさ以上となっている期間が振り期間として設定される。これによれば、プレイヤが実際に入力装置を振る動作を行わなければ振り期間が設定されないので、入力措置を振る操作がプレイヤの意に反して行われることがない。これによって、入力措置を振る操作の操作性を向上することができる。
【００２１】
第４の発明によれば、変化量が基準値よりも小さい場合には、累積値の最大値は更新されないこととなる。このとき、プレイヤが入力装置を振った後で入力装置が微少に動いていたとしても、入力装置の微少な動きは振りの強さには反映されない。したがって、第４の発明によれば、入力装置の振りの強さを正確に算出することができる。なお、第４の発明は、第２の発明のように、ゲーム装置において設定される振り期間と、コントローラ５が実際に振られてから振り終わるまでの期間とが一致しない場合に特に有効である。
【００２２】
第５の発明によれば、現在の累積値より所定量減じた値に、新たに算出された変化量を加算することによって、新たな累積値が算出される。したがって、第４の発明と同様、変化量が基準値（第５の発明では所定量）よりも小さい場合には累積値が前回よりも小さくなるように累積値が算出される。つまり、第５の発明によれば、第４の発明と同様、入力装置の振りの強さを正確に算出することができる。
【００２３】
第６の発明によれば、現在の累積値の所定比率となる量が所定量とすることによって、現在の累積値の大きさを反映して所定量を算出することができる。
【００２４】
第７の発明によれば、加速度センサから出力されたデータにより示されるベクトルに追従して変化するベクトルを加速度を示すベクトルとして用いることによって、加速度の値が、加速度センサが検出可能な限界値となることを抑制することができる。これによって、入力装置の振りの強さをより正確に算出することができる。
【００２５】
第８の発明によれば、新たな加速度は、現在の加速度を示すベクトルと加速度センサから出力されたデータにより示されるベクトルとの内分ベクトルとして算出される。したがって、第７の発明と同様、新たな加速度を示すベクトルは、加速度センサから出力されたデータにより示されるベクトルに追従して変化することになる。つまり、第８の発明によれば、第７の発明と同様、加速度の値が、加速度センサが検出可能な限界値となることを抑制することができ、入力装置の振りの強さをより正確に算出することができる。
【００２６】
第９の発明によれば、入力装置の振りの強さは、累積値に加えて、加速度の大きさに基づいて算出される。これによれば、累積値に反映されにくい入力装置の振り動作が行われる場合（入力装置がゆっくり振られる場合）であっても、当該動作を加速度ベクトルの大きさに反映させることができる。したがって、第６の発明によれば、上記のような場合であっても入力装置の振りの強さをより正確に算出することができる。
【００２７】
第１０の発明によれば、振り期間中に算出された加速度の大きさの最大値を用いて入力装置の振りの強さが算出されるので、加速度の大きさを振りの強さに正確に反映させることができる。
【００２８】
第１１の発明によれば、最後に取得された加速度と、１つ前に取得された加速度との変化量を正確に算出することができる。
【発明を実施するための最良の形態】
【００２９】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、およびセンサバー６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３０】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３１】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、家庭用テレビジョン受像機等の表示装置である。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の周辺（図１では画面の上側）には、センサバー６が設置される。センサバー６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒおよび６Ｌは、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。センサバー６はゲーム装置３に接続されており、ゲーム装置３はセンサバー６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３２】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、メインコントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００３３】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３４】
図２において、ゲーム装置３は、各種プログラムを実行する、例えばＣＰＵ（セントラルプロセッシングユニット）１０を備える。ＣＰＵ１０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ１３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ１０には、メモリコントローラ１１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２、メインメモリ１３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）１５が接続される。また、メモリコントローラ１１には、所定のバスを介して、通信ユニット１６、ビデオＩ／Ｆ（インターフェース）１７、フラッシュメモリ１８、ＬＥＤ制御部１９、オーディオＩ／Ｆ２０、およびディスクＩ／Ｆ２１が接続されている。ビデオＩ／Ｆ（インターフェース）１７はテレビ２に、ＬＥＤ制御部１９はセンサバー６に、オーディオＩ／Ｆ２０はテレビ２に搭載されるスピーカ２ａおよびディスクドライブ２２に、ディスクＩ／Ｆ２１はディスクドライブ２２に、それぞれ接続されている。
【００３５】
ＧＰＵ１２は、ＣＰＵ１０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ１２は、図示しない画像処理専用のメモリやメインメモリ１３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ１２は、これらを用いてテレビ２に表示すべきゲーム画像データやムービー映像を生成し、メモリコントローラ１１およびビデオＩ／Ｆ１７を介してテレビ２に適宜出力する。
【００３６】
メインメモリ１３は、ＣＰＵ１０で使用される記憶領域であって、ＣＰＵ１０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ１３は、ＣＰＵ１０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ１３に記憶されたゲームプログラムや各種データ等がＣＰＵ１０によって実行される。
【００３７】
ＤＳＰ１４は、ゲームプログラム実行時にＣＰＵ１０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ１５が接続される。ＡＲＡＭ１５は、ＤＳＰ１４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ１４は、ＡＲＡＭ１５に記憶されたサウンドデータを読み出し、メモリコントローラ１１およびオーディオＩ／Ｆ１９を介してスピーカ２ａに出力させる。
【００３８】
メモリコントローラ１１は、データ転送を統括的に制御するものであり、上述した通信ユニット１６、フラッシュメモリ１８、ＬＥＤ制御部１９、ならびに各種Ｉ／Ｆ１７，２０および２１が接続される。
【００３９】
通信ユニット１６は、ゲーム装置３とコントローラ５との間のデータの送受信を行う。コントローラ５は、自機に対する操作内容を示す操作データをゲーム装置３へ送信する。通信ユニット１６は、コントローラ５から操作データを受信し、受信した操作データをメモリコントローラ１１を介してＣＰＵ１０へ出力する。ＣＰＵ１０は、上記操作データに応じてゲーム処理を実行する。また、コントローラ５の動作を制御するための制御データがコントローラ５へ送信される場合、当該制御データは通信ユニット１６へ出力される。通信ユニット１６は、入力された制御データをコントローラ５へ送信する。
【００４０】
ビデオＩ／Ｆ１７には、テレビ２が接続され、ＧＰＵ１２によって生成された画像データは、ビデオＩ／Ｆ１７を介してテレビ２へ出力される。フラッシュメモリ１８は、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能する。ゲーム装置３は、フラッシュメモリ１８に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ２に表示することができる。ＬＥＤ制御部１９にはセンサバー６が備える赤外ＬＥＤが接続される。ＣＰＵ１０は、当該赤外ＬＥＤを点灯させる場合、ＬＥＤ制御部１９に給電指示を行う。給電指示に従ってＬＥＤ制御部１９が赤外ＬＥＤに給電を行うことによって、赤外ＬＥＤが点灯する。本実施形態では、少なくともゲームプログラムの実行が開始さている間は赤外ＬＥＤが点灯される。オーディオＩ／Ｆ２０にはテレビ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ１４がＡＲＡＭ１５から読み出したサウンドデータや、ディスクドライブ２２から直接出力されるサウンドデータがスピーカ２ａから出力される。ディスクＩ／Ｆ２１には、ディスクドライブ２２が接続される。ディスクドライブ２２は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ディスクＩ／Ｆ２０やオーディオＩ／Ｆ１９に出力する。
【００４１】
また、ゲーム装置３は、図示しないネットワーク通信部を備えており、インターネット等のネットワークに接続されている。ゲーム装置３は、ネットワーク通信部を介して外部から種々のデータを取得したり、外部へデータを送信したりすることが可能である。
【００４２】
（コントローラ５の構成）
次に、図３〜図６を参照して、コントローラ５およびサブコントローラ５ｂについて説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４３】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５を用いることによって、それに設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。例えば、プレイヤは、ゴルフクラブやバットやテニスラケットのようにコントローラ５を振ったり、コントローラ５によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。
【００４４】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字キー３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源３２ｈを誤って押下することを防止することができる。
【００４５】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のコントローラ）を接続するために利用される。
【００４６】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００４７】
また、コントローラ５は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００４８】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５Ａ）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００４９】
次に、図５Ａおよび図５Ｂを参照して、コントローラ５の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ５の内部構造を示す図である。なお、図５Ａは、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す斜視図は、図５Ａに示す基板３０を裏面から見た斜視図となっている。
【００５０】
図５Ａにおいて、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図５Ｂ参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５１】
一方、図５Ｂにおいて、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５２】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５Ａおよび図５Ｂに示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００５３】
なお、図３〜図５Ａ、図５Ｂに示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００５４】
図６は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機の姿勢に応じたデータを操作データとしてゲーム装置３へ送信するものである。
【００５５】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示すデータを通信部３６のマイコン４２へ出力する。
【００５６】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。
【００５７】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系における３次元のベクトルとして表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００５８】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。本実施形態において、加速度センサ３７は、コントローラ５を振ったときの振りの強さを算出するためのデータを出力するセンサとして用いられる。つまり、ゲーム装置３は、加速度データから、コントローラ５の振りの強さを算出し、当該振りの強さに応じたゲーム処理を実行する。なお、コントローラ５の振りの強さを算出する方法については後述する。
【００５９】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６０】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるセンサバー６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６１】
なお、本実施形態において、上記マーカ座標のデータはゲーム処理に用いる必要はない。したがって、コントローラ５は、撮像情報演算部３５を備えていない構成としてもよい。このとき、センサバー６は不要である。
【００６２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００６３】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の通信ユニット１６への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の通信ユニット１６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から通信ユニット１６への無線送信は所定の周期毎に逐次に行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の通信ユニット１６へ出力する。
【００６４】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、ゴルフクラブやバットやテニスラケットのようにコントローラ５を振るというゲーム操作を行うことができる。
【００６５】
（ゲーム例）
次に、図７および図８を参照して、ゲーム装置３によって実行されるゲームおよびゲーム操作の例について説明する。図７は、本ゲームにおいてテレビ２に表示されるゲーム画面の一例を示す図である。図７に示すように、本ゲームはゴルフゲームであり、仮想のゲーム空間に構築されたゴルフコース、および、ゲーム空間に登場するゴルフプレイヤであるプレイヤオブジェクト５０が画面に表示される。このゴルフゲームでは、仮想ゲーム空間内に登場するプレイヤオブジェクト５０をプレイヤが操作することによって仮想のゴルフを行う。
【００６６】
図８は、コントローラ５を用いてゲーム操作を行うときの様子を示す図解図である。上記ゴルフゲームにおいてプレイヤオブジェクト５０にスイングを行わせる場合、プレイヤは、図７に示すように、コントローラ５をゴルフクラブのように振ることによってゲーム操作を行う。ゲーム装置３は、コントローラ５の加速度センサ３７から出力される加速度データに基づいて、プレイヤがコントローラ５を振った強さ（振り強さ）を算出する。そして、算出された振り強さに基づいてゴルフボールの飛距離（プレイヤオブジェクト５０のスイングの強さ）を算出する。さらに、プレイヤオブジェクト５０がスイングを行ってゴルフボールがゴルフコース上を飛んでいく（移動する）様子を画面に表示する。このように、本実施形態では、プレイヤがコントローラ５をゴルフクラブのように扱ってゲーム操作を行い、実際のゴルフに近い操作感覚でゴルフゲームが行われる。なお、ゲーム装置３は、コントローラ５の振り強さに加えて、コントローラ５の振りの方向をさらに算出するようにしてもよい。このとき、振りの方向に応じてゴルフボールの弾道の方向を決定するようにしてもよい。
【００６７】
（ゲーム処理の詳細）
次に、本実施形態においてゲーム装置３で実行されるゲーム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図９および図１０を用いて説明する。図９は、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図である。図９に示すように、メインメモリ１３には、ゲームプログラム６０、操作データ６１、およびゲーム処理用データ６４等が記憶される。なお、メインメモリ１３には、図９に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【００６８】
ゲームプログラム６０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリ１３に記憶される。ゲームプログラム６０には、コントローラ５の振り強さを算出し、算出された振り強さに応じてボールの移動を制御するためのゲーム処理等を実行するのに必要なプログラムが含まれている。
【００６９】
操作データ６１は、コントローラ５からゲーム装置３へ送信されてくる操作データである。操作データ６１には、操作ボタンデータ６２および加速度データ６３が含まれる。操作ボタンデータ６２は、操作部３２の各ボタン３２ａ〜３２ｉに対して行われた操作内容（各ボタン３２ａ〜３２ｉが押下されたか否か）を示す。加速度データ６３は、加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ６３は、図３に示すＸＹＺの３軸の方向に関する加速度ベクトルＡ＝（Ａｘ，Ａｙ，Ａｚ）を示すデータである。
【００７０】
ゲーム処理用データ６４は、後述するゲーム処理（図１１〜図１４）において用いられるデータである。ゲーム処理用データ６４は、処理用加速度データ６５、前回加速度データ６６、変化量データ６７、累積値データ６８、累積最大値データ６９、加速度大きさデータ７０、加速度最大値データ７１、振り強さデータ７２、およびボール速度データ７３等を含む。
【００７１】
処理用加速度データ６５は、上記加速度データ６３をゲーム処理用に加工したデータである。具体的には、処理用加速度データ６５は、加速度データ６３により示される加速度ベクトルに追従するように変化する３次元ベクトルａｘ＝（ａｘ，ａｙ，ａｚ）を示す。以下では、処理用加速度データ６５により示されるベクトルを、上記加速度データ６３により示される加速度ベクトルと区別して、「処理用加速度ベクトル」と呼ぶ。処理用加速度ベクトルの算出方法については後述する。本実施形態では、処理用加速度データ６５は、振り期間中において、所定時間に１回の割合で繰り返し算出される。ここで、「振り期間」とは、プレイヤがコントローラ５を振り始めてから振り終わるまでの期間である。振り期間の決定方法については後述する。また、上記所定時間は、コントローラ５からゲーム装置３へ操作データが送信される時間間隔（１／２００［秒］）であってもよいし、１フレーム時間（１つのゲーム画像が生成されて表示される時間単位。ここでは、１／６０［秒］）であってもよい。
【００７２】
また、前回加速度データ６６は、前回の処理用加速度データ（操作データに含まれる加速度データとは異なる）である。すなわち、前回加速度データ６６は、最新の処理用加速度データの１つ前に生成された処理用加速度データである。ここでは、前回加速度データ６６により示される加速度ベクトルを、前回加速度ベクトル（ｂｘ＝（ｂｘ，ｂｙ，ｂｚ））と呼ぶ。
【００７３】
図１０は、処理用加速度ベクトルの算出方法を示す図である。なお、本実施形態では加速度ベクトル、処理用加速度ベクトル、および前回加速度ベクトルは３次元ベクトルであるが、図１０では説明を簡単にする目的でこれらのベクトルを２次元ベクトルとして説明を行う。上記振り期間が開始してからｉ回目（ｉは１以上の整数）に算出される処理用加速度ベクトルａ［ｉ］は、現在の加速度ベクトルＡ［ｉ］と、前回加速度ベクトルｂ［ｉ］（＝ａ［ｉ−１］）とに基づいて算出される。具体的には、処理用加速度ベクトルａ［ｉ］は、図１０に示すように、原点を始点とする場合、前回加速度ベクトルｂ［ｉ］の終点と現在の加速度ベクトルＡ［ｉ］の終点とを結ぶ線分をＣ１：（１−Ｃ１）に内分する点を終点とするベクトルとなる。換言すれば、処理用加速度ベクトルａ［ｉ］は、前回加速度ベクトルｂ［ｉ］を加速度ベクトルＡ［ｉ］に所定の度合い（Ｃ１）で近づけたベクトルとなる。
【００７４】
図９の説明に戻り、変化量データ６７は、処理用加速度データにより示される加速度ベクトルの変化量（ａｓ）を示す。変化量データ６７は、具体的には、前回の処理用加速度ベクトルと最新の処理用加速度ベクトルとの変化量を示し、より具体的には、前回の処理用加速度ベクトルと最新の処理用加速度ベクトルとの差分ベクトルの大きさを示す（後述する式（２）参照）。変化量データ６７は、処理用加速度データ６５および前回加速度データ６６を用いて算出される。なお、変化量データ６７は、処理用加速度データ６５が算出される度に算出される。
【００７５】
累積値データ６８は、振り期間中に算出される上記変化量を累積することによって得られる累積値を示す。累積値の算出方法については後述する。累積値データ６８は、変化量データ６７が算出される度に算出される。
【００７６】
累積最大値データ６９は、振り期間中に算出された累積値ｓの最大値（累積最大値）ｓ＿ｍａｘを示す。本実施形態では、この累積最大値がコントローラ５の振り強さを算出するために用いられる。
【００７７】
加速度大きさデータ７０は、処理用加速度データ６５により示される処理用加速度ベクトルの大きさａｖを示すデータである。本実施形態では、加速度大きさデータ７０は処理用加速度データ６５と同様、振り期間中において１フレーム時間毎に繰り返し算出される。なお、他の実施形態においては、加速度大きさデータ７０は、加速度センサ３７から出力される加速度データ６３により示される加速度ベクトルの大きさを示すデータとしてもよい。
【００７８】
加速度最大値データ７１は、振り期間中に算出された加速度ベクトルの大きさａｖの最大値（加速度最大値）ａｖ＿ｍａｘを示す。本実施形態では、この加速度最大値がコントローラ５の振り強さを算出するために用いられる。
【００７９】
振り強さデータ７２は、コントローラ５の振り強さｐを示すデータである。振り強さデータ７２の内容がゲーム結果（具体的には、ゴルフボールの飛距離）に反映される。本実施形態では、振り強さデータ７２は、上記累積最大値データ６９および加速度最大値データ７１に基づいて算出される。
【００８０】
ボール速度データ７３は、ゴルフボールの速度を示すデータである。本実施形態では、上記振り強さデータ７２に基づいてボール速度データ７３の内容が更新され、ボール速度データ７３に従ってボールが移動する様子が画面に表示される。なお、メインメモリ１３には、ボールに関する他のデータとして、ゲーム空間内にけるボールの位置等を示すデータが記憶される。
【００８１】
次に、ゲーム装置３において行われる処理の詳細を、図１１〜図１４を用いて説明する。図１１は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入され、ゲームプログラムが記憶された光ディスク４がゲーム装置３に挿入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ１３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ１３に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１１に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、以下では、コントローラ５の振り強さを算出する点を中心に説明し、本発明に関連しないゲーム処理については説明を省略する。
【００８２】
図１１に示すステップＳ１において、まずＣＰＵ１０は、ゲーム画面を表示する。ステップＳ１では、仮想の３次元ゲーム空間に構築されたゴルフコース、および、ゴルフコース上に登場するプレイヤオブジェクト５０を含む画像が生成され、生成された画像がテレビ２の画面に表示される。典型的には、図７に示されるように、プレイヤオブジェクト５０がスイングを開始する状態（アドレスに入った状態）の画像が生成して表示される。この後、プレイヤは、プレイヤオブジェクト５０にスイングを行わせるゲーム操作、すなわち、コントローラ５を振る動作を開始する。
【００８３】
続くステップＳ２において、ＣＰＵ１０は、振り強さ算出処理を実行する。振り強さ算出処理は、コントローラ５の振り強さを算出するための処理である。以下、図１２を参照して、振り強さ算出処理の詳細を説明する。
【００８４】
図１２は、図１１に示す振り強さ算出処理（ステップＳ２）の流れを示すフローチャートである。振り強さ算出処理においては、まずステップＳ１１において、ＣＰＵ１０は、振り強さ算出処理において用いられる各データ６５〜７３を初期化する。具体的には、処理用加速度データ６５は、（ａｘ，ａｙ，ａｚ）＝（０，０，０）を示すように設定され、前回加速度データ６６は、（ｂｘ，ｘｙ，ｂｚ）＝（０，０，０）を示すように設定される。また、累積値データ６８、累積最大値データ６９、加速度最大値データ７１は、初期値として“０”を示すように設定される。ステップＳ１１の次にステップＳ１２の処理が実行される。
【００８５】
ステップＳ１２において、ＣＰＵ１０は、コントローラ５から操作データを取得する。すなわち、コントローラ５から送信されてくる操作データを通信ユニット１６が受信し、受信された操作データがメインメモリ１３に記憶される。これによって、現時点におけるボタンの操作状況を示す操作ボタンデータ６２、および、現時点におけるコントローラ５の加速度を示す加速度データ６３がメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の（最後に取得された）操作データのみが記憶される。
【００８６】
続くステップＳ１３において、ＣＰＵ１０は、上記振り期間が開始されたか否かを判定する。本実施形態においては、ステップＳ１３の判定は、コントローラ５の所定のボタン（例えばＡボタン３２ｄ）が押下されているか否かによって行われる。なお、詳細はステップＳ１５において後述するが、振り期間は、振り期間の開始時に押下された上記所定のボタンが押下されなくなったことによって終了する。つまり、本実施形態においては、所定のボタンが押下されている期間が振り期間となる。これによって、プレイヤが意図していないにもかかわらず振り期間が開始され、プレイヤオブジェクト５０がスイング動作を行うことを防止することができる。
【００８７】
ステップＳ１３の判定結果が否定の場合、ステップＳ１２の処理が再度実行される。つまり、ステップＳ１３において振り期間が開始されたと判定されるまで、ステップＳ１２およびＳ１３の処理が繰り返される。したがって、ＣＰＵ１０は、振り期間が開始されるまで待機することになる。一方、ステップＳ１３の判定結果が肯定の場合、ステップＳ１４の処理が実行される。
【００８８】
ステップＳ１４において、ＣＰＵ１０は強さデータ算出処理を実行する。強さデータ算出処理は、上記振り強さデータを算出するための処理である。以下、図１３を参照して、強さデータ算出処理の詳細を説明する。
【００８９】
図１３は、図１２に示す強さデータ算出処理（ステップＳ１４）の流れを示すフローチャートである。強さデータ算出処理においては、まずステップＳ２０において、ＣＰＵ１０は、前回加速度データをメインメモリ１３に記憶する。具体的には、現時点でメインメモリ１３に記憶されている処理用加速度データ６５が、前回加速度データ６６としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の前回加速度データのみが記憶される。
【００９０】
続くステップＳ２１において、ＣＰＵ１０は、処理用加速度ベクトル算出処理を実行する。以下、図１４を参照して、処理用加速度ベクトル算出処理の詳細を説明する。
【００９１】
図１４は、図１３に示す処理用加速度ベクトル算出処理（ステップＳ２１）の流れを示すフローチャートである。処理用加速度ベクトル算出処理においては、まずステップＳ３１において、ＣＰＵ１０は操作データを取得する。ステップＳ３１の処理は上記ステップＳ１２と同じ処理である。なお、本実施形態では、強さデータ算出処理（ステップＳ１４）が所定時間間隔（操作データの送信時間間隔または１フレーム時間間隔）に１回の割合で実行される。したがって、ステップＳ３１によって、操作データが上記所定時間間隔で繰り返し取得されることとなる。
【００９２】
続くステップＳ３２において、ＣＰＵ１０は、処理用加速度ベクトルａを算出する。処理用加速度ベクトルａは、メインメモリ１３に記憶されている加速度データ６３および前回加速度データ６６を用いて、加速度データ６３により示される加速度ベクトルに追従するように算出される（図１０参照）。具体的には、処理用加速度ベクトルａ＝（ａｘ，ａｙ，ａｚ）は、加速度データ６３により示される加速度ベクトルを（Ａｘ，Ａｙ，Ａｚ）とし、前回加速度データ６６により示される前回加速度ベクトル（ｂｘ，ｂｙ，ｂｚ）とすると、次の式（１）に従って算出される。
ａｘ＝ｂｘ＋（Ａｘ−ｂｘ）・Ｃ１
ａｙ＝ｂｙ＋（Ａｙ−ｂｙ）・Ｃ１
ａｚ＝ｂｚ＋（Ａｚ−ｂｚ）・Ｃ１  …（１）
上式（１）において、定数Ｃ１は、０＜Ｃ１＜１の範囲で予め設定される。ステップＳ３２で算出された処理用加速度ベクトルを示すデータは、処理用加速度データ６５としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の処理用加速度データのみが記憶される。上記ステップＳ３２の後、ＣＰＵ１０は図１４に示す処理用加速度ベクトル算出処理（ステップＳ２１）を終了する。
【００９３】
なお、他の実施形態では、ＣＰＵ１０は、加速度データ６３により示される加速度データを処理用加速度ベクトルとしてそのまま用いてもよい。すなわち、処理用加速度データ６５は加速度データ６３と同じであってもよい。このとき、ステップＳ３２の処理は不要である。
【００９４】
図１３の説明に戻り、ステップＳ２１の次のステップＳ２２において、ＣＰＵ１０は、変化量ａｓを算出する。変化量ａｓは、メインメモリ１３に記憶されている処理用加速度データ６５および前回加速度データ６６を用いて算出される。具体的には、変化量ａｓは、次の式（２）に従って算出される。
ａｓ＝（（ａｘ−ｂｘ）2 ＋（ａｙ−ｂｙ）2 ＋（ａｚ−ｂｚ）2 ）1/2   …（２）
ステップＳ２２で算出された変化量ａｓを示すデータは、変化量データ６７としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の変化量データのみが記憶される。
【００９５】
続くステップＳ２３において、ＣＰＵ１０は、累積値ｓを算出する。累積値ｓは、現時点でメインメモリ１３に記憶されている変化量データ６７および累積値データ６８を用いて算出される。具体的には、変化量データ６７により示される変化量をａｓとし、累積値データ６８により示される累積値をｓ’とすると、新たな累積値ｓは、次の式（３）に従って算出される。
ｓ＝ｓ’・Ｃ２＋ａｓ  …（３）
上式（３）において、変数ｓ’は、前回の強さデータ算出処理のステップＳ２３で算出された累積値であり、強さデータ算出処理が最初に実行される場合には、上記ステップＳ１１で累積値の初期値として設定された値（＝０）である。また、定数Ｃ２は、０＜Ｃ２＜１の範囲で予め設定される。上式（３）からわかるように、累積値ｓは、変化量ａｓの値によっては前回の累積値ｓ’よりも小さくなることがある。なお、上式（３）において、変数ｓ’に係数Ｃ２を乗算することに代えて、変数ｓ’から所定値を減算するようにしてもよい。上記ステップＳ２３で算出された累積値ｓを示すデータは、累積値データ６８としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の累積値データのみが記憶される。
【００９６】
なお、他の実施形態においては、累積値ｓは、振り期間中に算出された各変化量を用いて計算した結果を示すものであればよく、例えば、単に当該各変化量の総和であってもよい。つまり、上式（３）において、Ｃ２＝１としてもよい。また、他の実施形態においては、上式（３）においてＣ２＝０としてもよい。
【００９７】
続くステップＳ２４において、ＣＰＵ１０は、ステップＳ２３で算出した累積値ｓが、累積最大値ｓ＿ｍａｘよりも大きいか否かを判定する。ステップＳ２４の判定は、メインメモリ１３に記憶されている累積値データ６８により示される累積値ｓと、累積最大値データ６９により示される累積最大値ｓ＿ｍａｘとを比較することによって行われる。ステップＳ２４は、累積最大値を更新するか否かを判定するための処理である。ステップＳ２４の判定結果が肯定の場合、ステップＳ２５の処理が実行される。一方、ステップＳ２４の判定結果が否定の場合、ステップＳ２５の処理がスキップされてステップＳ２６の処理が実行される。
【００９８】
ステップＳ２５において、ＣＰＵ１０は、累積最大値ｓ＿ｍａｘを更新する。すなわち、現在の累積値データ６８を累積最大値データ６９として記憶する。なお、メインメモリ１３には、最新の累積最大値データのみが記憶される。これによって、累積最大値は、今回の強さデータ算出処理で算出された累積値に更新されることとなる。ステップＳ２５の次にステップＳ２６の処理が実行される。
【００９９】
以上のステップＳ２１〜Ｓ２５によって、累積値ｓが算出され、場合によっては累積最大値ｓ＿ｍａｘが更新される。詳細は後述するが、累積最大値に基づいて振り強さｐの値が算出される。
【０１００】
ステップＳ２６において、ＣＰＵ１０は、処理用加速度ベクトルの大きさａｖを算出する。当該大きさａｖは、メインメモリ１３に記憶されている処理用加速度データ６５により示される処理用加速度ベクトル（ａｘ，ａｙ，ａｚ）に基づいて算出される。具体的には、上記大きさａｖは、次の式（４）に従って算出される。
ａｖ＝（（ａｘ）2 ＋（ａｙ）2 ＋（ａｚ）2 ）1/2   …（４）
ステップＳ２６で算出された大きさａｖを示すデータは、加速度大きさデータ７０としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の加速度大きさデータのみが記憶される。なお、本実施形態においては、処理用加速度ベクトルの大きさを算出したが、これに代えて、加速度データ６３により示される加速度ベクトルの大きさ算出するようにしてもよい。
【０１０１】
続くステップＳ２７において、ＣＰＵ１０は、ステップＳ２６で算出した大きさａｖが、加速度最大値ａｖ＿ｍａｘよりも大きいか否かを判定する。ステップＳ２７の判定は、メインメモリ１３に記憶されている加速度大きさデータ７０により示される大きさａｖと、加速度最大値データ７１により示される加速度最大値ａｖ＿ｍａｘとを比較することによって行われる。ステップＳ２７は、加速度最大値を更新するか否かを判定するための処理である。ステップＳ２７の判定結果が肯定の場合、ステップＳ２８の処理が実行される。一方、ステップＳ２７の判定結果が否定の場合、ステップＳ２８の処理がスキップされてステップＳ２９の処理が実行される。
【０１０２】
ステップＳ２８において、ＣＰＵ１０は、加速度最大値ａｖ＿ｍａｘを更新する。すなわち、現在の加速度大きさデータ７０を加速度最大値データ７１として記憶する。なお、メインメモリ１３には、最新の加速度最大値データのみが記憶される。これによって、加速度最大値は、今回の強さデータ算出処理で算出された加速度ベクトルの大きさに更新されたこととなる。上記ステップＳ２８の後、ＣＰＵ１０は強さデータ算出処理を終了する。
【０１０３】
図１２の説明に戻り、ステップＳ１４の強さデータ算出処理の次に、ステップＳ１５の処理が実行される。すなわち、ステップＳ１５において、ＣＰＵ１０は、上記振り期間が終了されたか否かを判定する。本実施形態においては、ステップＳ１５の判定は、振り期間の開始時に押下されたコントローラ５の所定のボタンが離されたか否かによって行われる。このように、本実施形態においては、所定のボタンが押下されている期間が振り期間となるので、プレイヤが意図していないにもかかわらず振り期間が開始され、プレイヤオブジェクト５０がスイング動作を行うことを防止することができる。ステップＳ１５の判定結果が否定の場合、ステップＳ１４の処理が再度実行される。つまり、振り期間中は、強さデータ算出処理が所定時間間隔で繰り返して実行される。一方、ステップＳ１５の判定結果が肯定の場合、ステップＳ１６の処理が実行される。
【０１０４】
なお、他の実施形態においては、ＣＰＵ１０は、所定のボタンの押下状況に基づいて振り期間を設定すればよく、例えば、所定のボタンが押下されたことに応じて振り期間を開始し、その後、所定のボタンが再度押下されたことに応じて振り期間を終了するようにしてもよい。
【０１０５】
また、ステップＳ１３の判定は、加速度センサ３７によって検出される加速度ベクトルの大きさが所定の値以上となったか否かによって行われてもよい。より具体的には、ステップＳ１３において、ＣＰＵ１０は、メインメモリ１３に記憶されている加速度データ６３（ステップＳ１２で取得された操作データに含まれる加速度データ）により示される加速度ベクトルの大きさが、所定の値以上である場合、振り期間が開始されたと判定するようにしてもよい。このとき、振り期間は、上記加速度ベクトルの大きさが上記所定の値未満となった場合に終了する。つまり、ステップＳ１５において、ＣＰＵ１０は、メインメモリ１３に記憶されている加速度データ６３により示される加速度ベクトルの大きさが、所定の値以上である場合、振り期間が開始されたと判定するようにしてもよい。これによっても、プレイヤが意図していないにもかかわらず振り期間が開始されることを防止することができる。また、上記加速度ベクトルに代えて、処理用加速度ベクトルを用いるようにしてもよい。また、強さデータ算出処理を実行するたびに振り強さｐを算出するようにし、振り強さｐが所定値よりも小さくなったことに応じて振り期間を終了するようにしてもよい。
【０１０６】
ステップＳ１６において、ＣＰＵ１０は、コントローラ５の振り強さｐを算出する。振り強さｐは、メインメモリ１３に記憶されている累積最大値データ６９と加速度最大値データ７１とを用いて算出される。具体的には、振り強さｐは、次の式（５）に従って算出される。
ｐ＝ｓ＿ｍａｘ・ａｖ＿ｍａｘ  …（５）
ステップＳ１６で算出された振り強さｐを示すデータは、振り強さデータ７２としてメインメモリ１３に記憶される。なお、メインメモリ１３には、最新の振り強さデータのみが記憶される。また、振り強さｐを算出するための式は上式（５）に限らない。振り強さｐは、累積最大値ｓ＿ｍａｘの値が大きいほど値が大きくなるように、かつ、加速度最大値ａｖ＿ｍａｘの値が大きいほど値が大きくなるように算出されればよい。例えば、振り強さｐは、累積最大値ｓ＿ｍａｘと加速度最大値ａｖ＿ｍａｘとを所定の重みを付して加算することによって算出されてもよい。上記ステップＳ１６の後、ＣＰＵ１０は、図１２に示す振り強さ算出処理を終了する。
【０１０７】
図１１の説明に戻り、ステップＳ２の次のステップＳ３において、ＣＰＵ１０は、コントローラ５の振り強さｐに基づいてボールの初速度を算出する。ボールの初速度は、振り強さｐの値が大きいほど大きくなるように算出される。なお、振り強さｐは、メインメモリ１３に記憶されている振り強さデータ７２を参照することによって知ることができる。ステップＳ３で算出された初速度を示すデータは、ボール速度データ７３としてメインメモリ１３に記憶される。
【０１０８】
続くステップＳ４において、ＣＰＵ１０は、ステップＳ３で算出された初速度に基づいて、ボールが移動する動画をテレビ２に表示させる。すなわち、ＣＰＵ１０は、所定の方向へ上記初速度でボールが移動するようにボールの動作を制御する。このとき、重力や風の向き等の物理条件を考慮してボールの移動は制御される。また、上記所定の方向は、コントローラ５を振る方向に応じて決められてもよい。ボールの移動が制御される結果、現在位置からボールが移動して停止するまでのボールの軌道が決定され、決定された軌道で移動するようにゲーム画像が生成されて表示される。
【０１０９】
続くステップＳ５において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ５の判定は、例えば、１つのコースが終了したか否かや、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ５の判定結果が否定である場合、ステップＳ１の処理が再度実行される。一方、ステップＳ５の判定結果が肯定である場合、ＣＰＵ１０は、図１１に示すゲーム処理を終了する。
【０１１０】
以上に説明した本実施形態においては、ゲーム中においてプレイヤがコントローラ５を振った場合、コントローラ５の加速度（加速度ベクトル）に変化が生じる。コントローラ５が例えば等速円運動を行う場合、加速度センサ３７によって検出される加速度ベクトルには変化が生じない。しかし、実際にプレイヤ（人間）がコントローラ５を振る場合には、（ａ）その軌道は正確な円弧とはならない、（ｂ）振っている間の速度は一定ではない、（ｃ）コントローラ５にはひねり（コントローラ５の前後方向を軸とした回転）が加えられる、等の理由から、コントローラ５の運動は等速円運動とはならない。したがって、加速度ベクトルが変化している場合にはコントローラ５が振られていると判断することができる。
【０１１１】
ここで、上記実施形態では、加速度ベクトルの変化量を算出し（ステップＳ２２）、当該変化量を累積した累積値を算出し（ステップＳ２３）、当該累積値を振り強さに反映させるようにしている（上記ゲーム処理では、累積最大値ｓ＿ｍａｘが振り強さｐに反映される）。したがって、加速度ベクトルが変化している時間が長いほど、変化量が累積される回数が多くなるので、振り強さｐは大きくなる。つまり、上記ゲーム処理では、コントローラ５が振られている期間が長いほど、すなわち、コントローラ５を振るストロークが長いほど、振り強さが大きくなる。このように、上記ゲーム処理では、コントローラ５を振るストロークの長さを振り強さに反映することができる。
【０１１２】
さらに、上記ゲーム処理では、累積値は、加速度ベクトルの変化量が大きいほど大きくなるので、加速度ベクトルの変化量が大きいほど振り強さが大きくなる。また、コントローラ５を速く振っている場合には加速度ベクトルの変化量も大きくなるので、算出される振り強さも大きくなる。つまり、上記ゲーム処理では、コントローラ５を速く振るほど振り強さが大きくなるので、コントローラ５を振る速さを振り強さに反映することができる。
【０１１３】
以上のように、本実施形態では、コントローラ５を振るストロークの長さ、および、コントローラ５を振る速さを反映して振り強さを算出することができる。これによって、ストロークの長さが同じでコントローラ５を速く振った場合と遅く振った場合とを区別して振り強さを算出することができる。また、コントローラ５を振る速さが同じでストロークの長さが短い場合と長い場合とを区別して振り強さを算出することができる。さらに、上記変数Ｃ１およびＣ２を調整することによって、コントローラ５を短いストロークで速く振った場合と、コントローラ５を長いストロークでゆっくり振った場合とで振り強さを同程度の値にすることも可能である。以上のように、本実施形態では、コントローラ５を振るストロークの長さ、および、コントローラ５を振る速さの両方を反映することによって、コントローラ５の振り強さを正確に算出することができる。
【０１１４】
なお、上記ゲーム処理では、ステップＳ２１において、加速度センサ３７によって検出される加速度ベクトルから処理用加速度ベクトルを算出し、累積値を算出するために当該処理用加速度ベクトルを用いた。ここで、加速度センサ３７の性能にもよるが、コントローラ５に加わる加速度が大きすぎる場合には、加速度ベクトルが、加速度センサ３７が検出可能な限界値をとることがある。また、コントローラ５を急激に振った場合には、振り期間中にコントローラ５に加わる加速度が大きすぎるために、振り期間中の大部分において加速度ベクトルが上記限界値をとることがある。このような場合、振り期間中の大部分において加速度ベクトルの変化量が“０”となってしまう。したがって、加速度ベクトルの変化量をそのまま用いて当該変化量の累積値を算出することとすると、上記のようにコントローラ５を急激に振った場合に変化量が“０”になることから累積値が増加せず、振り強さを正確に算出することができないおそれがある。
【０１１５】
そこで、上記ゲーム処理では、加速度ベクトルの変化量ではなく、加速度ベクトルに追従して変化する処理用加速度ベクトルの変化量を用いている。処理用加速度ベクトルの変化量は、上記のようにコントローラ５を急激に振った場合でも“０”になりにくいので、当該場合でも累積値は次第に増加し、その結果、振り強さをより正確に算出することができる。
【０１１６】
また、上記ゲーム処理では、累積値ｓは、単なる変化量ａｓの総和ではなく、前回の累積値ｓ’に所定の係数Ｃ２（０＜Ｃ２＜１）を乗算した値と、今回の変化量ａｓとの和であるとした（上式（３））。さらに、累積値ｓではなく、累積最大値ｓ＿ｍａｘを振り強さｐの算出に用いることとした（ステップＳ１６）。これによって、振り期間中にコントローラ５の移動がほぼ停止した場合であっても、振り強さを正確に算出することができる。以下、図１５を用いて、詳細な理由を説明する。
【０１１７】
図１５は、累積値ｓおよび累積最大値ｓ＿ｍａｘの推移の一例を示す図である。図１５に示すグラフの縦軸は累積値ｓを示す。また、当該グラフの横軸は強さデータ算出処理が実行される時間ｔを示し、１回の強さデータ算出処理が実行される時間を単位時間としている。図１５では、ある時間ｔ＝ｎ（ｎは、１以上の整数）から時間ｔ＝ｎ＋５までの累積値の変化を示している。図１５に示すように、時間ｔ＝ｊ＋１（ｊ＝ｎ〜ｎ＋４）の時点における累積値をｓ［ｊ＋１］は、ｓ［ｊ］に係数（＝Ｃ２）を掛けたものと、時間ｔ＝ｊ＋１における変化量ａｓ［ｊ＋１］との和となる。
【０１１８】
図１５に示す時間ｔ＝ｎ〜ｎ＋２の場合のように、変化量ａｓの値が基準値よりも大きい場合には、累積値ｓは前回の累積値よりも大きくなり、累積最大値が更新される。ここで、基準値は、上記ゲーム処理では、前回の累積値に（１−Ｃ２）を掛けた値である。一方、図１５に示す時間ｔ＝ｎ＋３〜ｎ＋５の場合のように、変化量の値が基準値よりも小さい場合には、累積値は前回の累積値よりも小さくなり、累積最大値は更新されない。したがって、振り期間中にコントローラ５の移動がほぼ停止し、加速度ベクトル（および処理用加速度ベクトル）の変化量が微少となった場合には、変化量ａｓが微少な値となるので、累積最大値は更新されなくなる。また、コントローラ５の移動がほぼ停止すると、累積値ｓは次第に小さくなっていくので、振り強さの算出には累積最大値を用いる。これによって、コントローラ５に対する実際の振り動作が終わった後にコントローラ５が微少な動きが振り強さに影響されなくなるので、振り強さを正確に算出することができる。特に、振り期間の開始および終了をボタンの押下によって決定する場合には、ゲーム装置において設定される振り期間と、コントローラ５が実際に振られてから振り終わるまでの期間とが一致しないので、上式（３）を用いて累積値を算出し、累積最大値を用いて振り強さを算出することが有効である。
【０１１９】
また、上記ゲーム処理では、累積最大値ｓ＿ｍａｘに加えて、加速度最大値ａｖ＿ｍａｘに基づいて振り強さｐが算出された（ステップＳ１６）。これによって、コントローラ５がゆっくり振られる場合であっても、振り強さを正確に算出することができる。以下、詳細を説明する。
【０１２０】
ゲーム中において、プレイヤは、例えばゴルフゲームでパターを振る場合等、比較的ゆっくりコントローラ５を振る場合もあり得る。このような場合、加速度ベクトル（または処理用加速度ベクトル）の変化量は振り期間中においてあまり大きくならなず、その結果、最大累積値ｓ＿ｍａｘが小さくなりすぎるおそれがある。特に、上記実施形態では、加速度センサ３７によって検出される加速度ベクトルに追従して変化する処理用加速度ベクトルを用いて累積最大値ｓ＿ｍａｘを算出している。したがって、定数Ｃ１およびＣ２の値にもよるが、コントローラ５の振りがゆっくりである場合には、変化量ａｓが大きくならず、振り強さがほぼ０になってしまうことがあり得る。そこで、本実施形態では、累積最大値ｓ＿ｍａｘに加えて、加速度最大値ａｖ＿ｍａｘに基づいて振り強さｐを算出する。コントローラ５の振りがゆっくりである場合でも加速度最大値ａｖ＿ｍａｘはある程度の大きさとなるので、加速度最大値ａｖ＿ｍａｘを加味して振り強さｐを算出することにより、振り強さｐが小さくなりすぎることを防止することができる。
【０１２１】
なお、上記実施形態では、ゴルフゲームを例として説明したが、本発明は、加速度センサを備えるコントローラ自体を振ってゲーム操作を行うゲームに適用可能であり、例えば野球ゲームやテニスゲーム等のスポーツゲームだけでなく、任意のジャンルのゲームに適用可能である。
【産業上の利用可能性】
【０１２２】
以上のように、本発明は、入力装置（コントローラ）の振りの強さを算出すること等を目的として、例えばゲームプログラムおよびゲーム装置として利用することが可能である。
【図面の簡単な説明】
【０１２３】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５Ａ】コントローラ５の内部構造を示す図
【図５Ｂ】コントローラ５の内部構造を示す図
【図６】コントローラ５の構成を示すブロック図
【図７】本ゲームにおいてテレビ２に表示されるゲーム画面の一例を示す図
【図８】コントローラ５を用いてゲーム操作を行うときの様子を示す図解図
【図９】ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図
【図１０】処理用加速度ベクトルの算出方法を示す図
【図１１】ゲーム装置３において実行される処理の流れを示すメインフローチャート
【図１２】図１１に示す振り強さ算出処理（ステップＳ２）の流れを示すフローチャート
【図１３】図１２に示す強さデータ算出処理（ステップＳ１４）の流れを示すフローチャート
【図１４】図１３に示す処理用加速度ベクトル算出処理（ステップＳ２１）の流れを示すフローチャート
【図１５】累積値ｓおよび累積最大値ｓ＿ｍａｘの推移の一例を示す図
【符号の説明】
【０１２４】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
１０    ＣＰＵ
１３    メインメモリ
【図１】
2008125549.tif 000003
【図２】
2008125549.tif 000004
【図３】
2008125549.tif 000005
【図４】
2008125549.tif 000006
【図５Ａ】
2008125549.tif 000007
【図５Ｂ】
2008125549.tif 000008
【図６】
2008125549.tif 000009
【図７】
2008125549.tif 000010
【図８】
2008125549.tif 000011
【図９】
2008125549.tif 000012
【図１０】
2008125549.tif 000013
【図１１】
2008125549.tif 000014
【図１２】
2008125549.tif 000015
【図１３】
2008125549.tif 000016
【図１４】
2008125549.tif 000017
【図１５】
2008125549.tif 000018