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