(57)【特許請求の範囲】
【請求項１】
タッチパネルを備えるコンピュータにおいて実行される方法であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定するステップと、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示される１又は複数のデータポイントを、既定の時間ごとに、データポイント列として保持するステップと、
前記保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列におけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏りに少なくとも基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための重み付き速さを決定するステップと、
を含み、
前記重み付き速さを決定するステップは、前記決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて重み係数を算出し、該重み係数に更に基づいて変位速さを決定する、
方法。
【請求項２】
データポイント列として保持するステップは、フレームレートに対応する時間ごとに、１又は複数のデータポイントをデータポイント列として保持し、
前記重み付き速さを決定するステップは、一のフレームの時間内に保持されるデータポイント列におけるデータポイントの変位に基づいて、該フレームにおけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、最新のフレームにおける変位速さの、該最新のフレームより前のフレームにおける変位速さの平均値に対する偏りに少なくとも基づいて、重み付き速さを決定する、
請求項１に記載の方法。
【請求項３】
前記角度を決定するステップは、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントを保持するステップと、
前記保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了するステップと、
前記保持されているデータポイントに基づいて回帰直線の傾きを決定するステップと、
前記保持されているデータポイントの集合としての変位方向に基づいて前記決定された回帰直線の傾きを回転させる回転量を決定するステップと、
前記決定された回帰直線の傾き及び前記決定された回転量に基づいて、角度を決定するステップと、
を含み、前記方法は、
既定の時間ごとに、前記決定された重み付き速さと、前記決定された角度を持つ単位ベクトルと、該決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて算出される重み係数とに基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための合成ベクトルを決定するステップと、
を含む、請求項１又は２に記載の方法。
【請求項４】
前記決定された合成ベクトルの方向は、操作対象オブジェクトの移動方向であり、前記決定された合成ベクトルの大きさは、操作対象オブジェクトの移動速さである、請求項３に記載の方法。
【請求項５】
前記決定された合成ベクトルの大きさに基づいて、操作対象オブジェクトの移動状態を決定するステップを含む、請求項４に記載の方法。
【請求項６】
請求項１から５のいずれか１項に記載の方法の各ステップをコンピュータに実行させるプログラム。
【請求項７】
タッチパネルを備える電子装置であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定し、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示される１又は複数のデータポイントを、既定の時間ごとに、データポイント列として保持し、
前記保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列におけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏りに少なくとも基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための重み付き速さを決定し、
前記重み付き速さを決定することは、前記決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて重み係数を算出し、該重み係数に更に基づいて変位速さを決定する、
電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、方法、プログラム、及び電子装置に関するものであり、特にタッチパネルを備えるコンピュータにおいて実行される方法、方法の各ステップを実行させるプログラム、及びタッチパネルを備える電子装置に関する。
【背景技術】
【０００２】
近年のタッチパネル技術の向上に伴い、タッチパネル上のユーザインタフェースを介してユーザ入力を行う電子装置が広く普及してきた。そして、電子装置において実行されるゲームにおいては、従来型の物理的なコントローラによるユーザ入力に代えて、電子装置に備えられたタッチパネルを介してユーザ入力を行う形態が広く普及してきている。
【０００３】
特にスマートフォン等に代表される小型の携帯型電子装置の普及が急速に進み、このような携帯型電子装置上で実行されるゲームも数多くリリースされている。このような状況において、タッチパネルに表示されたプレイヤキャラクタなどの仮想オブジェクトの操作方法については、様々な技術が提案されている。
【０００４】
例えば特許文献１には、タッチパネルを備えるゲーム装置であって、ユーザのタッチ操作に応じて原点を設定してジョイスティックを模した操作を行うことができるゲーム装置やプログラムが開示されている。当該ゲーム装置は、タッチパネルがタッチを検出していない状態から検出した状態に変化した場合に検出を開始したときの座標に基づき基準座標を設定し、その後タッチ検出を継続する場合、その後に検出した座標に基づき指示座標を設定する。そして当該ゲーム装置は、基準座標から指示座標へのベクトルの方向がジョイスティックを倒している方向、ベクトルの大きさがジョイスティックの倒し具合と認識することで、仮想ジョイスティックを実現し、仮想オブジェクトの操作を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３７３４８２０号
【特許文献２】特許第６３８９５８１号
【特許文献３】特許第６５６０８０１号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に示す従来技術において、ユーザは、タッチパネル上の１箇所を指で接触してゲーム装置に基準座標を認識させ、接触したままその指をスライドさせ、スライド後の指の接触位置によりゲーム装置に指示座標を認識させる。このように構成される従来技術は、ユーザが方向を入力するとき、基準座標から指示座標までの距離を生成する必要があるため、高い応答性を実現することは難しかった。例えばユーザが仮想ジョイスティックを大きく倒した操作を行いたい場合、大きく倒したジョイスティックの倒し具合に対応する基準座標から指示座標へのベクトルの大きさを生成する必要があった。
【０００７】
このような状況において、本出願人は、開始点及び終了点という空間的な概念を使用せずに指の微細な動きが生じさせるタッチポイントの集合から仮想空間における操作対象オブジェクトのパラメータ（例えば方向や速さ）を決定する方法を提案している（特許文献２、３）。しかしながら、タッチパネルを介したユーザの操作において、ユーザの操作対象となりうるオブジェクトである操作対象オブジェクトを制御する操作方法として、ユーザがより操作しやすい操作方法の実現が求められている。
【０００８】
本発明は、このような課題を解決するためになされたものであり、タッチパネルを介した操作対象オブジェクトに対する操作において、より操作性を高めることが可能な方法等を提供することを主目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様としての方法は、
タッチパネルを備えるコンピュータにおいて実行される方法であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定するステップと、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示される１又は複数のデータポイントを、既定の時間ごとに、データポイント列として保持するステップと、
前記保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列におけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏りに少なくとも基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための重み付き速さを決定するステップと、
を含み、
前記重み付き速さを決定するステップは、前記決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて重み係数を算出し、該重み係数に更に基づいて変位速さを決定する、ことを特徴とする。
【００１０】
また、本発明の一態様として、
データポイント列として保持するステップは、フレームレートに対応する時間ごとに、１又は複数のデータポイントをデータポイント列として保持し、
前記重み付き速さを決定するステップは、一のフレームの時間内に保持されるデータポイント列におけるデータポイントの変位に基づいて、該フレームにおけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、最新のフレームにおける変位速さの、該最新のフレームより前のフレームにおける変位速さの平均値に対する偏りに少なくとも基づいて、重み付き速さを決定する。
【００１１】
また、本発明の一態様として、
前記角度を決定するステップは、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントを保持するステップと、
前記保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了するステップと、
前記保持されているデータポイントに基づいて回帰直線の傾きを決定するステップと、
前記保持されているデータポイントの集合としての変位方向に基づいて前記決定された回帰直線の傾きを回転させる回転量を決定するステップと、
前記決定された回帰直線の傾き及び前記決定された回転量に基づいて、角度を決定するステップと、
を含み、前記方法は、
既定の時間ごとに、前記決定された重み付き速さと、前記決定された角度を持つ単位ベクトルと、該決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて算出される重み係数とに基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための合成ベクトルを決定するステップと、
を含む。
【００１２】
また、本発明の一態様として、
前記決定された合成ベクトルの方向は、操作対象オブジェクトの移動方向であり、前記決定された合成ベクトルの大きさは、操作対象オブジェクトの移動速さである。
【００１３】
また、本発明の一態様として、
前記決定された合成ベクトルの大きさに基づいて、操作対象オブジェクトの移動状態を決定するステップを含む。
【００１４】
また、本発明の一態様としての方法は、
タッチパネルを備えるコンピュータにおいて実行される方法であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントを保持するステップと、
前記保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了するステップと、
前記保持されているデータポイントに基づいて回帰直線の傾きを決定するステップと、
前記保持されているデータポイントの集合としての変位方向に基づいて前記決定された回帰直線の傾きを回転させる回転量を決定するステップと、
前記決定された回帰直線の傾き及び前記決定された回転量に基づいて、角度を決定するステップと、
既定の時間ごとに、前記決定された角度を持つ単位ベクトルと、該決定された角度における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて算出される重み係数とに基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための合成ベクトルを決定するステップと、
を含むことを特徴とする。
【００１５】
また、本発明の一態様としてのプログラムは、上記に記載の方法の各ステップをコンピュータに実行させることを特徴とする。
【００１６】
また、本発明の一態様としての電子装置は、
タッチパネルを備える電子装置であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定し、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示される１又は複数のデータポイントを、既定の時間ごとに、データポイント列として保持し、
前記保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列におけるタッチイベントが発生した位置の変位する速さに対応する変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏りに少なくとも基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための重み付き速さを決定し、
前記重み付き速さを決定することは、前記決定された角度が示す方向における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて重み係数を算出し、該重み係数に更に基づいて変位速さを決定する、ことを特徴とする。
【００１７】
また、本発明の一態様としての電子装置は、
タッチパネルを備える電子装置であって、
前記タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントを保持し、
前記保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了し、
前記保持されているデータポイントに基づいて回帰直線の傾きを決定し、
前記保持されているデータポイントの集合としての変位方向に基づいて前記決定された回帰直線の傾きを回転させる回転量を決定し、
前記決定された回帰直線の傾き及び前記決定された回転量に基づいて、角度を決定し、
既定の時間ごとに、前記決定された角度を持つ単位ベクトルと、該決定された角度における前記第１の軸の方向及び前記第２の軸の方向の成分に応じて算出される重み係数とに基づいて、仮想空間内の操作対象オブジェクトのパラメータを決定するための合成ベクトルを決定する、ことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、タッチパネルを介した操作対象オブジェクトに対する操作において、より操作性を高めることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態の電子装置のハードウェア構成を示すブロック図である。
【図２】本発明の一実施形態の電子装置の機能ブロック図である。
【図３】本実施形態の第１の軸及び第２の軸からなる座標軸を示す図である。
【図４】本発明の一実施形態の第１の軸及び第２の軸からなる座標軸を示す図である。
【図５】図３又は図４に示すように座標軸が定められた場合の、エンジン部２３が決定する角度と角度に対応する方向の一例を説明する図である
【図６】本発明の一実施形態の電子装置において実行されるデータポイントの保持に関する処理を説明するフローチャートである。
【図７】重み係数βを説明するための概念図の一例である。
【図８】本発明の一実施形態の電子装置において実行される重み付き速さの決定に関する処理を説明するフローチャートである。
【図９】本発明の一実施形態の電子装置において実行される角度の決定に関する処理を説明するフローチャートである。
【図１０】活性化関数ｆ（ｓ，ｐ）の出力値の１つの例示である。
【図１１】本発明の一実施形態の電子装置において実行される変換済み重み付き速さの決定に関する処理を説明するフローチャートである。
【図１２】コントローラ制御部の合成ベクトルの生成を示す一例である。
【図１３】本発明の一実施形態の電子装置において実行される合成ベクトルの決定に関する処理を説明するフローチャートである。
【図１４】活性化関数ｆ1（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【図１５】活性化関数ｆ2（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【図１６】活性化関数ｆ2（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本発明の実施形態を説明する。各図において同一の符号は、特に言及が無い限り同一又は相当部分を示すものとする。また、説明の便宜上、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成についての重複説明を省略する場合がある。なお、本明細書において、ベクトルの大きさは、ベクトルのノルムを意味することができる。
【００２１】
本発明の実施形態の電子装置１０は、仮想空間に配置された仮想的なオブジェクトをユーザに提示し、ゲームを進行するゲームアプリケーションがインストールされている。電子装置１０は、例えば当該ゲームアプリケーションが実行されているときに、仮想空間内のユーザの操作対象の仮想的なオブジェクトである操作対象オブジェクトの動きなどを制御するための仮想的なコントローラ（仮想コントローラ）を提供する。仮想空間は、２次元空間であることもできるし、３次元空間であることもできる。本実施形態では、操作対象オブジェクトは、仮想空間に配置されたキャラクタである操作対象キャラクタである。例えば電子装置１０は、方向及び大きさの入力として仮想コントローラを用いて、操作対象キャラクタの移動方向及び速さなどのパラメータを決定する。ただし、操作対象オブジェクトは、仮想空間に配置されたアイテム又は仮想カメラなどとすることもできる。
【００２２】
説明の便宜上、本実施形態では、電子装置１０には上記のようなゲームアプリケーションがインストールされているものとするが、これに限定されない。電子装置１０は、ユーザの操作に応じて、操作対象オブジェクトを制御することが可能なアプリケーションを実装していればよい。例えば、電子装置１０には、ゲームアプリケーションの代わりに又はこれに追加して、ユーザの操作に応じて操作対象オブジェクトを動作させる入力支援アプリケーション又はシミュレーションアプリケーションが実装されてもよい。以下の説明において、アプリケーションは、アプリケーションプログラム全般を意味するものであり、スマートフォンやタブレット端末にインストールされるアプリを意味することができる。
【００２３】
図１は本発明の一実施形態の電子装置１０のハードウェア構成を示すブロック図である。電子装置１０は、プロセッサ１１、入力装置１２、表示装置１３、記憶装置１４、及び通信装置１５を備える。これらの各構成装置はバス１６によって接続される。なお、バス１６と各構成装置との間には必要に応じてインタフェースが介在しているものとする。本実施形態において、電子装置１０はスマートフォンである。ただし、電子装置１０は、上記の構成を備えるものであれば、タブレット型コンピュータ、タッチパッド等の接触型入力装置を備えるコンピュータなどとすることができる。
【００２４】
プロセッサ１１は、電子装置１０全体の動作を制御する。例えばプロセッサ１１は、ＣＰＵである。なお、プロセッサ１１としては、ＭＰＵ等の電子回路が用いられてもよい。プロセッサ１１は、記憶装置１４に格納されているプログラムやデータを読み込んで実行することにより、様々な処理を実行する。１つの例では、プロセッサ１１は、複数のプロセッサから構成される。
【００２５】
入力装置１２は、電子装置１０に対するユーザからの入力を受け付けるユーザインタフェースである。表示装置１３は、プロセッサ１１の制御に従って、アプリケーション画面などを電子装置１０のユーザに表示するディスプレイである。本実施形態では、入力装置１２は、タッチパネル１２であり、表示装置１３（ディスプレイ）と一体となった構造である。本実施形態では、説明の便宜上、「タッチパネル１２」は、入力装置１２及び表示装置１３を示すことができるものとする。ただし、入力装置１２は、タッチパッドとすることもでき、表示装置１３は、それに対応して、タッチパネルとは別個のディスプレイとすることもできる。
【００２６】
記憶装置１４は、主記憶装置及び補助記憶装置を含む。主記憶装置は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、プロセッサ１１が情報を処理する際の記憶領域及び作業領域として用いられる。補助記憶装置は、様々なプログラムや、各プログラムの実行に際してプロセッサ１１が使用するデータを格納する。補助記憶装置は、例えばハードディスク装置であるが、情報を格納できるものであればいかなる不揮発性ストレージ又は不揮発性メモリであってもよく、着脱可能なものであっても構わない。１つの例では、記憶装置１４は、揮発性メモリ及び不揮発性メモリを含む一般的なスマートフォンが備える記憶装置である。記憶装置１４は、ゲームアプリケーションを含む各種プログラムを記憶する。例えば、記憶装置１４は、オペレーティングシステム（ＯＳ）、ミドルウェア、アプリケーションプログラム、これらのプログラムの実行に伴って参照され得る各種データなどを格納する。
【００２７】
通信装置１５は、ネットワークを介してユーザ端末又はサーバなどの他のコンピュータとの間でデータの授受を行うことが可能な無線通信用のモジュールである。通信装置１５は、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュールなどの無線用通信デバイスとすることもできるし、イーサネットモジュールやＵＳＢインタフェースなどの有線用通信デバイスとすることもできる。１つの例では、電子装置１０は、通信装置１５によってプログラムをサーバからダウンロードして、記憶装置１４に格納する。他のコンピュータとの間でデータの送受信を行わない場合、電子装置１０は通信装置１５を備えなくてもよい。
【００２８】
図２は本発明の一実施形態の電子装置１０の機能ブロック図である。電子装置１０は、入力部２１、表示部２２、エンジン部２３、コントローラ制御部２４、及びアプリケーション部２５を備える。本実施形態においては、プログラムがプロセッサ１１により実行されることによりこれらの機能が実現される。例えば実行されるプログラムは、記憶装置１４に記憶されている又は通信装置１５を介して受信したプログラムである。このように、各種機能がプログラム読み込みにより実現されるため、１つのパート（機能）の一部又は全部を他のパートが有していてもよい。他のパートは、本実施形態に記載しないものでもよい。ただし、各機能の一部又は全部を実現するための電子回路等を構成することによりハードウェアによってもこれらの機能は実現してもよい。１つの例では、仮想コントローラは、３階層構造により実現され、エンジン部２３、コントローラ制御部２４、及びアプリケーション部２５が各層に対応する。この場合、仮想コントローラは、各層に対応する各プログラムにより構成されるプログラムがプロセッサ１１により実行されることにより実現される。
【００２９】
入力部２１は、タッチパネル１２を用いて構成されるものであり、電子装置１０に対するユーザからの入力を受け付ける。本実施形態では、入力部２１は、タッチパネル１２へのユーザのタッチ操作を受け付けてタッチイベントを発生するものである。入力部２１は、スマートフォンが一般的に有する機能である。
【００３０】
表示部２２は、ゲームアプリケーション画面（ゲーム用画面）をタッチパネル１２に表示し、ユーザ操作に応じた画面を表示する。
【００３１】
エンジン部２３は、フレームレートに対応するフレームの時間（フレーム間の時間）ごとに、タッチパネル１２へのユーザのタッチ操作により発生したタッチイベントを用いて、操作対象キャラクタのパラメータを決定するための角度を決定する。エンジン部２３は、フレームの時間ごとに、タッチパネル１２へのユーザのタッチ操作により発生したタッチイベントを用いて、操作対象キャラクタのパラメータを決定するための重み付き速さを決定する。コントローラ制御部２４は、フレームの時間ごとに、決定された重み付き速さと、決定された角度とに基づいて、操作対象キャラクタのパラメータを決定するための合成ベクトルを決定する。アプリケーション部２５は、フレームの時間ごとに、決定された合成ベクトルに基づいて、操作対象キャラクタの移動方向や移動速さなどのパラメータを決定し、操作対象キャラクタの動作などを制御する。フレームの時間Ｆ（秒）は、ゲームを実行するためのフレームレートに対応する時間である。フレームレートは、一般的に３０ｆｐｓ（フレーム毎秒）又は６０ｆｐｓである。例えばフレームレートが３０ｆｐｓの場合、Ｆは１／３０秒である。１つの例では、毎フレームでアプリケーション部２５がパラメータを決定するために、エンジン部２３は角度や重み付き速さを決定し、コントローラ制御部２４は合成ベクトルを決定する。なお、本実施形態では、「決定」することは、算出することや算出して決定することを含むことができる。
【００３２】
エンジン部２３のデータポイントの保持について説明する。エンジン部２３は、タッチパネル１２へのユーザの操作により発生したタッチイベントに基づいて、第１の軸の値及び第２の軸の値により示されるデータポイントを取得する。ここで、タッチイベントは、ユーザがタッチパネル１２へ指を接触したときに発生するｔｏｕｃｈｓｔａｒｔ、ユーザがタッチパネル１２に指を接触させたまま動かしたときに発生するｔｏｕｃｈｍｏｖｅ、ユーザがタッチパネル１２から指を離したときに発生するｔｏｕｃｈｅｎｄを含む。タッチイベントは、タッチがキャンセルされた際に発生するｔｏｕｃｈｃａｎｃｅｌを含むこともできる。
【００３３】
エンジン部２３は、タッチイベントが発生するときに、タッチイベントを取得する。エンジン部２３は、タッチイベントを取得するとき、タッチパネル１２上の静電容量が変化した位置に対応する、２つの変数からなる数値の組（ｘ、ｙ）を取得して、第１のバッファに格納する。当該２つの変数からなる数値の組のデータは、タッチイベントに付随してエンジン部２３が取得するものであり、第１の軸の値及び第２の軸の値により示されるデータポイントに対応するものである。なお、第１のバッファは、データを一時的に保持するために用意される記憶装置１４における記憶領域の１つの例示であり、データを一時的に保持可能なものであれば、これに限定されない。他のバッファについても同様である。
【００３４】
１つの例では、エンジン部２３は、２つの変数からなる数値の組（ｘ、ｙ）を取得するとともに、（ｘ、ｙ）を取得した時間ｔを取得し、３つの変数からなる数値の組（ｘ、ｙ、ｔ）を第１のバッファに格納する。ｔは（ｘ、ｙ）を取得した時間であるデータポイント取得時間を表す値であり、上記のように（ｘ、ｙ）と対応付けられて第１のバッファに格納される。例えばｔは、ＯＳから取得可能な、いわゆるＵＮＩＸ(登録商標)時間と呼ばれる整数値とすることもできるし、”2017/07/14 15:48:43.444”のような文字列とすることもできる。以下、エンジン部２３がデータポイントを保持する（又は保持を終了する）ことは、該データポイントに対応付けられたデータポイント取得時間ｔを保持する（又は保持を終了する）ことを含むことができる。
【００３５】
本実施形態では、説明の便宜上、第１の軸及び第２の軸を以下のとおり定める。図３は、本実施形態の第１の軸及び第２の軸からなる座標軸を示す図である。第１の軸は、略長方形であるタッチパネル１２の短辺と実質的に平行な横軸（ｘ軸）である。第２の軸は、タッチパネル１２の長辺と実質的に平行な縦軸（ｙ軸）である。タッチパネル１２上の位置は、第１の軸（ｘ軸）及び第２の軸（ｙ軸）により座標（ｘ、ｙ）として表される。したがって、本実施形態では、データポイントの座標（ｘ、ｙ）は、タッチパネル１２上の位置に対応し、エンジン部２３は、当該座標（ｘ、ｙ）を、データポイントとして第１のバッファに保持する。ただし、図４に示すように、第１の軸は、タッチパネル１２の長辺と実質的に平行な横軸（ｘ軸）であり、第２の軸は、タッチパネル１２の短辺と実質的に平行な縦軸（ｙ軸）であってもよい。図３や図４に示す座標設定は、一例であり、電子装置１０が実装するプログラムにより、上記例示と異なるように設定することができる。
【００３６】
図５は、図３又は図４に示すように座標軸が定められた場合の、エンジン部２３が決定する角度と角度に対応する方向の一例を説明する図である。第一象限の角度３１は方向３２に対応し、第二象限の角度３３は方向３４に対応し、第四象限の角度３５は方向３６に対応する。ここで、方向３４と方向３６の傾きは同じであるが、方向の向きが逆であるため、角度３３と角度３５は１８０度異なることが確認できる。
【００３７】
エンジン部２３は、第１のバッファに保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了する。例えば、エンジン部２３は、データポイントのデータの保持を終了する場合、該データを削除してもよいし、該データを無効化してもよいし、又は該データに保持を終了したことを示すフラグを関連付けて適宜削除するようにしてもよい。エンジン部２３は、第１のバッファに格納するデータポイントの寿命をミリ秒で指定する変数Ｄａを定める。変数Ｄａにより指定される時間が既定の保持時間に対応する。ただし、変数Ｄａの値はミリ秒に限定されない。１つの例では、変数Ｄａは１６７が設定され、エンジン部２３は、第１のバッファに格納したデータポイントを１６７ミリ秒だけ保持し、１６７ミリ秒が経過すると、該データポイントの第１のバッファへの保持を終了する。１６７ミリ秒は、ゲームを実行するためのフレームレートが３０ｆｐｓの場合における５フレームに対応する時間の１つの例示である。
【００３８】
図６は、本発明の一実施形態の電子装置１０において実行されるデータポイントの保持に関する処理を説明するフローチャートである。
【００３９】
ステップ１０１で、エンジン部２３は、タッチイベントが発生したか否かを判定する。タッチイベントが発生した場合、本フローチャートはステップ１０２へ進み、タッチイベントが発生しなかった場合、本フローチャートはステップ１０４へ進む。
【００４０】
ステップ１０２で、エンジン部２３は、発生したタッチイベントがｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌであるか否かを判定する。取得したタッチイベントがｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌでなかった場合、本フローチャートはステップ１０３へ進む。取得したタッチイベントがｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌであった場合、本フローチャートはステップ１０４へ進む。
【００４１】
ステップ１０３で、エンジン部２３は、発生したタッチイベントからデータポイントを取得し、第１のバッファに格納する。１つの例では、エンジン部２３は、格納するデータポイントに、格納後の経過時間をミリ秒で示すＴａと、第１のバッファに格納できる時間をミリ秒で示す変数Ｄａを関連付ける。
【００４２】
ステップ１０４で、エンジン部２３は、第１のバッファに保持されているデータポイントのうち、経過時間Ｔａが変数Ｄａ以上であるデータポイントの保持を終了する。１つの例では、エンジン部２３は、第１のバッファに格納する各データポイントについて、経過時間Ｔａと変数Ｄａを比較し、経過時間Ｔａが変数Ｄａ以上である場合、当該データポイントの保持を終了する。
【００４３】
ステップ１０５で、本フローチャートは、例えばゲームアプリケーションが終了するなどにより終了しない限り、ステップ１０１へ戻る。
【００４４】
エンジン部２３の重み付き速さの決定について説明する。エンジン部２３の重み付き速さの決定方法は、例えば特許第６５６０８０１号に記載されるエンジン部の重み付き速さの決定と同様の方法を用いることができる。
【００４５】
エンジン部２３は、フレームの時間ごとに、第１のバッファに保持された１又は複数のデータポイントを、データポイント列として、記憶装置１４内の第２のバッファに保持する。或いは、エンジン部２３は、第１のバッファを介さずに、タッチパネル１２へのユーザの操作により発生したタッチイベントに基づいて取得された１又は複数のデータポイントを、フレームの時間ごとに、データポイント列として第２のバッファに保持する。
【００４６】
エンジン部２３がｉ番目のフレームにおいて保持したデータポイント列Ｐ（ｉ）は、
0006862597.tif 000002
により表される。Ｐi,k（ｋ＝１〜ｍ）は、各データポイントである。データポイント列Ｐ（ｉ）が含む各データポイントは、ｉ番目のフレームの時間内に第１のバッファに保持されたデータポイントである。各データポイントＰi,k（ｋ＝１〜ｍ）のｘ座標の値及びｙ座標の値は（ｘi,k，ｙi,k）で表される。各データポイントは、Ｐi,1、Ｐi,2、…、Ｐi,mの順番に第１のバッファに格納された時間が早いものとする。エンジン部２３は、ｉ−１番目のＰ（ｉ−１）を保持してから１フレームの時間Ｆ（秒）経過後にＰ（ｉ）を保持し、更に１フレームの時間経過後にＰ（ｉ＋１）を保持する。変数ｍは、Ｐ（ｉ）が含むデータポイントの数であるため、Ｐ（ｉ）に応じて異なる。
【００４７】
エンジン部２３は、第２のバッファに保持されているデータポイント列のうち既定の保持時間を超えたデータポイント列の保持を終了する。例えばエンジン部２３は、データポイント列のデータの保持を終了する場合、該データを削除してもよいし、該データを無効化してもよいし、又は該データに保持を終了したことを示すフラグを関連付けて適宜削除するようにしてもよい。１つの例では、エンジン部２３は、第２のバッファに格納するデータポイントの寿命を指定する変数Ｄｂを定める。変数Ｄｂにより指定される時間が既定の保持時間に対応し、本実施形態ではフレームの時間に対応する。例えばエンジン部２３は、データポイント列Ｐ（ｉ）を保持した時間ｔiと対応付けて該データポイント列Ｐ（ｉ）を第２のバッファに保持する。エンジン部２３は、一のデータポイント列Ｐ（ｉ）を第２のバッファに格納すると、該データポイント列Ｐ（ｉ）が格納されてからの経過時間Ｔｂを監視し、継続的に変数Ｄｂと比較する。例えばエンジン部２３は、保持した時間ｔiを用いて、経過時間Ｔｂを算出する。エンジン部２３は、監視したデータポイント列Ｐ（ｉ）の経過時間Ｔｂが変数Ｄｂを超えたとき、該データポイント列Ｐ（ｉ）の第２のバッファへの保持を終了する。
【００４８】
本実施形態では、エンジン部２３は、５フレームに対応する時間５Ｆ（秒）、一のデータポイント列Ｐ（ｉ）を第２のバッファに保持する。したがって、エンジン部２３は、５つのデータポイント列を保持することになる。エンジン部２３は、新しいデータポイント列から順番にＰ（５）、Ｐ（４）、Ｐ（３）、Ｐ（２）、Ｐ（１）となるように５つのデータポイント列を保持する。したがって、エンジン部２３が５フレームに対応するデータポイント列を保持する場合、Ｐ（５）が最新の保持したデータポイント列となる。エンジン部２３は、新たにデータポイント列を保持する場合、新たなデータポイント列をＰ（５）として保持し、Ｐ（ｉ）（１≦ｉ≦４）をＰ（ｉ＋１）のデータで置き換える。このときエンジン部２３は、既定の保持時間を超えたＰ（１）の保持を終了する。
【００４９】
データポイント列は、データポイントの列を示すこともできるし、データポイントの行列を示すこともできる。１つの好適な例では、エンジン部２３は、フレームの時間ごとに、データポイント列として、ｘ座標の値とｙ座標の値を分けて保持する。エンジン部２３が保持するｘ座標の値の集合Ｘとｙ座標の値の集合Ｙは、各々式（１）、式（２）のとおりである。
0006862597.tif 000003
（１）
0006862597.tif 000004
（２）
ここで、ｎは、エンジン部２３が第２のバッファに保持しているデータポイント列の数であり、フレーム数に対応する。本実施形態では、エンジン部２３は５フレームに対応する時間５Ｆ（秒）データポイント列を保持するため、経過時間に応じて、ｎ＝１、ｎ＝２、ｎ＝３、ｎ＝４、ｎ＝５、ｎ＝５、…ｎ＝５となる。したがって、５フレームに対応する時間５Ｆ（秒）経過後は、ｎ＝５となる。また、最も新しく保持したデータポイント列Ｐ（ｎ）のｘ座標の値がｘn,1，…ｘn,mであり、最も新しく保持したデータポイント列Ｐ（ｎ）のｙ座標の値がｙn,1，…ｙn,mである。なお、エンジン部２３がデータポイント列を保持する時間に応じて、ｎの最大値は異なる値となる。
【００５０】
エンジン部２３は、フレームの時間ごとに、第２のバッファに保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列における変位速さを決定する。エンジン部２３は、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏り（偏差）に少なくとも基づいて、重み付き速さを決定する。１つの例では、エンジン部２３は、他の機能部やプログラムが参照可能な記憶装置１４内の所定の記憶領域に、決定した重み付き速さの値を保持する。
【００５１】
変位速さは、対象となるフレームの時間におけるデータポイント（タッチイベントが発生した位置）の変位する速さに対応する。或いは、変位速さは、対象となるフレームの時間におけるデータポイント（タッチイベントが発生した位置）の集合から算出されたユーザの指の移動速度に対応する速さということもできる。変位速さｖiは、ｉ番目のデータポイント列における変位速さ、又はｉ番目のフレームにおける変位速さである。
【００５２】
１つの例では、エンジン部２３は、保持されたデータポイント列のうち最新のデータポイント列における変位速さｖnの、該最新のデータポイント列より前に保持されたデータポイント列における変位速さｖ1〜ｖn-1の平均値に対する偏りに基づいて、重み付き速さを決定する。１つの例では、エンジン部２３は、保持されたデータポイント列のうちの一のデータポイント列における変位速さｖi（ｉ＝１〜ｎ）の、該一のデータポイント列より前に保持されたデータポイント列における変位速さｖ1〜ｖi-1の平均値に対する偏りに基づいて、重み付き速さを決定する。ここで、変位速さｖiの変位速さｖ1〜ｖi-1の平均値に対する偏りは、例えば変位速さｖiの変位速さｖ1〜ｖi-1の平均値からの偏り（偏差）である。なお、変位速さｖ1〜ｖi-1の平均値は、ｉ＝１の場合は０とし、ｉ＝２の場合はｖ1とする。
【００５３】
１つの例では、エンジン部２３は、式（３）により定められるCumulative Pointwize Deviation関数（ＣＰＤ関数）の出力値を算出し、重み付き速さとして決定する。
0006862597.tif 000005
（３）
ここで、ｎは、エンジン部２３が第２のバッファに保持しているデータポイント列の数である。
【００５４】
１つの例では、エンジン部２３が、データポイント列としてｘ座標の値とｙ座標の値を分けて保持する場合、エンジン部２３は、第２のバッファに保持されているデータポイント列におけるｘ座標の値の変位及びｙ座標の値の変位に基づいて、変位速さを決定する。１つの例では、エンジン部２３は、第２のバッファに保持されているデータポイント列において時系列的に隣接するデータポイントの変位量、及び該データポイント列が含むデータポイントの数量に基づいて、変位速さを決定する。上記例示において、エンジン部２３は、重み係数に更に基づいて変位速さを決定する。
【００５５】
１つの例では、エンジン部２３は、変位速さｖiを、式（４）を用いて算出する。
0006862597.tif 000006
（４）
ここで、αは、ディスプレイのピクセル密度ＤＰＩ（Dot-Per-Inch）に対応する係数である。αは、０以上の実数であり、一般的には１である。βは、重み係数である。βを大きくすることにより変位速さは突発的な変化を反映しやすくなり、βを小さくすることにより変位速さは突発的な変化を反映しにくくなる。Ｐ（ｉ）がデータポイントを含まない場合、エンジン部２３は、変位速さｖiを算出せず、例えばｖi＝０と設定する。Ｐ（ｉ）がデータポイントを１つのみ含む場合も、エンジン部２３は、変位速さｖiを同様に算出せず、例えばｖi＝０と設定する。
【００５６】
式（４）に示すように、エンジン部２３は、重み係数βに更に基づいて変位速さｖiを決定する。エンジン部２３は、重み係数βを、静的な値ではなく、エンジン部２３がフレームの時間ごとに決定する角度に応じた動的な値として用いる。エンジン部２３は、対象となるフレームの時間においてエンジン部２３が決定した角度が示す方向におけるｘ軸の方向及びｙ軸の方向の成分に応じて重み係数βを算出する。１つの例では、エンジン部２３は、重み係数βを、式（５）を用いて算出する。
0006862597.tif 000007
（５）
ここで、ａとｂは、予め座標軸上に設定されたｘ軸とｙ軸に２つの軸を有する仮想的な楕円の短軸（ｘ軸）及び長軸（ｙ軸）又は長軸（ｘ軸）及び短軸（ｙ軸）の長さに対応する大きさを示す値である。ａとｂは異なる大きさの値である。θはエンジン部２３がフレームの時間ごとに決定する角度であり、ｍａｘ（ａ、ｂ）はａとｂとの最大値を出力する関数である。式（５）によれば、重み係数βは、ａとｂを各々軸の長さとする楕円形の角度θにおける半径の大きさの逆数の重みを与えるものである。
【００５７】
図７は、重み係数βを説明するための概念図の一例である。ａとｂはタッチパネル１２のｘ軸の長さとｙ軸の長さとの比を示し、角度４１は、式（５）のθに対応する角度であり、ベクトル４２は、ａとｂを各々軸の長さとする楕円形の中心から楕円周までのベクトルである。重み係数βは、ベクトル４２の大きさの逆数の重みを与える重み係数であり、角度４１に応じて楕円状に値が推移する。図７のように、ａ＜ｂとすると、式（５）の分母はｂとなり、βの取りうる値は、ａ／ｂ≦β≦１となり、θ＝０°又は１８０°の場合、β＝１で最大値となり、θ＝９０°又は２７０°の場合、β＝ａ／ｂで最小値となる。したがって、エンジン部２３が決定する角度が示す方向が短軸方向への入力である場合、重み係数βはより大きくなり、変位速さｖiもより大きくなる。一方、エンジン部２３が決定する角度が示す方向が長軸方向への入力である場合、重み係数βはより小さくなり、変位速さｖiもより小さくなる。このような構成とすることにより、例えば楕円の短軸方向には加速させやすく、楕円の長軸方向には加速させにくくすることが可能となる。
【００５８】
上記例示において、仮想的な楕円の２つの軸（長軸と短軸）の長さをタッチパネル１２の長さに対応する値としたが、これに限定されない。ａとｂは、ｘ軸とｙ軸に各々平行な２つの軸を有する仮想的な楕円の２つの軸の長さに対応するものであり、例えば仮想コントローラの設計に応じて、任意の値とすることができる。また、ｍａｘ（ａ、ｂ）はａ又はｂの定数であるため、例えば仮想コントローラの設計に応じて、任意の値とすることができる。
【００５９】
ａｖｇi-1（ｖ）は、ｉ番目のフレームの直前までの変位速さｖiの平均である。ａｖｇi-1（ｖ）は、式（６）により算出する。
0006862597.tif 000008
（６）
ここで、ｉ＝１の場合は、直前までの変位速さが存在しないため、ａｖｇi-1（ｖ）＝０となる。
【００６０】
図８は、本発明の一実施形態の電子装置１０において実行される重み付き速さの決定に関する処理を説明するフローチャートである。１つの例では、電子装置１０は、フレームレートに対応する時間ごとに、本フローチャートのステップ２０１〜２０４を実行する。
【００６１】
ステップ２０１で、エンジン部２３は、１フレームの間に取得したデータポイントをデータポイント列Ｐ（ｉ）として第２のバッファに保持する。このとき、エンジン部２３は、保持するデータポイント列Ｐ（ｉ）に、格納後の経過時間をミリ秒で示すＴｂと、第２のバッファに格納できる時間（保持寿命）をミリ秒で示す変数Ｄｂを関連付ける。
【００６２】
続いてステップ２０２で、エンジン部２３は、第２のバッファに保持されているデータポイント列Ｐ（ｉ）のうち、経過時間Ｔｂが変数Ｄｂ以上であるデータポイント列Ｐ（ｉ）の保持を終了する。
【００６３】
続いてステップ２０３で、エンジン部２３は、式（３）〜（６）を用いて、重み付き速さを決定する。
【００６４】
続いてステップ２０４で、本フローチャートは、例えばゲームアプリケーションが終了するなどにより終了しない限り、ステップ２０１へ戻る。本フローチャートが終了すると、エンジン部２３は、すべてのデータポイント列Ｐ（ｉ）の保持を終了する。
【００６５】
エンジン部２３の角度の決定について説明する。エンジン部２３の角度決定方法は、例えば特許第６３８９５８１号に記載される角度決定部の角度の決定と同様の方法を用いることができる。エンジン部２３は、タッチパネルへのユーザの操作により発生したタッチイベントに基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定する。
【００６６】
エンジン部２３は、フレームの時間ごとに、角度を算出できるか否かを判定する。エンジン部２３は、角度を算出可能な場合、第１のバッファが保持するデータポイントを用いて、該データポイントの集合が示す角度を決定する。エンジン部２３は、データポイントの集合が示す角度を求めることにより、タッチパネル１２に対してタッチ操作を行ったユーザが意図する方向の角度を求めることが可能となる。１つの例では、エンジン部２３は、変数Ｂを定め、第１のバッファが保持するデータポイントの数量が変数Ｂ以上であった場合、該データポイントを用いて角度を算出（決定）し、決定した角度を保持する。この場合、エンジン部２３は、最新の決定した角度のみを保持する。エンジン部２３は、第１のバッファが保持するデータポイントの数量が変数Ｂ未満であった場合、角度を算出せずに、保持している角度を決定する。一般的には、回帰直線の傾きを求めるにあたっては３個以上のデータポイントが有ること好ましいため、変数Ｂは３以上に設定されるのが好ましい。
【００６７】
エンジン部２３は、第１のバッファに保持されているデータポイントに基づいて回帰直線の傾きを決定する。エンジン部２３は、回帰直線の傾きを決定するにあたって、第１のバッファに保持されているデータポイントにおけるｘ軸の値の変位量及びｙ軸の値の変位量に基づいて、独立変数の軸としてｘ軸及びｙ軸のいずれか一方の軸を決定する。エンジン部２３は、他方の軸を従属変数の軸として決定する。１つの例では、エンジン部２３は、最小二乗法を用いて回帰直線の傾きを算出する。
【００６８】
エンジン部２３は、独立変数の軸をｘ軸とするとき、ｙ＝ａｘ＋ｂの回帰直線の傾きａを決定し、独立変数の軸をｙ軸とするとき、ｘ＝ｃｙ＋ｄの回帰直線の傾きｃを決定する。
【００６９】
１つの例では、エンジン部２３は、第１のバッファに保持されているデータポイントにおけるｘ軸の値の最大値と最小値の差分値及びｙ軸の値の最大値と最小値の差分値に基づいて、独立変数の軸としてｘ軸及びｙ軸のいずれか一方の軸を決定し、他方の軸を従属変数の軸として決定する。１つの例では、エンジン部２３は、第１のバッファに保持されているデータポイントにおけるｘ軸の値の最大値と最小値の差分値に対して重み係数を用いて重み付けを行った値及びｙ軸の値の最大値と最小値の差分値に基づいて、独立変数の軸としてｘ軸及びｙ軸のいずれか一方の軸を決定し、他方の軸を従属変数の軸として決定する。
【００７０】
算出される回帰直線の傾きは正負の方向を持たないため、エンジン部２３は、最小二乗法を用いて回帰直線の傾きを算出する際、例えば０度〜９０度及び２７０度〜３６０度の範囲内で算出する。したがって、例えばデータポイントの集合が示す角度が、４５度の場合であっても２２５度の場合であっても、回帰直線の傾きとして４５度が算出される。そのため、エンジン部２３は、回帰直線の傾きを決定した後、データポイントの集合としての変位方向に基づいて、決定された回帰直線の傾き（角度）に対して１８０度回転させるか否かを示す回転量を決定する。１つの例では、エンジン部２３は、データポイントにおける時系列的に前後する、決定された独立変数の軸の値の差分値の正負の数量を比較することにより、回転量を決定する。ここで、データポイントの集合としての変位方向は、データポイントが時間とともに変位する方向を示すものであり、例えばユーザがタッチパネル１２上で指を動かす大まかな方向に対応するものである。
【００７１】
１つの例では、エンジン部２３は、式（７）に示す関数ａｏｐ（ｘ，ｙ）を用いて角度を決定する。関数ａｏｐ（ｘ，ｙ）は、０〜３６０度の実数で角度を算出する。エンジン部２３が関数ａｏｐ（ｘ，ｙ）を用いて角度を算出するとき、第１のバッファはｎ個のデータポイントＰを保持しているものとする。ｎ個の各データポイントＰk（ｋ＝１〜ｎ）のｘ座標の値及びｙ座標の値は（ｘk，ｙk）で表され、Ｐkは、Ｐ1、Ｐ2…、Ｐnの順番に第１のバッファに格納された時間が早いものとする。
0006862597.tif 000009
（７）
関数ａｏｐ（ｘ，ｙ）は、場合分けをするため、関数ｒｏｔａｔｅ（ｘ，ｙ）、関数ｌｅｆｔ（ｘ）、関数ｄｏｗｎ（ｙ）を使用する。最初に、関数ａｏｐ（ｘ，ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）を用いて、ｘとｙのいずれか一つを独立変数として決定する。
【００７２】
関数ｒｏｔａｔｅ（ｘ，ｙ）は、式（８）により定められる。
0006862597.tif 000010
（８）
関数ｒｏｔａｔｅ（ｘ，ｙ）は、ｎ個のデータポイントＰが主にｙ軸方向に変位しているか否かを判定し、例えば真偽値を返す。このようにして、関数ｒｏｔａｔｅ（ｘ，ｙ）は、ｎ個のデータポイントＰが主にｘ軸（左右）方向に変位しているか又は主にｙ軸（上下）方向に変位しているかを判定し、ｘ軸の値とｙ軸の値のどちらが独立変数として適切であるかを判定する。
【００７３】
式（８）において、（ｍａｘ（ｘ）―ｍｉｎ（ｘ））は、ｎ個のデータポイントＰのｘの値（ｘ1，ｘ2，…ｘn）における最大値と最小値の差分の絶対値であり、ｎ個のデータポイントＰのｘ軸方向の変位量を示す。同様にして、（ｍａｘ（ｙ）―ｍｉｎ（ｙ））は、ｎ個のデータポイントＰのｙの値（ｙ1，ｙ2，…ｙn）における最大値と最小値の差分の絶対値であり、ｎ個のデータポイントＰのｙ軸方向の変位量を示す。変数ｗは、（ｍａｘ（ｘ）―ｍｉｎ（ｘ））に対して重み付けを行う重み係数である。
【００７４】
関数ｒｏｔａｔｅ（ｘ，ｙ）は、（ｍａｘ（ｙ）―ｍｉｎ（ｙ））が（ｍａｘ（ｘ）―ｍｉｎ（ｘ））と変数ｗとの積の値よりも大きいときに不等号を満たし、関数ａｏｐ（ｘ，ｙ）は、座標変換を行う。この場合、関数ａｏｐ（ｘ，ｙ）は、ｙ軸を独立変数の軸とし、ｘ軸を従属変数の軸とし、更に関数ｄｏｗｎ（ｙ）を用いて、回転量を決定する。一方、関数ｒｏｔａｔｅ（ｘ，ｙ）は、（ｍａｘ（ｙ）―ｍｉｎ（ｙ））が（ｍａｘ（ｘ）―ｍｉｎ（ｘ））と変数ｗとの積の値以下のときに不等号を満たさず、関数ａｏｐ（ｘ，ｙ）は、座標変換を行わない。この場合、関数ａｏｐ（ｘ，ｙ）は、ｘ軸を独立変数の軸とし、ｙ軸を従属変数の軸とし、更に関数ｌｅｆｔ（ｘ）を用いて、回転量を決定する。変数ｗは、ｘ軸方向及びｙ軸方向の寸法、並びにユーザのスマートフォンの持ち方に応じて、例えば０．５又は２などに設定される。
【００７５】
関数ｌｅｆｔ（ｘ）は、式（９）により表される。
0006862597.tif 000011
（９）
関数ｌｅｆｔ（ｘ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が不等号を満たさない場合、ｎ個のデータポイントＰの変位方向が−ｘ軸方向（左方向）か否かを判定し、例えば真偽値を返す。関数ｌｅｆｔ（ｘ）は、ｎ個のデータポイントＰのｘの値（ｘ1，ｘ2，…ｘn）における時系列的に前後する値の差分値（ｘ2−ｘ1，ｘ3−ｘ2，…ｘn−ｘn-1）を算出する。関数ｌｅｆｔ（ｘ）は、差分値がマイナスとなる個数が、差分値がプラスとなる個数より多いか否かを判定することにより、ｎ個のデータポイントＰの変位方向が−ｘ軸方向（左方向）か否かを判定する。このようにして、関数ｌｅｆｔ（ｘ）は、ｎ個のデータポイントＰの変位方向が−ｘ軸方向（左方向）か＋ｘ軸方向（右方向）であるかを判定し、決定された回帰直線の傾きに対して１８０度回転させるか否かを示す回転量を決定する。例えば、関数ｌｅｆｔ（ｘ）が真である場合、関数ａｏｐ（ｘ，ｙ）は回転量を１８０度と決定し、関数ｌｅｆｔ（ｘ）が偽である場合、関数ａｏｐ（ｘ，ｙ）は回転量を０度と決定する。
【００７６】
関数ｄｏｗｎ（ｙ）は、式（１０）により表される。
0006862597.tif 000012
（１０）
関数ｄｏｗｎ（ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が不等号を満たす場合、ｎ個のデータポイントＰの変位方向が−ｙ軸方向（下方向）か否かを判定し、例えば真偽値を返す。関数ｄｏｗｎ（ｙ）は、ｎ個のデータポイントＰのｙの値（ｙ1，ｙ2，…ｙn）における時系列的に前後する値の差分値（ｙ2−ｙ1，ｙ3−ｙ2，…ｙn−ｙn-1）を算出する。関数ｄｏｗｎ（ｙ）は、差分値がマイナスとなる個数が、差分値がプラスとなる個数より多いか否かを判定することにより、ｎ個のデータポイントＰの変位方向が−ｙ軸方向（下方向）か否かを判定する。このようにして、関数ｄｏｗｎ（ｙ）は、ｎ個のデータポイントＰの変位方向が−ｙ軸方向（下方向）か＋ｙ軸方向（上方向）であるかを判定し、決定された回帰直線の傾きに対して１８０度回転させるか否かを示す回転量を決定する。例えば、関数ｄｏｗｎ（ｙ）が真である場合、関数ａｏｐ（ｘ，ｙ）は回転量を１８０度と決定し、関数ｄｏｗｎ（ｙ）が偽である場合、関数ａｏｐ（ｘ，ｙ）は回転量を０度と決定する。
【００７７】
関数ａｏｐ（ｘ，ｙ）は、上記のように、独立変数（独立変数の軸）及び回転量を決定した後、最小二乗法を用いて傾きを算出する。例えば、ｘを独立変数とし、ｙを従属変数とする場合、関数ａｏｐ（ｘ，ｙ）は、ｙ＝ａｘ＋ｂの回帰直線の傾きａを、式（１１）により算出している。
0006862597.tif 000013
（１１）
ここで、
0006862597.tif 000014
は、ｘ（独立変数）の平均であり、
0006862597.tif 000015
は、ｙ（従属変数）の平均であり、
0006862597.tif 000016
は、ｘ（独立変数）とｙ（従属変数）の共分散であり、
0006862597.tif 000017
は、ｘ（独立変数）の分散である。
【００７８】
ｙを独立変数とし、ｘを従属変数とする場合の、関数ａｏｐ（ｘ，ｙ）によるｘ＝ｃｙ＋ｄの回帰直線の傾きｃの求め方も同様に、式（１２）により算出される
0006862597.tif 000018
（１２）
【００７９】
関数ａｏｐ（ｘ，ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が偽であり、関数ｌｅｆｔ（ｘ）が偽である場合、回帰直線の傾きから得られる角度をそのまま算出する。関数ａｏｐ（ｘ，ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が偽であり、関数ｌｅｆｔ（ｘ）が真である場合、回帰直線の傾きから得られる角度に１８０度プラスした角度を算出する。関数ａｏｐ（ｘ，ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が真であり、関数ｄｏｗｎ（ｙ）が偽である場合、回帰直線の傾きから得られる角度を９０度から引くことにより角度を算出する。関数ａｏｐ（ｘ，ｙ）は、関数ｒｏｔａｔｅ（ｘ，ｙ）が真であり、関数ｄｏｗｎ（ｙ）が真である場合、回帰直線の傾きから得られる角度を９０度から引くことにより算出した角度に１８０度プラスした角度を算出する。
【００８０】
１つの例では、エンジン部２３は、ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生しない限り、他の機能部やプログラムが参照可能な記憶装置１４内の所定の記憶領域に、決定した角度の値を保持する。本実施形態では、エンジン部２３は、最新の決定した角度のみを保持する。
【００８１】
図９は、本発明の一実施形態の電子装置１０において実行される角度の決定に関する処理を説明するフローチャートである。１つの例では、電子装置１０は、フレームレートに対応するフレームの時間ごとに、本フローチャートのステップ３０１〜３０９を実行する。
【００８２】
ステップ３０１で、エンジン部２３は、ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌのタッチイベントが発生したか否かを判定する。１つの例では、エンジン部２３は、１フレームの間に当該タッチイベントが発生したか否かを判定する。ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生していない場合、本フローチャートはステップ３０２へ進む。ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生した場合、本フローチャートはステップ３０９へ進む。
【００８３】
ステップ３０２で、エンジン部２３は、第１のバッファが保持するデータポイントの個数ｎが変数Ｂの数以上であるか否かを判定する。個数ｎが変数Ｂ以上である場合、本フローチャートはステップ３０３へ進み、個数ｎが変数Ｂ未満であった場合、本フローチャートはステップ３０７へ進む。
【００８４】
ステップ３０３で、エンジン部２３は、第１のバッファに保持されているデータポイントにおけるｘ軸の値の変位量及びｙ軸の値の変位量に基づいて、独立変数の軸としてｘ軸及びｙ軸のいずれか一方の軸を決定する。エンジン部２３は、同時に他方の軸を従属変数の軸として決定する。
【００８５】
続いてステップ３０４で、エンジン部２３は、ステップ３０３でｘ軸が独立変数の軸として決定された場合、式（１１）を用いて傾きの角度を算出することにより、回帰直線の傾きの角度を決定する。エンジン部２３は、ステップ３０３でｙ軸が独立変数の軸として決定された場合、式（１２）を用いて傾きの角度を算出し、算出した角度を９０度から引くことにより、回帰直線の傾きの角度を決定する。１つの例では、エンジン部２３は、式（１１）又は式（１２）を用いて傾きの角度を算出する際、０度〜９０度及び２７０度〜３６０度の範囲内で算出する。
【００８６】
続いてステップ３０５で、エンジン部２３は、第１のバッファに保持されているデータポイントの集合としての変位方向に基づいて、決定された回帰直線の傾きに対して１８０度回転させるか否かを示す回転量を決定する。１つの例では、エンジン部２３は、ステップ１０８でｘ軸が独立変数の軸として決定された場合、時系列的に前後するｘ軸の値の差分値を各々算出する。エンジン部２３は、算出した差分値がマイナスとなる個数がプラスとなる個数よりも多いとき、回転量を１８０度に決定し、少ないとき、回転量を０度に決定する。１つの例では、エンジン部２３は、ステップ１０８でｙ軸が独立変数の軸として決定された場合、時系列的に前後するｙ軸の値の差分値を各々算出する。エンジン部２３は、算出した差分値がマイナスとなる個数がプラスとなる個数よりも多いとき、回転量を１８０度に決定し、少ないとき、回転量を０度に決定する。
【００８７】
続いてステップ３０６で、エンジン部２３は、決定された回帰直線の傾き及び決定された回転量に基づいて、角度を決定し、保持する。１つの例では、エンジン部２３は、決定された回帰直線の傾きに対応する角度に決定された回転量を加算することにより、角度を決定する。回転量が０度の場合、エンジン部２３が決定する角度は、決定された回帰直線の傾きに対応する角度となる。本フローチャートは、ステップ３０８へ進む。
【００８８】
ステップ３０７で、エンジン部２３は、保持された角度を決定（出力）する。保持された角度が無い場合、エンジン部２３は、ＮＵＬＬなどの角度を保持しないことを示すデータを決定（出力）する。本フローチャートは、ステップ３０８へ進む。
【００８９】
ステップ３０８で、本フローチャートは、例えばゲームアプリケーションが終了するなどにより終了する場合、３０９へ進み、そうでない場合、ステップ３０１へ戻る。ステップ３０９で、エンジン部２３は、角度の保持を終了する。
【００９０】
コントローラ制御部２４は、所定の関数に、決定した重み付き速さを入力することにより、フレームの時間ごとに、変換済み重み付き速さを決定する。所定の関数は、入力された値に対応する値を決定し、該決定された値のうちの最大値を保持して決定（出力）する関数である。コントローラ制御部２４が決定する変換済み重み付き速さが操作対象キャラクタの移動方向及び速さなどのパラメータを決定するための重み付き速さである。１つの例では、コントローラ制御部２４は、フレームの時間ごとに、決定した重み付き速さを所定の関数に入力する。所定の関数は、フレームの時間ごとに、入力された値に対応する値を決定し、該決定した値と、所定の関数がこれまでに決定した値のうちの最大値との大きい方の値を出力し、保持する。例えば所定の関数は、ｉ番目のフレームにおいて出力した値を保持し、ｉ＋１番目のフレームにおいて、該保持した値を、所定の関数がこれまでに決定した値のうちの最大値として用いる。１つの例では、コントローラ制御部２４は、ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生しない限り、他の機能部やプログラムが参照可能な記憶装置１４内の所定の記憶領域に、決定した変換済み重み付き速さの値を保持する。
【００９１】
１つの例では、所定の関数は、ＡとＢとの最大値を出力する関数ｍａｘ｛Ａ，Ｂ｝を用いた式（１３）により定められる活性化関数ｆ（ｓ，ｐ）である。コントローラ制御部２４は、活性化関数ｆ（ｓ，ｐ）の出力値を変換済み重み付き速さとして決定する。
0006862597.tif 000019
（１３）
ここで、ｓは、最新の決定されたＣＰＤ関数の出力値（重み付き速さ）であり、ｐは、活性化関数ｆ（ｓ，ｐ）が直前に出力して保持した値である。直前に出力した値とは、コントローラ制御部２４が一のフレームにおける活性化関数ｆ（ｓ，ｐ）の出力値（変換済み重み付き速さ）を決定する場合に、一のフレームの直前のフレームにおいて決定された活性化関数ｆ（ｓ，ｐ）の出力値である。活性化関数ｆ（ｓ，ｐ）は、ｓを入力として０〜１の実数ｏを決定し、ｏとｐを比較し、ｏがｐ以上であればｏを出力し、ｏがｐ未満であればｐを出力する。したがって、活性化関数ｆ（ｓ，ｐ）の出力値は、ｐを下回ることはない。本実施形態では、実数ｏは、ＣＰＤ関数の出力値ｓを所定の定数Ｃ1で割った値である。例えば所定の定数Ｃ1は、実数ｏが０〜１の実数となるように、ＣＰＤ関数の出力値が取りうる最大値に設定される。なお、活性化関数ｆ（ｓ，ｐ）が決定する実数ｏの範囲０〜１は、他の数値範囲とすることができる。
【００９２】
ＣＰＤ関数は、フレームごとに連続的に値を算出するため、その出力値は、ユーザの指の非連続な動きに応じて非連続的に変化し、大きく変動する場合が多い。図１０は、活性化関数ｆ（ｓ，ｐ）の出力値の１つの例示である。活性化関数ｆ（ｓ，ｐ）の出力値は、時間経過とともに上がることはあっても下がることはなく、連続的に変化する。このように、活性化関数ｆ（ｓ，ｐ）はＣＰＤ関数の値を安定した出力値に変換する。活性化関数ｆ（ｓ，ｐ）は、タッチパネル１２へのユーザの操作によりタッチ終了(ｔｏｕｃｈｅｎｄ）又はタッチキャンセル（ｔｏｕｃｈｃａｎｃｅｌ）のタッチイベントが発生した場合、ｐの保持を終了し、その出力値はゼロ又はＮＵＬＬとなる。
【００９３】
図１１は、本発明の一実施形態の電子装置１０において実行される変換済み重み付き速さの決定に関する処理を説明するフローチャートである。１つの例では、電子装置１０は、フレームレートに対応するフレームの時間ごとに、本フローチャートのステップ４０１〜４０４を実行する。
【００９４】
ステップ４０１で、コントローラ制御部２４は、ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌのタッチイベントが発生したか否かを判定する。１つの例では、コントローラ制御部２４は、１フレームの間に当該タッチイベントが発生したか否かを判定する。ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生していない場合、本フローチャートはステップ４０２へ進み、その後ステップ４０４へ進む。ｔｏｕｃｈｅｎｄ又はｔｏｕｃｈｃａｎｃｅｌが発生した場合、本フローチャートはステップ４０３へ進み、その後ステップ４０４へ進む。
【００９５】
ステップ４０２で、コントローラ制御部２４は、式（１３）を用いて、変換済み重み付き速さを決定する。このとき、コントローラ制御部２４は、記憶装置１４内の所定の記憶領域に、決定した変換済み重み付き速さを保持する。この保持した変換済み重み付き速さは、次回のステップ４０２の処理においてコントローラ制御部２４が式（１３）を用いる際に、ｐとして参照する値である。１つの例では、コントローラ制御部２４は、フレームレートに対応する時間ごとに実行されるステップ４０２で、フレームレートに対応する時間ごとに実行されるステップ２０３で決定した最新の重み付き速さ及び式（１３）を用いて、変換済み重み付き速さを決定する。
【００９６】
ステップ４０３で、コントローラ制御部２４は、変換済み重み付き速さの保持を終了する。
【００９７】
ステップ４０４で、本フローチャートは、例えばゲームアプリケーションが終了するなどにより終了しない限り、ステップ４０１へ戻る。本フローチャートが終了すると、コントローラ制御部２４は、変換済み重み付き速さの保持を終了する。
【００９８】
コントローラ制御部２４は、フレームの時間ごとに、エンジン部２３が決定した角度及びコントローラ制御部２４が決定した変換済み重み付き速さを用いて、合成ベクトルを決定（生成）する。１つの例では、コントローラ制御部２４は、所定の記憶領域に保持された変換済み重み付き速さの値と、所定の記憶領域に保持された角度の値を持つ単位ベクトルとに基づいて、合成ベクトルを生成する。コントローラ制御部２４は、生成した合成ベクトルのデータを所定の記憶領域に保持する。
【００９９】
１つの例では、コントローラ制御部２４は、式（１４）を用いて合成ベクトルｃｏｍｐｏｓｅ（ｖ）を決定（算出）する。
0006862597.tif 000020
（１４）
ここで、
0006862597.tif 000021
は、コントローラ制御部２４が直前に決定して保持している合成ベクトルであり、
0006862597.tif 000022
は、コントローラ制御部２４が保持する合成ベクトルに加算する加算ベクトルであり、ｆ（ｓ，ｐ）は、コントローラ制御部２４が決定した最新の変換済み重み付き速さであり、
0006862597.tif 000023
は、エンジン部２３が決定した角度を持つ単位ベクトルであり、γは、加算ベクトルに対する重みである。なお、直前に決定して保持している合成ベクトルは、コントローラ制御部２４が一のフレームにおける合成ベクトルを決定する場合に、一のフレームの直前のフレームにおいて決定して保持された合成ベクトルである。式（１４）が示すように、合成ベクトル
0006862597.tif 000024
は、最大値が１．０を超えないように正規化される。なお、合成ベクトルの最大値を１．０とするのは１つの例示であって、合成ベクトルの最大値は他の数値とすることができる。
【０１００】
式（１４）に示すように、コントローラ制御部２４は、重みγの逆数の重み係数１／γに基づいて、加算ベクトルを決定し、合成ベクトルを決定する。重み係数βと同様にして、コントローラ制御部２４は、重み係数１／γを、静的な値ではなく、エンジン部２３がフレームの時間ごとに決定する角度に応じた動的な値として用いる。コントローラ制御部２４は、対象となるフレームの時間においてエンジン部２３が決定した角度が示す方向におけるｘ軸の方向及びｙ軸の方向の成分に応じて重み係数１／γを算出する。１つの例では、コントローラ制御部２４は、重み係数１／γを、式（１５）を用いて算出する。
0006862597.tif 000025
（１５）
ここで、ａとｂは、予め座標軸上に設定されたｘ軸とｙ軸に２つの軸を有する仮想的な楕円の短軸（ｘ軸）及び長軸（ｙ軸）又は長軸（ｘ軸）及び短軸（ｙ軸）の長さに対応する大きさを示す値である。ａとｂは異なる大きさの値である。θはエンジン部２３がフレームの時間ごとに決定する角度である。このように、重み係数１／γは、仮想的な楕円に関する基本的な概念は重み係数βと同様である。Ｃ2は、コントローラ制御部２４が直前に決定して保持している合成ベクトルに対する加算ベクトルの影響を調整するための定数であり、この値を大きくすればするほど、加算ベクトルの大きさは小さくなるため、加速がゆっくりと行われるようになる。例えば、ｆ（ｓ、ｐ）の取りうる最大値が１であるのに対して、定数Ｃ2は、２０に設定される。ａとｂは、ｘ軸とｙ軸に各々平行な２つの軸を有する仮想的な楕円の２つの軸の長さに対応するものであり、例えば仮想コントローラの設計に応じて、任意の値とすることができる。また、ａ・ｂは定数であるため、例えば仮想コントローラの設計に応じて、任意の値とすることができる。
【０１０１】
図１２は、コントローラ制御部２４の合成ベクトルの生成を示す一例である。１番目のフレームは、加算ベクトルがゼロベクトルであり、コントローラ制御部２４が保持するベクトルもゼロベクトルである場合を想定している。この場合、合成ベクトルもゼロベクトルである。加算ベクトルがゼロベクトルとなるのは、主として、エンジン部２３が、データポイントを取得して保持しない場合、すなわちタッチイベントが発生しない場合である。以下、ｉ番目のフレームにおける加算ベクトル及び合成ベクトルを各々
0006862597.tif 000026
と表す。
【０１０２】
２番目のフレームは、加算ベクトルがゼロベクトルではない場合を想定している。この場合、コントローラ制御部２４が保持するベクトルがゼロベクトルであるため、合成ベクトルは
0006862597.tif 000027
となり、加算ベクトルがそのまま合成ベクトルとなることが確認できる。
【０１０３】
３番目のフレームは、更に加算ベクトルが加えられた場合を想定している。この場合、コントローラ制御部２４が保持するベクトルは、
0006862597.tif 000028
であるため、合成ベクトルは
0006862597.tif 000029
となり、コントローラ制御部２４が保持するベクトルと加算ベクトルとの和のベクトルとなる。
【０１０４】
４番目のフレームは、更に加算ベクトルが加えられ、合成ベクトルの大きさ（ノルム）が１を超えた場合を想定している。この場合、合成ベクトルは
0006862597.tif 000030
となり、コントローラ制御部２４が保持するベクトルと加算ベクトルとの和のベクトルであってノルムが１のベクトルとなる。
【０１０５】
本実施形態では、エンジン部２３は、フレームの時間ごとに、角度と重み付き速さとを決定し、コントローラ制御部２４は、フレームの時間ごとに、変換済み重み付き速さを決定する。このようにして、コントローラ制御部２４が各フレームで加算ベクトルを決定し、合成ベクトルを決定できるように構成される。
【０１０６】
コントローラ制御部２４が決定した合成ベクトルの方向（角度）及び大きさは、仮想コントローラの方向及び大きさの入力に対応するものである。合成ベクトルは、タッチ操作を行ったユーザが意図する方向と大きさを持つベクトルということもできる。上記より、加算ベクトルを決定するのに用いられる変換済み重み付き速さ、角度、及び重み係数１／γは、仮想コントローラの方向及び大きさの入力に寄与するものである。また変換済み重み付き速さを決定するのに用いられる重み付き速さ及び重み付き速さを決定するのに用いられる重み係数βも、仮想コントローラの方向及び大きさの入力に寄与するものである。ただし、本実施形態では、仮想コントローラという概念は必須ではなく、コントローラ制御部２４が、各フレームで合成ベクトルを生成（決定）し、アプリケーション部２５へ決定した合成ベクトルを受け渡すことができるものであればよい。
【０１０７】
アプリケーション部２５は、ゲーム内の動作等を実装する具体的なゲームアプリケーションに対応する。例えば、アプリケーション部２５は、電子装置１０にインストールされたゲームアプリに実装される機能である。ゲームアプリケーションは、一般的なゲームアプリケーションと同様にして、例えばフレームレートに対応する時間ごとに、メインプログラムのメインループを処理する。ただし、アプリケーション部２５は、ユーザの操作に応じて操作対象オブジェクトを動作させる入力支援アプリケーション又はシミュレーションアプリケーションに対応するものとすることができる。
【０１０８】
図１３は、本発明の一実施形態の電子装置１０において実行される合成ベクトルの決定に関する処理を説明するフローチャートである。１つの例では、電子装置１０は、フレームレートに対応する時間ごとに、本フローチャートのステップ５０１〜５０５を実行する。
【０１０９】
ステップ５０１では、エンジン部２３は、ステップ３０６又は３０７に対応する処理により角度を決定するとともに、ステップ２０３に対応する処理により重み付き速さを決定する。ステップ５０２では、コントローラ制御部２４は、ステップ４０２に対応する処理により、変換済み重み付き速さを決定する。
【０１１０】
ステップ５０３で、コントローラ制御部２４は、ステップ５０１で決定した角度と、ステップ５０２で決定した変換済み重み付き速さと、式（１４）とを用いて、加算ベクトル
0006862597.tif 000031
を決定する。
【０１１１】
ステップ５０４で、コントローラ制御部２４は、ステップ５０３で決定した加算ベクトル
0006862597.tif 000032
と、コントローラ制御部２４が直前に決定して保持している合成ベクトル
0006862597.tif 000033
との和に基づいて、合成ベクトル
0006862597.tif 000034
を決定し、保持する。この保持した合成ベクトルは、コントローラ制御部２４が次回のステップ５０４の処理において参照する、直前に決定して保持している合成ベクトル
0006862597.tif 000035
である。
【０１１２】
ステップ５０５で、本フローチャートは、例えばゲームアプリケーションが終了するなどにより終了しない限り、ステップ５０１へ戻る。本フローチャートが終了すると、コントローラ制御部２４は、合成ベクトルの保持を終了する。
【０１１３】
１つの例では、コントローラ制御部２４が生成した合成ベクトルの角度及び大きさは、操作対象キャラクタのモーションなどの操作対象キャラクタのパラメータに変換するものである。１つの例では、アプリケーション部２５は、フレームの時間ごとに決定される合成ベクトルの方向及び大きさの各々が、フレームの時間ごとの操作対象キャラクタの移動方向及び移動速さの各々となるように処理を実行する。１つの例では、アプリケーション部２５は、合成ベクトルの大きさに基づいて、操作対象キャラクタの移動状態を決定する。例えば、アプリケーション部２５は、合成ベクトルの大きさが、（ａ）閾値ｔ１以下のときは「歩き」と判定し、（ｂ）閾値ｔ１より大きく閾値ｔ２以下のときは「早歩き」と判定し、（ｃ）閾値ｔ２より大きいときは「走り」と判定する。
【０１１４】
次に、本発明の実施形態による電子装置１０の主な作用効果について説明する。
エンジン部２３は、タッチパネル１２へのユーザの操作により発生したタッチイベントに基づいて、データポイントを取得し、第１のバッファに格納する。
エンジン部２３は、第１のバッファに格納されたデータポイントに基づいて、フレームの時間ごとに、データポイントの集合が示す角度を決定する。例えば、エンジン部２３は、当該角度を決定するにあたって、第１のバッファに保持されているデータポイントのうち既定の保持時間を超えたデータポイントの保持を終了し、第１のバッファに保持されているデータポイントに基づいて回帰直線の傾きを決定し、データポイントの集合としての変位方向に基づいて、決定された回帰直線の傾きに対して１８０度回転させるか否かを示す回転量を決定し、決定された回帰直線の傾き及び決定された回転量に基づいて、角度を決定する。
エンジン部２３は、フレームの時間ごとに、第１のバッファに保持されたデータポイントを、データポイント列として、第２のバッファに保持する。エンジン部２３は、第２のバッファに保持されたデータポイント列におけるデータポイントの変位に基づいて該データポイント列における変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏り（偏差）に少なくとも基づいて、重み付き速さを決定する。例えば、エンジン部２３は、フレームの時間ごとに、式（３）のＣＰＤ関数を用いて、重み付き速さを決定する。コントローラ制御部２４は、フレームの時間ごとに、入力された値に対応する値を決定する活性化関数ｆ（ｓ，ｐ）に、決定された重み付き速さを入力することにより、変換済み重み付き速さを決定する。
コントローラ制御部２４は、フレームの時間ごとに、決定された変換済み重み付き速さと、決定された角度を持つ単位ベクトルと、重み係数１／γとに基づいて合成ベクトルを決定する。例えば、コントローラ制御部２４は、式（１４）を用いて合成ベクトルを算出する。
このようにして、本実施形態では、仮想コントローラの方向及び大きさの入力に対応する合成ベクトルを出力することが可能となる。
【０１１５】
本実施形態では、エンジン部２３は、変位速さを決定するとき、式（５）及びエンジン部２３が決定した角度を用いて重み係数βを算出し、式（４）及び算出した重み係数βを用いて、変位速さを決定する。変位速さは、対象となるフレームの時間におけるデータポイントの変位する速さに対応し、ユーザの指の移動速度に対応するものと解釈できるものである。重み係数βは、その値が大きいほど変位速さが大きくなるものであり、例えば操作対象キャラクタを加速させやすいように設計する場合、重み係数βは比較的大きな値に設定される。従来、重み係数βは定数の値が設定されていたが、本実施形態では、重み係数βは、式（５）に示すように、予め設定された長さの異なるａとｂを各々軸の長さとする楕円形の角度θにおける半径の大きさの逆数の重みを与える。したがって、重み係数βにより、楕円形の長軸方向の入力に対しては、より小さい値（重み）を与え、楕円形の短軸方向の入力に対しては、より大きい値（重み）を与えることが可能となる。これにより、特定の軸方向の入力に対してのみ、比較的大きな変位速さを算出するように構成することが可能となり、例えば特定の軸方向の入力に対してのみ、操作対象キャラクタを加速させやすくするように設計することが可能となる。
【０１１６】
また本実施形態では、コントローラ制御部２４は、合成ベクトルを算出するとき、エンジン部２３が決定する角度及び式（１５）を用いて重み係数１／γを算出する。重み係数１／γは、式（１５）に示すように、仮想的な楕円に関する基本的な概念は重み係数βと同様である。したがって、重み係数１／γにより、楕円形の長軸方向の入力に対しては、より小さい値（重み）を与え、楕円形の短軸方向の入力に対しては、より大きい値（重み）を与えることが可能となる。これにより、特定の軸方向の入力に対してのみ、比較的大きなノルムの加算ベクトルを算出するように構成することが可能となり、例えば特定の軸方向の入力に対してのみ、操作対象キャラクタを加速させやすくするように設計することが可能となる。
【０１１７】
このように本実施形態では、合成ベクトルを算出するにあたって、毎フレームで、エンジン部２３による重み付き速さの算出の場面及びコントローラ制御部２４による合成ベクトルの算出の場面において、予め設定された仮想的な楕円形の入力方向に応じた半径の大きさの逆数の重みを与えることができる。これにより、特定の軸方向の入力に対してのみ、より大きな値を入力させることが可能となり、ユーザが指を傾けにくい方向への入力を支援する入力方法を実現することが可能となる。例えば、ユーザの好みや指の形、又はタッチパネル１２の縦向きと横向きの使用に応じて、仮想的な楕円の２つの軸の長さを調整又は切り替えることにより、ユーザが指を傾けにくい方向などに柔軟に加速のアシストを行うことが可能となる。このように、ゲーム内容やユーザの癖に応じて、仮想コントローラを容易にカスタイマイズすることが可能となるため、より操作性の高い仮想コントローラ、すなわちユーザがより操作しやすい入力方法を実現することが可能となる。
【０１１８】
なお、重み係数が定数の場合、仮想コントローラは、３６０°のいずれの方向への入力に対しても同じ重みを加えるように構成され、例えば操作対象キャラクタを等しく加速させるように合成ベクトルを算出する。このような仮想コントローラは、正円の範囲で動くジョイスティックの挙動を模すものであり、指を動かしにくい方向への入力を考慮するものではない。本実施形態のように、２つの軸の長さをカスタイマイズした楕円形の範囲で動くジョイスティックの挙動を模した入力方法を提供することにより、指を動かしにくい方向への入力を考慮した入力方法を実現することが可能となる。
【０１１９】
また本実施形態では、ＣＰＤ関数は、各フレームの変位速さが、その直前のフレームまでの変位速さの平均値よりも大きい値を保持するときに、より大きな値を出力する。ＣＰＤ関数は、ユーザが意図的に指を早く動かした場合、必然的に指が一定の時間加速することになるため、より大きな値を出力する。ＣＰＤ関数は、タッチパネル１２と指の接触状況により、１フレームの時間のみ変位速さが大きくなった場合、１／ｎを乗算することにより平準化されるため、特にｎが最大値のときには極端に大きな値を出力することがない。このように、ＣＰＤ関数の出力値は、意図的に指を加速し続けている場合に大きな値となり、意図的に加速しないときは大きな値をとらないため、ユーザの直感的な操作に対応させた大きさとすることができる。更に、ＣＰＤ関数は平均値に対する偏り（偏差）を用いることで、ユーザごとの指を動かす速さの癖や個人差を吸収するため、電子装置１０は、ＣＰＤ関数を用いることにより、意図的な加速のみを検出することが可能となる。
【０１２０】
一方、ＣＰＤ関数は、フレームごとに連続的に値を算出するため、ユーザの指の非連続な動きに応じて非連続的に変化する値を出力する場合が多い。本実施形態では、直前に出力した値ｐを下回らない値を出力するラチェットのような特性を有する活性化関数ｆ（ｓ，ｐ）に、ＣＰＤ関数の出力を入力することにより、ＣＰＤ関数の出力値をより安定した出力値に変換することが可能である。このような構成とすることにより、非連続な指の動きの速さを反映したＣＰＤ関数の出力値をより安定した出力値に変換することが可能となる。これにより、ユーザの意図した入力を反映しつつ、操作対象キャラクタの移動方向や移動速さなどのパラメータを安定した値とすることが可能となり、よりユーザが操作しやすい入力方法を実現することが可能となる。
【０１２１】
また本実施形態では、活性化関数ｆ（ｓ，ｐ）は、タッチパネル１２へのユーザの操作によりタッチ終了又はタッチキャンセルのタッチイベントが発生した場合、最大値の保持を終了する。このような構成とすることにより、タッチが継続する間だけ、非連続な指の動きの速さを反映したＣＰＤ関数の不安定な出力値を安定した出力値に変換し、タッチの継続の終了とともに、出力値をゼロとすることが可能となる。
【０１２２】
また本実施形態では、上記のように、エンジン部２３は、角度を決定し、コントローラ制御部２４は、決定された変換済み重み付き速さ及び決定された角度を持つ単位ベクトルに基づいて合成ベクトルを決定（出力）する。このようにして、本実施形態では、タッチパネル１２に対してタッチ操作を行ったユーザが意図する方向と大きさを持つ合成ベクトルを決定（出力）することが可能となる。このように合成ベクトルを出力する構成とすることにより、エンジン部２３が決定（算出）する角度及び速さ（重み付き速さ）の値を、操作対象キャラクタのモーションなどの操作対象キャラクタのパラメータに変換することが可能となる。或いは、エンジン部２３が決定（算出）する角度及び速さ（重み付き速さ）の値を、仮想コントローラの方向及び大きさの入力へ変換することが可能となる。これにより、より高い応答性を備え、よりユーザの直感に適合した仮想コントローラを実現することが可能となる。例えば、合成ベクトルは、タッチが継続する間、加算ベクトルが継続して加算されるものであるが、方向Ｄ１へ指を転がせた後で該方向Ｄ１とは正反対の方向Ｄ２へ指を転がせた場合、合成ベクトルの大きさは、式（１４）が示すように、一度小さくなる。その後、合成ベクトルは、より大きなノルムを有する方向Ｄ２を向いたベクトルとなるため、ユーザの直感に適合するものである。
【０１２３】
なお本実施形態では、エンジン部２３は極めて短い時間に発生するタッチイベントに基づいて角度及び重み付き速さを算出し続ける構成である。そのため、過去のタッチ座標を基準点として用いることなく、仮想コントローラの角度及び大きさの入力又は操作対象キャラクタのパラメータを算出することが可能となる。このように、本実施形態では、電子装置１０は、従来技術における仮想コントローラで使用されていた、開始点（開始座標）や終了点（終了座標）といった点という空間的な概念を使用せずに角度及び大きさを算出する。
【０１２４】
また本実施形態では、電子装置１０は、従来技術における仮想コントローラと異なり、基準座標からの指の移動距離に応じた入力ではないため、指の移動量がより少ない操作により、ユーザが意図する操作を実現することが可能となる。したがって、従来技術と比較して、より小さい実装面積で実現することが可能となる。例えば、タッチパネル１２の大きさに関わらず、同一の操作性を実現することが可能となる。
【０１２５】
上記の作用効果は、特に言及が無い限り、他の実施形態や他の実施例においても同様である。
【０１２６】
本発明の他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムや該プログラムを格納したコンピュータ読み取り可能な記憶媒体とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する方法とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムをコンピュータに供給することができるサーバとすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する仮想マシンとすることもできる。
【０１２７】
以下に本発明の実施形態の変形例について説明する。以下、主に本発明の実施形態との相違点について説明する。以下で述べる変形例は、矛盾が生じない限りにおいて、適宜組み合わせて本発明の任意の実施形態又は変形例に適用することができる。
【０１２８】
１つの変形例では、重み係数１／γは、定数であり、コントローラ制御部２４は、式（１５）を用いて重み係数１／γを算出しない。本変形例においても、エンジン部２３は、重み係数βを、式（５）を用いて算出するため、特定の軸方向の入力に対してのみ、比較的大きな変位速さを算出するように構成することが可能となる。
【０１２９】
１つの変形例では、重み係数βは、定数であり、エンジン部２３は、式（５）を用いて重み係数βを算出しない。本変形例においても、コントローラ制御部２４は、重み係数１／γを、式（１５）を用いて算出するため、特定の軸方向の入力に対してのみ、比較的大きなノルムの加算ベクトルを算出するように構成することが可能となる。
【０１３０】
１つの変形例では、重み係数βは、式（５）に示すように、予め設定された長さの異なるａとｂを各々軸の長さとする楕円形の角度θにおける半径の大きさの逆数の重みを与えるものではない。その代わりに、重み係数βは、予め設定された長さの異なるａとｂを各々軸の長さとする楕円形と類似する形状又は性質を有する多角形の角度θにおける中心から多角形の辺までの長さの逆数の重みを与える。多角形の角度θにおける中心から多角形の辺までの長さは、中心と、中心から角度θに伸びる直線と多角形の辺との交点との間の長さである。これにより、重み係数βは、式（５）を用いて算出されるものと類似する重みを与えることができる。例えば、ａとｂを各々軸の長さとする楕円形と類似する形状又は性質を有する多角形は、当該楕円形に外接する多角形又は内接する多角形である。エンジン部２３は、角度θが示す方向におけるｘ軸の方向及びｙ軸の方向の成分に応じて重み係数βを算出することができるが、本変形例が示すような多角形に基づく関数を用いて、重み係数βを算出することができる。重み係数１／γも、重み係数βの代わりに、又は重み係数βに加えて、予め設定された長さの異なるａとｂを各々軸の長さとする楕円形と類似する形状又は性質を有する多角形の角度θにおける中心から多角形の辺までの長さの逆数の重みを与えるものとすることができる。コントローラ制御部２４は、角度θが示す方向におけるｘ軸の方向及びｙ軸の方向の成分に応じて重み係数１／γを算出することができるが、本変形例が示すような多角形に基づく関数を用いて、重み係数１／γを算出することができる。
【０１３１】
１つの変形例では、コントローラ制御部２４は、変換済み重み付き速さを算出せず、式（１４）においてｆ（ｓ、ｐ）の代わりにＣＰＤ関数の出力値である重み付き速さを用いて、合成ベクトルを算出する。本変形例は、ＣＰＤ関数の出力値を安定した出力値に変換する構成ではない。本変形例においても、特定の軸方向の入力に対してのみ、比較的大きな変位速さ又は比較的大きなノルムの加算ベクトルを算出するように構成することが可能となり、例えば特定の軸方向の入力に対してのみ、操作対象キャラクタを加速させやすくするように設計することが可能となる。
【０１３２】
１つの変形例では、所定の関数は、式（１３）ではなく、入力された値が所定の閾値以上であることに応じて閾値に応じた大きさの定数を決定することにより入力された値に対応する値を決定するように構成される。例えば所定の関数は、式（１６）により定められる活性化関数ｆ1（ｓ，ｐ）である。ｓとｐは、式（１３）のｆ（ｓ，ｐ）の場合と同じであり、ＣＰＤ関数の出力値であるｓが入力であり、ｐはｆ1（ｓ，ｐ）が直前に出力した値である。
0006862597.tif 000036
（１６）
【０１３３】
活性化関数ｆ1（ｓ，ｐ）は、ｓを入力として、閾値ｔ1及びｔ2（ｔ1＜ｔ2）との比較、並びにｐの値とｂ1及び１．０との比較により、実数ａ1、実数ｂ1、及び１．０（ａ1＜ｂ1＜１．０）のいずれか１つの値を出力（決定）する。或いは、活性化関数ｆ1（ｓ，ｐ）は、ｓを入力として閾値ｔ1及びｔ2との比較により、実数ａ1、実数ｂ1、及び１．０のいずれか１つの値であるｏを決定し、ｏとｐの大きい方を出力する。タッチが継続する間、ｆ1（ｓ，ｐ）は、ｓが一度もｔ1を超えない場合、ａ1を出力し、ｓが一度ｔ1より大きくｔ2以下となる値をとった場合、以後ｂ1を出力し、ｓが一度ｔ2を上回る値をとった場合、以後１．０を出力する。図１４は、活性化関数ｆ1（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【０１３４】
このように、非連続な指の動きの速さを反映したＣＰＤ関数の出力値をその大きさに応じた段階的な複数の値に変換する構成とすることにより、より安定した出力値に変換することが可能となる。
【０１３５】
１つの変形例では、所定の関数は、式（１３）ではなく、入力された１つの値を一定の値域内の１つの値へ写像する関数を適用することにより入力された値に対応する値を決定するように構成される。例えば所定の関数は、式（１７）により定められる活性化関数ｆ2（ｓ，ｐ）である。ｓとｐは、式（１３）のｆ（ｓ，ｐ）の場合と同じであり、ＣＰＤ関数の出力値であるｓが入力であり、ｐはｆ1（ｓ，ｐ）が直前に出力した値である。
0006862597.tif 000037
（１７）
【０１３６】
活性化関数ｆ2（ｓ，ｐ）は、ｓを入力として値ｏ＝ａ2ｓ＋ｂ2を決定し、ｏとｐの大きい方を出力（決定）する。図１５は、活性化関数ｆ2（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【０１３７】
また例えば所定の関数は、式（１８）により定められる活性化関数ｆ2（ｓ，ｐ）である。ｓとｐは、式（１３）のｆ（ｓ，ｐ）の場合と同じであり、ＣＰＤ関数の出力値であるｓが入力であり、ｐはｆ1（ｓ，ｐ）が直前に出力した値である。
0006862597.tif 000038
（１８）
【０１３８】
活性化関数ｆ3（ｓ，ｐ）は、ｓを入力として値ｏ＝ａ3ｅs＋ｂ3を決定し、ｏとｐの大きい方を出力（決定）する。図１６は、活性化関数ｆ2（ｓ，ｐ）における入力ｓと該入力ｓに対して決定する値ｏとの関係を示す１つの例示である。
【０１３９】
このような構成とすることにより、非連続な指の動きの速さを反映したＣＰＤ関数の出力値をより安定した出力値に変換しつつ、所望の操作対象キャラクタのモーションを実現することが可能となる。
【０１４０】
１つの変形例では、重み係数βと重み係数１／γは定数である。本変形例は、指を動かしにくい方向への入力を考慮する構成ではないが、本変形例では、コントローラ制御部２４は、変換済み重み付き速さを算出し、加算ベクトルを算出する。そのため、ユーザの意図した入力を反映しつつ、操作対象キャラクタの移動方向や移動速さなどのパラメータを安定した値とすることが可能となり、よりユーザが操作しやすい入力方法を実現することが可能となる。
【０１４１】
１つの変形例では、エンジン部２３は、所定のタイミングで、例えばフレームレートに対応する時間とは異なる既定の時間ごとに、データポイント列を第２のバッファに保持する。１つの変形例では、エンジン部２３は、所定のタイミングで、例えばフレームレートに対応する時間とは異なる既定の時間ごとに、変位速さを決定し、重み付き速さを決定する。１つの変形例では、コントローラ制御部２４は、所定のタイミングで、例えばフレームレートに対応する時間とは異なる既定の時間ごとに、変換済み重み付き速さを決定する。１つの変形例では、コントローラ制御部２４は、所定のタイミングで、例えばフレームレートに対応する時間とは異なる既定の時間ごとに、合成ベクトルを生成する。
【０１４２】
１つの変形例では、第１のバッファは、重み付き速さを決定するためのバッファＢ１と、角度を決定するためのバッファＢ２とを含む。例えば２つのバッファＢ１、Ｂ２は、それぞれ異なる保持時間を有するように構成される。エンジン部２３は、バッファＢ１に保持された１又は複数のデータポイントを、データポイント列として、第２のバッファに保持する。
【０１４３】
１つの変形例では、エンジン部２３は、変数Ｖを定め、独立変数の分散がＶ以上であった場合、関数ａｏｐ（ｘ，ｙ）を用いて角度を算出し、決定する。エンジン部２３は、独立変数の分散がＶ未満である場合、角度を算出せずに、保持している角度を決定する。独立変数の分散がＶ未満である場合とは、ｎ個のデータポイントＰが、局所的に集中していることを意味する。したがって、エンジン部２３が変数Ｖを定めることにより、微細すぎる指の動きを無視し、安定した角度の算出を行うことが可能となる。例えば変数Ｖは、０．７に設定される。
【０１４４】
１つの変形例では、エンジン部２３は、最小二乗法以外の既知の方法を用いて、回帰直線の傾きを算出する。この場合、エンジン部２３は、決定された回帰直線の傾きに対して１８０度回転させるか否かを示す回転量を決定せず、これに伴い、独立変数の軸及び従属変数の軸を決定しない。例えば、カルマンフィルタ又はパーティクルフィルタなどのアルゴリズムを用いることができる。
【０１４５】
１つの変形例では、エンジン部２３は、変数Ｄａを定めず、第１のバッファに保持されているデータポイントのうち既定の保持時間を超えたと判断されたデータポイントの保持を終了しない。この場合、エンジン部２３は、所定の時間ずつずらした特定の時間帯に格納されたデータポイントを参照することにより角度を決定する。
【０１４６】
１つの変形例では、エンジン部２３は、タッチイベントを取得するとき、２つの変数からなる数値の組（ｘ、ｙ）を取得し、データポイント取得時間ｔを対応付けずに、２つの変数からなる数値の組（ｘ、ｙ）を第１のバッファに格納する。例えば、エンジン部２３は、データポイント取得時間ｔに対応する情報を第１のバッファ以外の記憶装置１４内のメモリ領域などに記憶し、第１のバッファに格納するデータに対応付けて管理することができる。
【０１４７】
以上に説明した処理又は動作において、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの処理又は動作上の矛盾が生じない限りにおいて、処理又は動作を自由に変更することができる。また以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【０１４８】
１０  電子装置
１１  プロセッサ
１２  入力装置、タッチパネル
１３  表示装置
１４  記憶装置
１５  通信装置
１６  バス
２１  入力部
２２  表示部
２３  エンジン部
２４  コントローラ制御部
２５  アプリケーション部
３１、３３、３５  角度
３２、３４、３６  方向
４１  角度
４２  ベクトル
【要約】
【課題】タッチパネルを介した操作対象オブジェクトに対する操作において、より操作性を高めることが可能な方法を提供する。
【解決手段】本発明は、タッチパネルを備えるコンピュータにおいて実行される方法であって、タッチパネルへのユーザ操作に基づいて取得される第１の軸の値及び第２の軸の値により示されるデータポイントに基づいて、該データポイントの集合が示す角度を決定し、取得される１又は複数のデータポイントを、既定の時間ごとに、データポイント列として保持し、保持されたデータポイント列におけるデータポイントの変位と決定された角度が示す方向における第１び第２の軸の方向の成分に応じて算出された重み係数とに基づいて該データポイント列における変位速さを決定し、決定された最新の変位速さの、その前に決定された変位速さの平均値に対する偏りに基づいて、操作対象オブジェクトのパラメータを決定するための重み付き速さを決定する。
【選択図】図１【図１】
0006862597.tif 000039
【図２】
0006862597.tif 000040
【図３】
0006862597.tif 000041
【図４】
0006862597.tif 000042
【図５】
0006862597.tif 000043
【図６】
0006862597.tif 000044
【図７】
0006862597.tif 000045
【図８】
0006862597.tif 000046
【図９】
0006862597.tif 000047
【図１０】
0006862597.tif 000048
【図１１】
0006862597.tif 000049
【図１２】
0006862597.tif 000050
【図１３】
0006862597.tif 000051
【図１４】
0006862597.tif 000052
【図１５】
0006862597.tif 000053
【図１６】
0006862597.tif 000054