(57)【特許請求の範囲】
【請求項１】
マルチタッチ操作が可能な情報処理装置であって、
入力部から通知される情報に基づいて、複数のタッチ点が入力されていることを判定する判定手段と、
前記判定手段により、前記複数のタッチ点が入力されていると判定された状態において、前記複数のタッチ点の位置情報を１点ずつ繰り返し取得する位置取得手段と、
前記位置取得手段により、前記複数のタッチ点のいずれかの位置情報が新たに取得される度に、当該タッチ点の新たに取得された位置情報を保持する保持手段と、
前記複数のタッチ点の全ての新たに取得された位置情報が前記保持手段に保持されたことに応じて、所定の複数種類のマルチタッチ操作のうちいずれが前記情報処理装置に対して入力されたかを決定する決定手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記判定手段は、さらに、前記保持手段によって保持されている前記複数のタッチ点の全ての位置情報が前記新たに取得された位置情報に更新されたかを判定し、
前記決定手段は、前記判定手段によって、前記保持手段に保持されている前記複数のタッチ点の全ての位置情報が、前記新たに取得された位置情報に更新されたと判定されたことに応じて、前記情報処理装置に対して行われたマルチタッチ操作を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記位置取得手段は、前記マルチタッチ操作のために入力される２点のタッチ点を識別し、各タッチ点の位置情報を交互に繰り返し取得することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記決定手段は、前記位置取得手段によって前記２点のタッチ点のうち１点目の位置情報が新たに取得され前記保持手段に保持された時、前記所定の複数種類のマルチタッチ操作のうちいずれが前記情報処理装置に対して入力されたかを決定する処理は行わず、前記２点のタッチ点のうち２点目の位置情報が新たに取得され前記保持手段に保持された時、前記所定の複数種類のマルチタッチ操作のうちいずれが前記情報処理装置に対して入力されたかを決定する処理を行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記位置取得手段が取得した位置情報に基づき、前記複数のタッチ点間の距離の変化量を取得する距離取得手段を更に備え、
前記決定手段は、前記距離取得手段により取得された距離の変化量が、第１の閾値以上であることに基づいて、前記情報処理装置に対して入力されたのは第１の操作であると決定し、前記距離取得手段により取得された距離の変化量が、前記第１の閾値未満であることに基づいて、前記情報処理装置に対して入力されたのは第２の操作であると決定することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記位置取得手段が取得した位置情報に基づき、前記複数のタッチ点の移動方向の角度差を取得する角度取得手段を更に備え、
前記決定手段は、前記角度取得手段により取得された移動方向の角度の差が、第２の閾値以上であることに基づいて、前記情報処理装置に対して入力されたのは第１の操作であると判定し、前記角度取得手段により取得された移動方向の角度の差が、前記第２の閾値未満であることに基づいて、前記情報処理装置に対して入力されたのは第２の操作であると決定することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記位置取得手段が取得した前記複数のタッチ点それぞれの位置情報の推移に基づき、前記複数のタッチ点それぞれの移動ベクトルを生成する生成手段を更に備え、
前記角度取得手段は、前記生成手段が生成した前記複数のタッチ点それぞれの移動ベクトルの方向に基づいて、前記複数のタッチ点の移動方向の角度差を取得することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記情報処理装置に対して入力されたのは第１の操作であると決定されたに応じて、表示部に表示されている画像を拡大又は縮小して表示させる表示制御手段を更に備える
ことを特徴とする請求項５乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記表示制御手段は、前記情報処理装置に対して入力されたのは前記第２の操作であると決定されたに応じて、前記表示部に、表示されている画像とは異なる画像を特定して表示させることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記第１の操作とは、表示部に表示されている画像を拡大又は縮小して表示させるために行うピンチ操作であることを特徴とする請求項５乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記第２の操作とは、所定の表示順を有する複数の画像において、表示部に表示されている画像から所定の数だけ離れた画像を特定して表示させるためのマルチドラッグ操作であることを特徴とする請求項請求項５乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至１１のいずれか１項に記載された情報処理装置として動作させるためのプログラム。
【請求項１３】
マルチタッチ操作が可能な情報処理装置の制御方法であって、
判定手段により、入力部から通知される情報に基づいて、複数のタッチ点が入力されていることを判定する判定工程と、
位置取得手段により、前記判定工程で前記複数のタッチ点が入力されていると判定された状態において、前記複数のタッチ点の位置情報を１点ずつ繰り返し取得する位置取得工程と、
保持手段により、前記複数のタッチ点のいずれかの位置情報が新たに取得される度に、当該タッチ点の新たに取得された位置情報を保持する保持工程と、
決定手段により、前記複数のタッチ点の全ての新たに取得された位置情報が前記保持手段に保持されたことに応じて、所定の複数種類のマルチタッチ操作のうちいずれが前記情報処理装置に対して入力されたかを決定する決定工程と、
を備えることを特徴とする情報処理装置の制御方法。
【請求項１４】
請求項１２に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタッチ操作が可能な機器における誤動作を改善する技術に関する。
【背景技術】
【０００２】
近年、ユーザの指あるいはスタイラスにより画面がタッチされたことに応答して、タッチされた位置のＸ，Ｙ座標値を入力値として取り込み、この入力値に基づいて各種処理を実行するタッチ入力機器が普及している。
また、近年、画面の複数点をタッチすることにより操作を行う、いわゆるマルチタッチの技術が発展しつつある。一般に、タッチパネルに対するマルチタッチ操作として、ユーザがタッチパネルに触れている２点を近付けたり離したりする操作をピンチと言う。特に２点を近付ける操作をピンチインと言い、表示画像の縮小が行われる。反対に２点を離す操作をピンチアウトと言い、表示画像の拡大が行われる。
特許文献１では、画面に接触した２本の指にうち、少なくとも一方の指が移動した時、２本の指の間の距離変化に応じてピンチ操作を認識し、画像の拡大率の変更を行うと同時に、指の移動方向に応じて表示画像をスクロールする技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−０５９９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、ユーザによるタッチ操作を認識する際には、タッチ検出領域の走査により１点ずつ検出されるタッチ点の情報を順次取得し、タッチ点の位置や移動した軌跡を利用する。しかし、１点ずつタッチ点の情報を取得する方法では、ユーザが複数のタッチ点を同時に操るマルチタッチ操作に対して、誤ってユーザの意図に反した操作が認識され、誤動作の原因となる場合がある。
本発明は上記課題に鑑みてなされたものであり、マルチタッチ操作が可能な装置において、ユーザの意図に反する誤動作を低減することを主な目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明は、マルチタッチ操作が可能な情報処理装置であって、入力部から通知される情報に基づいて、複数のタッチ点が入力されていることを判定する判定手段と、前記判定手段により、前記複数のタッチ点が入力されていると判定された状態において、前記複数のタッチ点の位置情報を１点ずつ繰り返し取得する位置取得手段と、前記位置取得手段により、前記複数のタッチ点のいずれかの位置情報が新たに取得される度に、当該タッチ点の新たに取得された位置情報を保持する保持手段と、前記複数のタッチ点の全ての新たに取得された位置情報が前記保持手段に保持されたことに応じて、所定の複数種類のマルチタッチ操作のうちいずれが前記情報処理装置に対して入力されたかを決定する決定手段と、を備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ユーザが複数のタッチ点を同時に入力するマルチタッチ状態において１点ずつタッチ点の最新情報が取得される場合であっても、ユーザの意図に反する誤動作を低減することができる。
【図面の簡単な説明】
【０００７】
【図１】情報処理装置の構成の一例を示すブロック図
【図２】情報処理装置がマルチタッチ操作を認識する処理の流れを示すフローチャート
【図３】情報処理装置が実行する処理の一例を示すフローチャート
【図４】ユーザが行うマルチドラッグ操作の一例を示す図
【図５】検出されているタッチ点に関して保持される情報の一例を示すテーブル
【図６】情報処理装置がマルチタッチ操作を認識する処理の流れを示すフローチャート
【図７】ユーザが行うピンチ操作の一例を表す概要図
【図８】情報処理装置の機能構成の一例を示すブロック図
【図９】情報処理装置がマルチタッチ操作を認識する処理の流れを示すフローチャート
【図１０】情報処理装置がマルチタッチ操作を認識する処理の流れを示すフローチャート
【図１１】タッチ点の移動ベクトルを取得する方法の一例を示す図
【発明を実施するための形態】
【０００８】
以下、本実施例を実施するための形態について、図面を参照しながら説明する。なお、以下で説明する実施例は、本実施例を具体的に実施した場合の一例を示すものであり、これに限るものではない。
【０００９】
（第１の実施例）
本実施例では、ユーザがある時点で２点をタッチしているマルチタッチの状態を想定する。以下では、情報処理装置１００に対してユーザの意図に合致したマルチタッチ操作を認識する為に、２点全てのタッチ点の位置情報が更新されたことに応じて、ユーザが行った操作内容を決定する例を説明する。
【００１０】
マルチタッチ操作の一例として、ユーザが２点のタッチ点の間の距離をほぼ一定に保ったまま同一方向に動かす操作（以下、マルチドラッグ操作）を行おうとする場合を説明する。
【００１１】
従来、マルチタッチ操作を認識する場合は、タッチパネルが検出しているタッチ点の情報が１点ずつ通知され、１点毎に取得された位置情報に基づいて処理が実行される。従って、マルチドラッグ操作を行うためにユーザにより移動された２点のタッチ点のうち、１点目の移動後の位置が取得された時点では、もう１点のタッチ点は移動前の位置が保持されており、ユーザが指を動かした分、「２点間の距離が広がった」と判定される。次に２点目の移動後の位置を取得した時点では、２点間の距離は移動前の２点間の距離に戻るため、「２点間の距離が狭まった」と判定される。よって、ユーザがマルチドラッグ操作を行おうとした場合に、上記判定結果に基づいてピンチアウトとピンチインが交互に連続して通知されるため、装置では、表示画像が拡大と縮小を交互に繰り返すといった、ユーザの意図と異なる不自然な表示が実行される。これに対し、本実施例では、マルチタッチ操作を構成する複数のタッチ点の位置情報を取得し、取得した全てのタッチ点の位置情報が更新されたことに応じて、ユーザが行った操作内容を決定する。
【００１２】
図１（ａ）は、本実施例に係る情報処理装置１００のハードウェア構成の一例を示す図である。ＣＰＵ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、各種処理のための演算や論理判断などを行い、システムバス１１０に接続された各構成要素を制御する。この情報処理装置１００には、プログラムメモリとデータメモリを含むメモリが搭載されている。ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２は、プログラムメモリであって、後述する各種処理手順を含むＣＰＵによる制御のためのプログラムを格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３であり、ＣＰＵ１０１の上記プログラムのワーク領域、エラー処理時のデータの退避領域、上記制御プログラムのロード領域などを有する。外部記憶装置１０９などからＲＡＭ１０３にプログラムをロードすることで、プログラムメモリを実現しても構わない。ＨＤ１０４は、本実施例に係るデータやプログラムを記憶しておくためのハードディスクである。本実施例では、これらのＨＤ１０４には、複数の画像データが格納されているものとする。同様の役割を果たすものとして、入出力インタフェース１０７を介して接続される外部記憶装置１０９を用いてもよい。ここで、外部記憶装置１０９は、例えば、メディア（記録媒体）と、当該メディアへのアクセスを実現するための外部記憶ドライブとで実現することができる。このようなメディアとしては、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ、ＭＯ、フラッシュメモリ等が知られている。また、外部記憶装置１０９は、ネットワークで接続されたサーバ装置などであってもよい。本実施例において必要な情報は、ＲＡＭ１０３やＨＤ１０４、外部記憶装置１０９に保持される。入力インタフェース１０５は、ポインティングデバイスなどの入力装置を制御し、入力装置から出力された信号を取得する。出力インタフェース１０６は、液晶ディスプレイ、テレビモニタ等の表示部を有する出力装置に対して、後述する各種の処理を実行した結果の出力を制御する信号を出力する。本実施例において、入力装置であるタッチパネルと出力装置であるディスプレイ装置は、情報処理装置１００に一体化したタッチパネルディスプレイ１０８を仕様するものとする。ただし、情報処理装置１００に接続された外部装置であってもよく、それぞれが独立した装置であってもかまわない。なお、本実施例で用いられる入力装置としてのタッチパネルからは、ユーザによってタッチされている点、あるいはタッチが離された点を検出したことを示す信号が、タッチイベントとして情報処理装置１００に通知される。その際、タッチを検出する領域が走査されることによって順次検出されたタッチイベントを、入力インタフェース１０５が１点ずつ取得する。タッチパネルは静電容量方式のものを使用するとし、ユーザとパネル表面との接触面のうち、１点の座標をタッチ点として特定してタッチイベントを通知する。ただし、タッチパネルの方式は静電容量方式に限らない。
【００１３】
図１（ｂ）は、本実施例に係る情報処理装置１００の機能構成を示す機能ブロック図である。まず、情報処理装置１００は、検出部１１１、第１の取得部１１２、判定部１１４、第２の取得部１１５、決定部１１６、表示制御部１１８を有する。これらの各機能部は、ＣＰＵ１０１がＲＯＭ１０２に格納されたプログラムをＲＡＭ１０３に展開し、実行することで実現されている。また、本実施例において、保持部１１３はＲＡＭ１０３によって構成され、記憶部１１９はＨＤ１０４の機能部であるものとする。以下、各要素について説明する。
【００１４】
検出部１１１は、タッチパネルディスプレイ１０８から通知されるタッチイベントの情報を順次１点ずつ検出し、解析する。
【００１５】
第１の取得部１１２は、検出部１１１から、検出されたタッチ点に関する情報を取得する。そして、タッチ点の位置を示す情報と、タッチが検出された時刻（検出時刻）とをタッチ点のＩＤに関連付け、タッチ点毎に保持部１１３に保持させる。ＩＤを利用することで、同一のタッチ点を識別することができる。従って、第１の取得部１１２は、同じＩＤのタッチ点に関する情報を取得する度に、保持部１１３が保持する情報を順次更新する。なお、ＩＤにはタッチ点が検出された順番を関連させることで、検出されるタッチ点の数が複数である場合に管理がしやすくなる。
【００１６】
判定部１１４は、保持部１１３に保持された情報を参照し、検出されている全てのタッチ点の位置情報が更新されたか否かを判定する。
【００１７】
第２の取得部１１５は、第１の取得部１１２が取得した情報に基づいて、２点のタッチ点の間の距離と、タッチ点の位置が更新された前後での２点間の距離の変化量、及びその絶対値を算出する。具体的には、第１の取得部１１２が取得した情報２点のタッチ点の座標から最短距離を算出し、保持する。そして、タッチ点の更新後に新たに算出された２点の間の距離と、保持された距離とを比較演算し、距離の変化量とその絶対値を求める。
【００１８】
決定部１１６は、第２の取得部１１５が求めた２点間の距離の変化量の絶対値を取得し、所定の閾値と比較する。本実施例では、取得した変化量の大きさが、所定の閾値以上であった場合には、ユーザによって行われた操作はピンチ操作（第１の操作）であると決定する。一方、取得した変化量の大きさが、所定の閾値以上であった場合には、ユーザによって行われた操作はマルチドラッグ操作（第２の操作）であると決定する。
【００１９】
ピンチ制御部１１７は、決定部１１６がピンチ操作が入力されたと決定した場合に、第２の取得部１１５が取得した変化量に基づいて、ピンチアウトあるいはピンチインの操作が開始されたか否かを判定する。
【００２０】
表示制御部１１８は、決定部１１６が処理した情報を取得し、本実施例ではタッチパネルディスプレイである出力装置に表示させる表示画像を生成する。ディスプレイには、ユーザのマルチタッチ操作が行われる前には、記憶部１１９に記憶された複数の画像データのうちの少なくとも１つを表示させているものとする。決定部１１６によって、入力された操作はピンチであると決定された場合、ピンチ制御部１１７からパラメータを取得して、ユーザが操作する前の表示画像を拡大あるいは縮小した表示画像を生成する。一方、決定部１１６によって、入力された操作はマルチドラッグであると決定された場合、本実施例では、タッチ点が移動された方向に基づき、記憶部１１９に記憶された複数の画像データのうち、特定の画像データを表示させるための表示画像を生成する。
【００２１】
次に図２は、本実施例において、情報処理装置１００がマルチタッチ操作を認識する処理の流れを示すフローチャートである。
【００２２】
本実施例の情報処理装置１００では、タッチパネルディスプレイ１０８に、記憶部１１９に記憶されている画像データの少なくとも１つが表示されたことに応じて、マルチタッチ操作を認識する処理が開始されるものとする。まず、ステップＳ２０１では、タッチ点を取得する。ここでは、検出部１１１が、タッチパネルにおいて入力領域４０１の走査により検出されたタッチイベントを１点ずつ取得し、解析する。そして、第１の取得部１１２が、入力領域４０１上で検出されているタッチ点に関する情報を、タッチ点毎に保持部１１３に保持する。本実施例では、タッチ点のＩＤ、座標で示される位置情報を示す情報、取得された時刻を保持部１１３に保持する。ステップＳ２０１において実行される処理の詳細は後述する。
【００２３】
次に、ステップＳ２０２において、判定部１１４が、入力領域４０１において検出されているタッチ点の数が複数か否かを判定する。本実施例では、各タッチ点はＩＤで識別されるので、保持部１１３に保持されている情報のうちＩＤの数を参照することで、タッチ点の数がわかる。なお、本実施例においては、情報処理装置１００は２点のタッチ点を利用して要求されるマルチタッチ操作がピンチであるマルチドラッグであるかを決定する為、以下、入力領域４０１では最大２点のタッチ点が検出されているものとして説明する。タッチ点の数が複数であると判定された場合（ステップＳ２０２でＹＥＳ）には、ステップＳ２０３に進む。一方、タッチ点の数が複数ではないと判定された場合（ステップＳ２０２でＮＯ）には、処理を終了する。
【００２４】
ステップＳ２０３においては、判定部１１４が、情報が保持されている全てのタッチ点の位置情報が更新されたか否かを判定する。本実施例では、ステップＳ２０１において、第１の取得部１１２がタッチ点の情報を更新する際に更新フラグを立て、ステップＳ２０３において判定部１１４は更新フラグの数に基づく判定を行う。初回のステップＳ２０３の処理は、常にＹＥＳと判定される。全てのタッチ点の位置情報が更新されたと判定された場合（ステップＳ２０３でＹＥＳ）には、更新フラグを下ろし、ステップＳ２０４に進む。全てのタッチ点の位置情報が更新されてはいないと判定された場合（ステップＳ２０３でＮＯ）には、処理を終了する。なお、タッチ点が更新されたか否かを判定する方法は、これに限らず、他の方法を利用してもよい。例えば判定部１１４は、保持部１１３に保持されている各タッチ点の検出時刻を参照し、前回ステップＳ２０３の処理がＹＥＳと判定された時刻よりも後に、検出されているタッチ点全ての情報が更新されているか否かに基づいて、判定を行っても構わない。
【００２５】
ステップＳ２０４においては、決定部１１６が、少なくとも１つのタッチ点が移動したか否かを判定する。本実施例においては、ステップＳ２０１において、既に検出されていたのと同じＩＤのタッチ点の新たな位置情報が取得された場合には、移動フラグを立てて保持部１１３に保持するものとする。従って、ステップＳ２０４で、決定部１１６は、保持部における移動フラグを確認することで、タッチ点の移動の有無を判定することができる。少なくとも１つのタッチ点が移動したと判定された場合（ステップＳ２０４でＹＥＳ）には、移動フラグを下ろし、ステップＳ２０６に進む。全てのタッチ点が移動していないと判定された場合（ステップＳ２０４でＮＯ）には、ステップＳ２０５に進む。なお、タッチ点が移動されたか否かを判定する方法は、これに限らず、例えば保持部１１３の情報を更新する際に更新前の位置情報を保持し、更新前後の位置情報が所定の距離より離れているか否かに基づいて判定しても構わない。
【００２６】
ステップＳ２０５では、第２の取得部１１５、タッチされている２点間の距離を取得する。第２の取得部１１５は、第１の取得部１１２が取得した情報に基づき、２点のタッチ点の間の最短距離を算出し、保持する。
【００２７】
一方、ステップＳ２０６において、第２の取得部１１５が、入力領域４０１で検出されているタッチ点の、２点間の距離の変化量を取得する。第２の取得部１１５は、第１の取得部１１２が取得した情報に基づき、２点のタッチ点の間の最短距離を算出し、保持する。そして、更新後に新たに算出された２点の間の距離と、ステップＳ２０５あるいはステップＳ２０６で前回算出して保持していた２点間の距離とを比較演算し、距離の変化量とその絶対値を取得する。
【００２８】
そして、ステップＳ２０７において、決定部１１６が、第２の取得部１１５によって取得された２点間の距離の変化量の絶対値が、閾値ａ未満であるか否かを判定する。ここで閾値ａとは、予め情報処理装置１００に登録された距離の大きさの閾値である。閾値ａの値は、ピンチ操作のためにユーザがタッチした２点間の距離を広げる、あるいは狭めたことを情報処理装置１００が認識するために必要な２点間の距離の変化量に基づいて設定されている。変化量（絶対値）が、閾値ａ未満であると判定された場合（ステップＳ４０６でＹＥＳ）には、決定部１１６は、ユーザによって入力された操作はマルチドラッグ操作であると決定して、ステップＳ２０８に進む。変化量（絶対値）が閾値ａ以上であると判定された場合（ステップＳ２０７でＮＯ）には、決定部１１６は、ユーザによって入力された操作はピンチ操作であると決定し、ステップＳ２１０に進む。
【００２９】
ステップＳ２０８では、決定部１１６が、マルチドラッグ操作が入力されたことを表示制御部１１８に通知する。続くステップＳ２０９では、マルチドラッグ操作に対応する処理が実行される。本実施例では、記憶部１１９に記憶された複数の画像データのうち、特定の画像データをタッチパネルディスプレイに表示させる処理が実行される。詳細は後述する。
【００３０】
一方、ステップＳ２１０においては、ピンチ制御部１１７が、入力されたピンチアウト、あるいはピンチイン操作が開始されたか否かを判定する。本実施例においてはまず、タッチされた２点間の距離が広げられたのか、あるいは狭められたのかを、第２の取得部１１５が取得した２点間の距離の変化量に基づいて判別する。そして、２点間の距離が広げられたのか、あるいは狭められた回数をカウントする。ステップＳ２１０において、タッチされた２点間の距離が広げられたと連続してカウントされた回数が２回以上となった場合に、ピンチアウト操作が開始されたと判定する。そして、２点間の距離が狭められたと連続してカウントされた回数が２回以上となった場合に、ピンチイン操作が開始されたと判定する。一方、２点間の距離が広げられた、あるいは狭められたとカウントされた回数が１回である時点では、ピンチアウト及びピンチインのいずれの操作であるかを決定せず、ピンチ操作は開始されていないと判定する。これは、タッチパネルやユーザの指の状態に起因してステップＳ２０２点間の距離の変化量（絶対値）が閾値ａ以上と判定されるエラーが発生した場合であっても、ユーザがピンチ操作を行う意図を確実に反映し、誤動作を防ぐための処理である。ピンチアウトあるいはピンチイン操作が開始されたと判定された場合（ステップＳ２１０でＹＥＳ）には、ステップＳ２１１に進む。一方、ピンチアウトあるいはピンチイン操作のいずれも開始されていないと判定された場合（ステップＳ２１０でＮＯ）には、処理を終了する。
【００３１】
ステップＳ２１１では、ピンチ制御部１１７が、ピンチアウトあるいはピンチイン操作が入力されたことを、表示制御部１１８に通知する。続くステップＳ２１２では、表示制御部１１８によって、ピンチアウトあるいはピンチイン操作が入力されたことによる結果が出力される。本実施例では、ピンチアウト操作が入力された場合には、ユーザがタッチ点を移動させた距離に従ってディスプレイに表示された表示画像を拡大して表示させる処理が実行される。また、ピンチイン操作が入力された場合には、ユーザがタッチ点を移動させた距離に従ってディスプレイに表示された表示画像を縮小して表示させる処理が実行される。
【００３２】
以上が、情報処理装置１００がマルチタッチ操作を認識する処理である。一連の処理が終了した場合には、再びステップＳ２０１に戻り、新たなタッチイベントが通知される度に上述した処理が実行される。
【００３３】
ここで、図３（ａ）は、ステップＳ２０１において実行される、タッチ点検出処理の流れを示すフローチャートである。
【００３４】
まず、ステップＳ３０１において、検出部１１１は、タッチパネルから通知されたタッチイベントが「ＴＯＵＣＨ」であるか否かを判定する。本実施例において用いるタッチパネルからは、入力領域４０１を走査して、タッチされていることを検出したときにはタッチイベントとして「ＴＯＵＣＨ」を、検出されていたタッチが離されたときにはタッチイベントとして「ＲＥＬＥＡＳＥ」が通知されるものとする。通知されたタッチイベントが「ＴＯＵＣＨ」だと判定された場合（ステップＳ３０１でＹＥＳ）には、ステップＳ３０３に進む。通知されたタッチイベントがタッチではない、すなわちリリースであった場合（ステップＳ３０１でＮＯ）には、ステップＳ３０２に進む。
【００３５】
ステップＳ３０２では、第１の取得部１１２が、保持部１１３に保持されていた情報のうち、「ＲＥＬＥＡＳＥ」が検出されたタッチ点に対応するＩＤに関連付けられていた情報を、ＩＤとともに削除する。
【００３６】
一方、ステップＳ３０３では、検出部１１１が、「ＴＯＵＣＨ」が検出されたタッチ点と同じＩＤのタッチ点が既に検出されているか否かを判定する。検出部１１１は、保持部１１３に保持された情報を参照し、対応するＩＤが含まれているかを判定する。同じＩＤのタッチ点が既に検出されていると判定された場合（ステップＳ３０３でＹＥＳ）には、処理はステップＳ３０５に進み、同じＩＤのタッチ点が検出されていないと判定された場合（ステップＳ３０３でＮＯ）には、ステップＳ３０４に進む。
【００３７】
ステップＳ３０４において、第１の取得部１１２は、「ＴＯＵＣＨ」が検出されたタッチ点のＩＤ、座標、検出時刻の情報を保持部１１３に保持されている情報に新規追加する。この際、保持部１１３では、タッチ点が更新されたことを示す情報を保持する。例えば、更新フラグを立てる。
【００３８】
ステップＳ３０５では、保持部１１３に保持されている情報のうち、「ＴＯＵＣＨ」が検出されたタッチ点と同じＩＤの座標、検出時刻の情報を更新する。この際、保持部１１３では、タッチ点が更新されたことを示す情報を保持する。例えば、更新フラグを立てる。また、さらに取得した位置情報が更新前に保持していた同じＩＤのタッチ点の位置から所定の距離以上移動していた場合には、タッチ点が移動されたことを示す情報を保持する。例えば、移動フラグを立てる。そして、マルチタッチ操作を認識するメインの処理（図２）にリターンする。なお、ここでの所定の距離とは、ユーザがタッチ操作を行うためにタッチ点が移動される必要がある最低限の距離に基づいて予め設定されている。複数の操作を区別するため、段階的な複数の閾値が設定されていてもよい。本実施例では、所定の距離未満の移動が検出された場合、そのタッチ点は、移動していない、すなわち停止しているものとして処理される。
【００３９】
なお、本実施例では、入力領域４０１を走査し、タッチを検出したときにはタッチイベントとして「ＴＯＵＣＨ」を、検出されていたタッチ点が解除されたときにはタッチイベントとして「ＲＥＬＥＡＳＥ」が通知されるタッチパネルを用いたが、これに限らない。例えば、新たに入力領域４０１がタッチされた場合には「ＴＯＵＣＨ＿ＤＯＷＮ」、既に検出されていたＩＤのタッチ点の移動が検出された場合には「ＭＯＶＥ」、離された時には「ＴＯＵＣＨ＿ＵＰ」をタッチイベントとして通知するものでもよい。この場合、「ＴＯＵＣＨ＿ＤＯＷＮ」が通知された場合には、保持部１１３に保持される情報を新規追加して更新フラグを立て、「ＭＯＶＥ」が通知された場合には同じＩＤの情報を更新するとともに移動フラグを立てる。そして、「ＴＯＵＣＨ＿ＵＰ」が通知された場合には、同じＩＤの情報を削除すればよい。
【００４０】
このように、情報処理装置１００は、入力装置であるタッチパネルで検出されている複数のタッチ点をＩＤによって識別して情報を管理する。従って、複数のタッチ点それぞれの動きを検出することができるので、それらのタッチ点に構成されるマルチタッチ操作を認識することができる。
【００４１】
図３（ｂ）は、ステップＳ２０９で実行されるマルチドラッグ操作の結果出力処理の流れを示すフローチャートである。マルチドラッグ操作によって要求される動作の一例として、本実施例では、記憶部１１９に記憶された複数の画像データのうち、特定の画像データをタッチパネルディスプレイに表示させる処理が実行される。記憶部１１９に記憶された複数の画像データは、予め設定された順序に従って格納されているとする。本実施例では、マルチドラッグされた方向が左方向であれば、ユーザによる操作の前に表示されていた画像データよりも１０枚後に格納された画像を表示させる。そして、マルチドラッグされた方向が右方向であれば、ユーザによる操作前に表示されていた画像データよりも１０枚前に格納された画像を表示させるものとする。
【００４２】
まず、ステップＳ３１１では、表示制御部１１８が、ユーザによってマルチドラッグされた方向を取得する。本実施例では、第１の取得部１１２が取得した２つのタッチ点の、少なくとも１つについて、更新前後の位置情報のＸ座標から、ユーザが指を移動させた方向が、Ｘ軸のマイナス方向か、プラス方向かを取得する。次に、ステップＳ３１２では、表示制御部１１８が、ステップＳ３１１で取得された方向を示す情報に基づいて、ディスプレイに表示させる画像データを特定する。本実施例では、取得した方向がＸ軸のマイナス方向であった場合には、記憶部１１９に記憶された複数の画像データのうち、ユーザによる操作前に表示されていた画像データよりも１０枚後に相当する画像データを特定する。同様に、取得した方向がＸ軸のプラス方向であった場合には、記憶部１１９に記憶された複数の画像データのうち、ユーザによる操作前に表示されていた画像データよりも１０枚前に相当する画像データを特定する。次に、ステップＳ３１３では、表示制御部１１８が、特定した画像データを表示させるための表示画像を生成する。そして、ステップＳ３１４において、表示制御部１１８は、生成された表示画像を出力装置であるタッチパネルディスプレイ１０８に出力して、処理を終了し、マルチタッチ操作を認識するメインの処理（図２のフローチャート）にリターンする。なお、ステップＳ３１４の表示画像の出力を行う際には、ユーザによるタッチ点の解除をきっかけにしてもよい。その場合には、ステップＳ３１３の後、図３（ａ）のタッチ点検出処理を実行し、全てのタッチ点について、ステップＳ３０２におけるタッチ点の情報を保持部１１３から削除する処理が実行されたことに基づいて、ステップＳ３１４に処理が進むようにする。このようにすると、ユーザはマルチドラッグ操作を入力した指をタッチパネルから離す動作によって、特定の画像を表示させるタイミングを情報処理装置１００に指示することができる。
【００４３】
マルチドラッグ操作によって要求される動作は、ここで説明した例に限らない。例えば、表示させる画像データの特定方法は、１０枚後あるいは１０枚前に限らず、任意に設定させることもできる。更にＹ軸方向のマルチドラッグに対しても、情報処理装置１００の何らかの動作を対応させることもできる。ただし、一般的に、ドラッグなどによりＸ方向に表示された画像を移動させる操作に対応して、画像送りを実現し、前後に記憶された別の画像を表示させる場合が多い。従って、複数の指を使ったマルチドラッグにより、Ｘ軸方向に表示された画像を移動させることで、より多くの画像を一度に送って特定の画像を表示させること動作は、ユーザにとって直感的に理解しやすく、利便性が高いと言える。
【００４４】
ここで、具体的に、第１の実施例による情報処理装置１００をユーザが操作する操作例１を説明する。
【００４５】
図４（ａ）は、本実施例に係る情報処理装置１００の操作の一例を示す図である。情報処理装置１００の入力領域４０１に対し、ユーザが操作を入力している様子を示す。入力領域４０１はディスプレイ上にタッチパネルが併設されたタッチパネルディスプレイで構成され、ユーザによるタッチをタッチパネルで検知可能な領域である。本実施例では、入力領域４０１全体を、向かって左下を原点とした座標平面とし、タッチパネルがユーザにタッチされた位置の座標を検出する。ここでは、具体的な操作例として、２本の指４０２、４０３を入力領域４０１に接触させ、横方向に移動することでマルチドラック操作を入力する。
【００４６】
次に、図４（ｂ）は、図４（ａ）のようにユーザがマルチドラッグ操作を行った場合に、情報処理装置１００が取得するタッチ点の位置の推移の一例を示す図である。タッチ点Ａ〜Ｆは、入力領域４０１においてユーザの指がタッチした位置の座標を示し、横方向をＸ軸、縦方向をＹ軸とする。最初にユーザの指４０２が入力領域４０１にタッチした位置が、タッチ点Ａとタッチ点Ｂであるとする。左側の指４０２がタッチした位置がタッチ点Ａで、右側の指４０３がタッチした位置がタッチ点Ｂに対応する。次に、ユーザが２本の指を横に移動する。移動後にタッチしている位置がタッチ点Ｃとタッチ点Ｄに対応する。左側の指４０２がタッチしている位置がタッチ点Ｃで、右側の指４０３がタッチしている位置がタッチ点Ｄである。さらに、ユーザが２本の指を横に移動する。移動後にタッチしている位置がタッチ点Ｅとタッチ点Ｆとなる。左側の指４０２がタッチしている位置がタッチ点Ｅで、右側の指４０３がタッチしている位置がタッチ点Ｆに対応する。以下、この一連の操作に従って、本実施例の情報処理装置１００の動作を説明する。なお、操作例１では、タッチパネルの入力領域４０１は２０ミリ秒毎に走査され、順次検出されたタッチイベントが検出部１１１に通知されるものとする。また、閾値ａは予め１０ｄｏｔと設定されているものとする。
【００４７】
まず、ユーザが最初に入力領域４０１にタッチした状態で、入力領域４０１の走査が開始され、タッチパネルからタッチ点Ａのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、検出部１１１によりタッチ点Ａが新たにタッチされたことが検出される。そして、第１の取得部１１２は、ＩＤが１、位置座標が（１００，５０）、検出時刻が０ミリ秒という情報を取得し、保持部１１３に保持させる。図５（ａ）は、保持部１１３に保持される情報の一例であるテーブルを表す。ステップＳ２０２では、判定部１１４が保持されている情報を参照し、ＩＤの数から入力領域４０１上で検出されているタッチ点数が複数か否かを判定する。この時点では、図５（ａ）に示されるように、ＩＤが１のタッチ点しか検出されておらず、複数ではないので、処理は終了する（ステップＳ２０２でＮＯ）。
【００４８】
次に、タッチパネルからタッチ点Ｂのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、同様に第１の取得部１１２が、ＩＤが２、位置座標が（１１０，４０）、検出時刻は５ミリ秒（５ｍｓｅｃ）という情報を取得する。このとき、保持部１１３で保持されていたテーブルは、図５（ｂ）のように更新される。ステップＳ２０２では、判定部１１４により、タッチ点の数が複数であると判定される。ステップＳ２０３では、判定部１１４により、初回の処理であるので、検出されている全てのタッチ点の情報が更新されていると判定される。ステップＳ２０４で、決定部１１６が、少なくとも１つのタッチ点が移動していないと判定する（ステップＳ２０４でＮＯ）。そして、ステップＳ２０５において、タッチ点それぞれの位置座標から２点間の最短距離となる、図４の距離Ｂを算出する。ここでは、タッチ点Ａの座標（１００，５０）、及びタッチ点Ｂの座標（１１０，４０）に基づき、２点間の距離は１４ｄｏｔと算出される。第２の取得部１１５は、１４ｄｏｔを検出開始時の２点間の距離としてＲＡＭ１０３に保持し、処理を終了する。
【００４９】
次に、２０ミリ秒毎に入力領域４０１が走査されるので、タッチパネルから、タッチ点Ｃのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、第１の取得部１１２によりＩＤが１、位置座標が（２００，５０）、検出時刻が２０ミリ秒という情報が取得され、保持部１１３に保持された情報は、図５（ｃ）のように更新される。この時、タッチ点ＣのＩＤは１でタッチ点Ａと同じため、１というＩＤに関連付けられた情報が更新されている。また、位置座標が前回の検出時と異なるため、移動フラグを立てる。ステップＳ２０２では、タッチ点の数は複数であると判定される。ステップＳ２０３では、ＩＤが１のタッチ点の情報は更新されているが、ＩＤが２のタッチ点は更新されていないため、判定部１１４は全てのタッチ点の情報が更新されてはいないと判定して、処理を終了する（ステップＳ２０３でＮＯ）。
【００５０】
次に、タッチパネルからタッチ点Ｄのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において同様にＩＤが２、位置座標が（２１０，４０）、検出時刻が２５ミリ秒という情報を取得し、保持部１１３に保持された情報は図５（ｄ）のように更新される。この時、タッチ点ＤのＩＤは２でタッチ点Ｂと同じため、２というＩＤに関連付けられた情報が更新されている。また、位置座標が前回の検出時と異なるため、移動フラグを立てる。ステップＳ２０２では、タッチ点の数は２で複数であると判定される。そして、ステップＳ２０３では、ＩＤが１のタッチ点及びＩＤが２のタッチ点がどちらも更新されているので、全てのタッチ点の位置情報が更新されたと判定される（ステップＳ２０３でＹＥＳ）。ステップＳ２０４では、移動フラグに基づいて、少なくとも１つのタッチ点が移動していると判定される。ステップＳ２０６において、第２の取得部１１５が、タッチされている２点間の距離の変化量とその絶対値を取得する。ここでは、まずタッチ点Ｃの座標（２００，５０）、及びタッチ点Ｄの座標（２１０，４０）に基づき、２点間の距離（図４の距離Ｂ）は１４ｄｏｔであると算出される。そして、ＲＡＭ１０３に保持されている、前回第２の取得部１１５が取得した２点間の距離との変化量（絶対値）を求めると、１４―１４＝０ｄｏｔと算出される。今、閾値ａは１０ｄｏｔであるので、ステップＳ２０７において、決定部１１６は、２点間の距離の変化量が閾値ａ未満であると判定する。従って、ステップＳ２０８においてマルチドラッグ操作が通知され、ステップＳ２０９において出力を実行する。操作例１では、Ｘ軸のプラス方向に向かってマルチドラッグ操作が行われているので、記憶部１１９に記憶されている複数の画像データうち、ユーザの操作前に表示されていた画像よりも１０枚前に相当する画像データが表示される。
【００５１】
更に２０ミリ秒毎に入力領域４０１が走査されるので、タッチパネルからタッチ点Ｅのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、第１の取得部１１２によりＩＤが１、位置座標が（３００，５０）、検出時刻が４０ミリ秒という情報が取得され、保持部１１３に保持された情報は、図５（ｅ）のように更新される。この時、タッチ点ＥのＩＤは１でタッチ点Ｃと同じため、１というＩＤに関連付けられた情報が更新されている。また、位置が移動している。ステップＳ２０２では、タッチ点の数は複数であると判定される。ステップＳ２０３では、ＩＤが１のタッチ点の情報は更新されているが、ＩＤが２のタッチ点は更新されていないため、判定部１１４は全てのタッチ点の情報が更新されてはいないと判定して、処理を終了する（ステップＳ２０３でＮＯ）。
【００５２】
次に、タッチパネルからタッチ点Ｆのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において同様にＩＤが２、位置座標が（３１０，４０）、検出時刻が４５ミリ秒という情報を取得し、保持部１１３に保持された情報は図５（ｆ）のように更新される。この時、タッチ点ＦのＩＤは２でタッチ点Ｄと同じため、２というＩＤに関連付けられた情報が更新されている。また、位置座標が前回の検出時と異なるため、移動フラグを立てる。ステップＳ２０２では、タッチ点の数は２で複数であると判定される。そして、ステップＳ２０３では、ＩＤが１のタッチ点及びＩＤが２のタッチ点がどちらも更新されているので、全てのタッチ点の位置情報が更新されたと判定される（ステップＳ２０３でＹＥＳ）。ステップＳ２０４では、少なくとも１つのタッチ点が移動していると判定される。ステップＳ２０６において、第２の取得部１１５が、タッチされている２点間の距離の変化量とその絶対値を取得する。ここでは、まずタッチ点Ｅの座標（３００，５０）、及びタッチ点Ｆの座標（３１０，４０）に基づき、２点間の距離（図４の距離Ｆ）は１４ｄｏｔであると算出される。そして、ＲＡＭ１０３に保持されている、前回第２の取得部１１５が取得した２点間の距離との変化量（絶対値）を求めると、１４―１４＝０ｄｏｔと算出される。今、閾値ａは１０ｄｏｔであるので、ステップＳ２０７において、決定部１１６は、２点間の距離の変化量が閾値ａ未満であると判定する。従って、ステップＳ２０８においてマルチドラッグ操作が通知され、ステップＳ２０９において出力を実行する。操作例１では、Ｘ軸のプラス方向に向かってマルチドラッグ操作が行われているので、記憶部１１９に記憶されている複数の画像データうち、前回ステップＳ２０９で表示された画像よりも更に１０枚前に相当する画像データが表示される。
【００５３】
なお、タッチ点が解除された事に応じて、特定された画像データを表示させる場合には、マルチドラッグ操作が複数回通知されたとしても、１回目に特定された画像データを表示させる表示画像を保持し続けるものとする。従って、そして、ユーザによって全てのタッチ点のタッチが解除されたことに応じて、ユーザの操作前に表示されていた画像よりも１０枚前に相当する画像データを表示させる。こうすることで、ユーザはマルチドラッグ操作を行った回数を認識しやすくなる。
【００５４】
以上説明したように、本実施例では、ユーザがタッチした２点のタッチ点の位置情報を取得して、２点全てのタッチ点の位置情報が更新されたことに応じて、情報処理装置１００に対してユーザが入力したマルチタッチ操作を決定する処理を行う。その際、２点間の距離の変化量と閾値とを比較することで、入力された操作がマルチドラッグ操作かピンチ操作かを決定する。これにより、ユーザがタッチした２点の間の距離をほぼ一定に保ったまま同一方向にさせる場合には、誤ってピンチ操作が通知されることはなく、ユーザの意図に反して表示画像の表示倍率が変更される誤動作は防止される。同様に、ユーザが複数の指を用いて画像のスクロールや回転を指示する等、他のマルチタッチ操作を入力する場合にも、本実施例を適応することで、誤ってピンチ操作が認識されることを防ぐことができる。その場合にも、マルチタッチ操作を構成する全てのタッチ点の位置情報が更新されてから、ユーザが入力したマルチタッチ操作を判定することで、ユーザの意図に反した誤動作を低減することが可能である。
【００５５】
なお、本実施例では、決定部１１６によって、ユーザによって入力された操作がピンチ操作であると決定された後、ステップＳ２１０において、ピンチ制御部１１７が、ピンチアウトあるいはピンチインの操作が開始されたかを判定している。ステップＳ２１０の処理は省略してもかまわない。その場合には、ステップＳ２１１において、決定部１１６が、表示制御部１１８に対して、ピンチ操作が入力されたことを通知する。そして、ステップＳ２１２において、表示制御部１１８は、第２の取得部１１５が取得した２点間の距離の変化量に基づいて、ユーザがタッチ点を移動させた距離に従って表示画像の表示倍率を変更する処理を行う。ただし、ステップＳ２１０において、２点間の距離が変化した方向と回数に基づいて操作が開始されたか否かを判定することで、ユーザの意図する操作をより正確に決定した上で、表示画像の変更を行うことができる。例えば、タッチパネルやユーザの指の状態などに起因して２点間の距離の変化量（絶対値）が閾値ａ以上と判定されるエラーが発生した場合には、ピンチ操作が入力されたとの通知がなされない。従って、ユーザの意図に反して表示画像の表示倍率が変わってしまうという誤動作を防止することができるという効果を奏する。
【００５６】
なお、本実施例では、２つのタッチ点の処理について説明したが、タッチ点は３点以上検出されていても、同様の処理を実行することができる。例えば、タッチ点が検出された順番が早い順から２点のタッチ点のみを選択し、上述したのと同じ処理を行う。また、３点以上のＮ点のタッチ点を検出した場合には、Ｎ点全ての情報を取得し、ステップ４０３においてはＮ点の全ての情報が更新されたことに応じて、それ以降の処理ステップを実行する。
【００５７】
（第１の実施例の変形例１）
第１の実施例では、入力装置であるタッチパネルとして、ユーザによってタッチされている点、及びタッチが離された点を検出する度にタッチイベントを情報処理装置１００に通知するものを想定していた。それに対し、変形例１として、ユーザによって新たな位置においてタッチされた点、及びタッチが離された点を検出する度にタッチイベントを情報処理装置１００に通知するタッチパネルを想定した場合を説明する。
【００５８】
第１の実施例の変形例１で想定されるタッチパネルでは、既にタッチされている点が停止している場合には、タッチイベントが通知されないため、装置が保持しているタッチ点の情報は上書きされない。従って、実施例１のマルチタッチ操作を認識する処理が行われると、例えばユーザが２点のタッチ点の片方を固定して、もう片方を動かすことでピンチ操作を行う場合には、一部のタッチ点の情報が古いまま保持され続けることになる。従って、第１の実施例のように、装置が保持している情報が全て更新されたことに基づいて判定を行うと、マルチタッチ操作が実行されない場合が生じる。従って、第１の実施例の変形例１では、保持部１１３に情報が保持されている中で最も古い検出時刻から、所定時間が経過したことに基づいて、全てのタッチ点の情報が更新されたと判定する。
【００５９】
変形例１の情報処理装置１００のハードウェア構成、および機能構成は第１の実施例と同様である。ただし、第１の実施例の変形例１における判定部１１４は、情報処理装置１００が有する時計と、保持部１１３に保持された情報とを参照し、最も古い更新がなされてから所定時間が経過したことに応じて、全てのタッチ点の位置情報が更新されたと判定する。
【００６０】
図６は、第１の実施例の変形例１において、情報処理装置１００がマルチタッチ操作を認識する処理の流れを示すフローチャートである。図２と同番号を付した処理ステップでは、同じ内容の処理が実行される。従って詳細な説明は省略し、第１の実施例と異なる点を説明する。
【００６１】
第１の実施例の変形例１では、ステップＳ２０２においてタッチ点が複数であると判定された場合、ステップＳ６０１において、判定部１１４が、全てのタッチ点について、保持部１１３に保持されている位置情報が更新されたか否かを判定する。初回の処理では常にＹＥＳと判定される。そして、保持部１１３に保持されている位置情報が全て更新された場合には、ステップＳ２０４に進み、保持されている位置情報が全て更新されてはいない場合には、ステップＳ６０２に進む。ステップＳ６０２では、判定部１１４が、現在検出されているうちタッチ点の最も古い更新がなされてから所定時間が経過したか否かを判定する。ここで、所定時間とは、タッチパネルが入力領域４０１全体をスキャンし終えるのに十分な時間として、予め設定されているものとする。例えば、タッチパネルの走査が行われる周期と同じだけの時間が設定される。検出されているタッチ点の数が複数で、かつ、現在検出されているうち最も古い位置情報の更新がなされてから、タッチパネル全体の走査が終了する十分な時間が経過した場合、タッチイベントが通知されなかったタッチ点は移動が検出されていないことがわかる。従って、全てのタッチ点について、その時点で保持部１１３に保持されている位置情報が維持され続けていると考えられる。判定部１１４によって、タッチ点の位置情報の最も古い更新がなされてから所定時間経過したと判定された場合（ステップＳ６０２でＹＥＳ）には、ステップＳ２０４に進む。一方、タッチ点の位置情報の最も古い更新がなされてから所定時間経過していないと判定された場合（ステップＳ６０２でＮＯ）には、処理を終了する。
【００６２】
この他の処理は、図２で示した情報処理装置１００がマルチタッチ操作を認識する処理と同様に処理される。
【００６３】
ここで、具体的に、第１の実施例の変形例１による情報処理装置１００をユーザが操作する操作例２を、図７を参照して説明する。
【００６４】
図７（ａ）は、ユーザがピンチ操作を行った場合に、情報処理装置１００が取得するタッチ点の位置の推移の一例を示す図であり、第１の実施例における図４（ｂ）に対応するものである。ただし、このときユーザは図４（ａ）における左の指４０２によるタッチ点Ａを停止させたまま、ピンチ操作を行うために右の指４０３のみを右方向（Ｘ軸のプラス方向）に動かすことで、タッチ点Ｂ、タッチ点Ｄ、タッチ点Ｆが順に検知されている。また、図７（ｂ）は、各タッチ点が検出されたことに応じて、保持部１１３に保持される情報の一例であるテーブルであり、第１の実施例における図５（ａ）〜（ｆ）に対応するものである。
【００６５】
なお、操作例２においても、タッチパネルの入力領域４０１は２０ミリ秒毎に走査され、検出されたタッチイベントが検出部１１１に通知されるものとする。また、全てのタッチ点の位置情報が更新されたか否かを判定するために用いる所定時間は２０ミリ秒、閾値ａは１０ｄｏｔとして、予め設定されているものとする。
【００６６】
まず、ユーザが最初に入力領域４０１にタッチした状態で、入力領域４０１の走査が開始され、タッチパネルからタッチ点Ａのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、検出部１１１によりタッチ点Ａが新たにタッチされたことが検出される。そして、図７（ｂ）に表されるように、第１の取得部１１２は、ＩＤが１、位置座標が（１００，５０）、検出時刻が０ミリ秒という情報を取得し、保持部１１３に保持させる。ステップＳ２０２では、判定部１１４が保持されている情報を参照し、ＩＤの数から入力領域４０１上で検出されているタッチ点数が複数か否かを判定する。この時点では、図７（ｂ）に示される通り、ＩＤが１のタッチ点しか検出されておらず、複数ではないので、処理は終了する（ステップＳ２０２でＮＯ）。
【００６７】
次に、タッチパネルからタッチ点Ｂのタッチイベントが通知される。情報処理装置１００では、ステップＳ２０１において、同様に第１の取得部１１２が、ＩＤが２、位置座標が（１１０，４０）、検出時刻は５ミリ秒という情報を取得する。このとき、保持部１１３で保持されていたテーブルは、図７（ｃ）のように更新される。ステップＳ２０２では、判定部１１４により、タッチ点の数が複数であると判定される。ステップＳ６０１では、判定部１１４により、初回の処理であるため、検出されている全てのタッチ点の情報が更新されていると判定される。ステップＳ２０４で、決定部１１６が、少なくとも１つのタッチ点が移動していないと判定する（ステップＳ２０４でＮＯ）。そして、ステップＳ２０５において、タッチ点それぞれの位置座標から２点間の最短距離（図７の距離）を算出する。ここでは、タッチ点Ａの座標（１００，５０）、及びタッチ点Ｂの座標（１１０，４０）に基づき、２点間の距離は１４ｄｏｔと算出される。第２の取得部１１５は、１４ｄｏｔを検出開始時の２点間の距離としてＲＡＭ１０３に保持し、処理を終了する。
【００６８】
次に、２０ミリ秒毎に入力領域４０１が走査されるので、タッチパネルから、タッチ点Ｄのタッチイベントが通知される。変形例１のタッチパネルでは、停止しているタッチ点Ａに関しては、新たなタッチイベントが通知されないためである。従って、情報処理装置１００では、ステップＳ２０１において、第１の取得部１１２は、ＩＤが２、位置座標が（２１０，４０）、検出時刻が２５ミリ秒という情報を取得する。そして、保持部１１３に保持された情報は図７（ｄ）のように更新される。この時、タッチ点ＤのＩＤは２であって、タッチ点Ｂと同じため、２というＩＤに関連付けられた情報が更新されている。また、位置座標が前回の検出時と異なるため、移動フラグを立てる。ステップＳ２０２では、タッチ点の数は２で複数であると判定される。そして、ステップＳ６０１では、ＩＤが２のタッチ点が更新されているが、ＩＤが１のタッチ点が更新されていないので、全てのタッチ点の位置情報が更新されていないと判定される（ステップＳ６０１でＮＯ）。そしてステップＳ６０２において、保持されているタッチ点の情報の中で最も古い更新がなされてからの時間が所定の２０ミリ秒が経過したか否かを判定する。今、最古の更新がなされた時刻、すなわちタッチ点Ａが検出された時刻からの経過時間は、２５ミリ秒であるため、所定の時間を超えている。従って、全てのタッチ点の位置情報が更新されたと考えることができる。次にステップＳステップＳ２０４では、移動フラグに基づいて、少なくとも１つのタッチ点が移動していると判定される。ステップＳ２０６において、第２の取得部１１５が、タッチされている２点間の距離の変化量とその絶対値を取得する。ここでは、タッチ点Ａの座標（１００，５０）、及びタッチ点Ｄの座標（２１０，４０）に基づき、２点間の距離（図７の距離Ｄ）は１１０ｄｏｔであると算出される。そして、ＲＡＭ１０３に保持されている、前回第２の取得部１１５が取得した２点間の距離との変化量（絶対値）を求めると、１１０−１４＝９６ｄｏｔと算出される。今、閾値ａは１０ｄｏｔであるので、ステップＳ２０７において、決定部１１６は、２点間の距離の変化量が閾値ａ以上であると判定する。従って、ステップＳ２１０において、ピンチアウトあるいはピンチイン操作が開始されたか否かを判定する。今、第２の取得部１１５が取得した２点間の距離との変化量は、９６ｄｏｔであるため、２点間の距離は広げられた回数を、１回目とカウントする。ただし、２回に満たないため、ピンチアウトの操作が開始されたとは判定されず、処理を終了する。
【００６９】
次に、２０ミリ秒毎に入力領域４０１が走査されるので、タッチパネルから、タッチ点Ｆのタッチイベントが通知される。変形例１のタッチパネルでは、停止しているタッチ点Ａに関しては、新たなタッチイベントが通知されないためである。従って、情報処理装置１００では、ステップＳ２０１において、第１の取得部１１２は、ＩＤが２、位置座標が（３１０，４０）、検出時刻が４５ミリ秒という情報を取得する。そして、保持部１１３に保持された情報は図７（ｅ）のように更新される。この時、タッチ点ＤのＩＤは２であって、タッチ点Ｂと同じため、２というＩＤに関連付けられた情報が更新されている。また、位置座標が前回の検出時と異なるため、移動フラグを立てる。ステップＳ２０２では、タッチ点の数は２で複数であると判定される。そして、ステップＳ６０１では、ＩＤが２のタッチ点が更新されているが、ＩＤが１のタッチ点が更新されていないので、全てのタッチ点の位置情報が更新されていないと判定される（ステップＳ６０１でＮＯ）。そしてステップＳ６０２において、保持されているタッチ点の情報中で最も古い更新がなされてからの時間が所定の２０ミリ秒が経過したか否かを判定する。今、最古の更新がなされた時刻、すなわちタッチ点Ａが検出された時刻からの経過時間は、４５ミリ秒であるため、所定の時間を超えている。従って、全てのタッチ点の位置情報が更新されたと考えることができる。ステップＳ２０４では、移動フラグに基づいて、少なくとも１つのタッチ点が移動していると判定される。ステップＳ２０６において、第２の取得部１１５が、タッチされている２点間の距離の変化量とその絶対値を取得する。ここでは、タッチ点Ａの座標（１００，５０）、及びタッチ点Ｄの座標（３１０，４０）に基づき、２点間の距離（図７の距離Ｆ）は２１０ｄｏｔであると算出される。そして、ＲＡＭ１０３に保持されている、前回第２の取得部１１５が取得した２点間の距離との変化量（絶対値）を求めると、２１０−１１０＝１００ｄｏｔと算出される。今、閾値ａは１０ｄｏｔであるので、ステップＳ２０７において、決定部１１６は、２点間の距離の変化量が閾値ａ以上であると判定する。従って、ステップＳ２１０において、ピンチアウトあるいはピンチ操作が開始されたか否かを判定する。今、第２の取得部１１５が取得した２点間の距離との変化量は、１００ｄｏｔであるため、２点間の距離は広げられた回数を、２回目とカウントする。そして、２点間の距離は広げられた回数が２回以上に達したため、ピンチ制御部１１７によって、ピンチアウトの操作が開始されたと判定される（ステップＳ２１０でＹＥＳ）。ステップＳ２１１では、ピンチ制御部１１７が、ピンチアウトが入力されたことを、表示制御部１１８に通知し、ステップＳ２１２において、ピンチ操作による結果が出力される。ここでは、表示制御部１１８が、２点間の距離が距離Ｂの１４ｄｏｔから、距離Ｆの２１０ｄｏｔに広げられたことに基づいて、表示画像を拡大して表示する処理を実行する。
【００７０】
以上説明したように、第１の実施例の変形例１では、ユーザが２点をタッチする場合に、最も古い位置情報の更新がなされてから所定時間が経過したことに応じて、情報処理装置１００に対してユーザが入力したマルチタッチ操作を決定する処理を行う。従って、既に検出されていたタッチ点が停止している場合に新たなタッチイベントを通知しないタッチパネルを利用した場合でも、検出されている全てのタッチ点の位置情報が更新されたことを判定可能になる。そのため、ユーザが２点のタッチ点の片方を停止した状態で、もう片方を動かすことでピンチ操作を行う場合でも、ユーザの意図に合致するように、表示画像の表示倍率を変更することができる。
【００７１】
＜第２の実施例＞
第２の実施例においても、ユーザが入力するマルチタッチ操作の一例として、マルチドラッグ操作を入力する例を説明する。第１の実施例では、検出されている２点のタッチ点の位置情報が更新された結果、少なくとも１点が移動したことによる２点間の距離の変化量が所定の閾値未満か否かに基づいて、マルチドラッグ操作あるいはピンチ操作のいずれが入力されたかを決定した。それに対し、第２の実施例では、検出されている２点のタッチ点の位置情報が更新された結果、少なくとも１点が移動した移動方向の角度差が、所定の閾値未満か否かに基づいて、マルチドラッグ操作あるいはピンチ操作のいずれが入力されたかを決定する。この際、角度差が小さく、２本の指がほとんど同一方向にタッチ点を移動されたと考えられる場合には、マルチドラッグ操作が入力されたと決定し、角度差が大きい場合には、ピンチ操作が入力されたと決定する。
【００７２】
まず、図８は、変形例１の情報処理装置１００の機能構成を示す機能ブロック図である。図１（ｂ）と異なる点は、生成部８０１と、第３の取得部８０２が追加されたことである。生成部８０１は、第１の取得部１１２が取得したタッチ点の情報のうち、ベクトルの生成に必要な情報を保持する。そして、タッチ点の位置情報の推移からタッチ点毎に移動方向と移動量を示す移動ベクトルを生成する。第３の取得部８０２は、生成部８０１が生成したタッチ点毎に移動ベクトルの方向成分を比較し、その角度差を取得する。そして、本実施例の決定部１１６は、第３の取得部が取得した移動ベクトルの角度差が、所定の閾値以上であった場合には、ユーザによって行われた操作はピンチ操作（第１の操作）であると決定する。一方、取得した変化量の大きさが、所定の閾値未満であった場合には、ユーザによって行われた操作はマルチドラッグ操作（第２の操作）であると決定する。
【００７３】
図９は、第２の実施例において、情報処理装置１００がマルチタッチ操作を認識する処理の流れを示すフローチャートである。図２と同番号を付した処理ステップでは、同じ内容の処理が実行される。従って詳細な説明は省略し、第１の実施例と異なる点を説明する。
【００７４】
第２の実施例では、ステップＳ２０４において、決定部１１６によって少なくとも１つのタッチ点が移動したと判定された場合には、ステップＳ９０１に進む。ステップＳ９０１では、第３の取得部８０２が、移動ベクトルの角度差を取得する。ステップＳ９０１で実行される処理の詳細は後述する。そして、ステップＳ９０２では、決定部１１６が、生成部８０１が生成した２つの移動ベクトルの角度差が閾値ｂ未満であるか否かを判定する。ここで閾値ｂとは、予め情報処理装置１００に登録された角度の大きさの閾値で、２点のタッチ点が同一ではない方向に移動されたと判定するのに必要な、最小限の角度の大きさとして設定される。角度差が閾値ｂ以上であると判定された場合（ステップＳ９０２でＮＯ）には、決定部１１６は、ユーザによって入力された操作はピンチ操作であると決定し、ステップＳ２１０に進む。角度差が、閾値ｂ未満であると判定された場合（ステップＳ９０２でＹＥＳ）には、決定部１１６は、ユーザによって入力された操作はマルチドラッグ操作であると決定して、ステップＳ２０８に進む。
【００７５】
なお、第２の実施例のステップＳ９０２で、ユーザによってピンチ操作が入力されたと決定された場合には、ステップＳ２１０において、第２の取得部１１５がタッチされた２点間の距離を取得するとともに、保持されていた距離と比較する処理を行う。そして、２点間の距離が広げられたか、あるいは狭められたかに基づいて、第１の実施例と同様の処理を行う。
【００７６】
ここで、図１０は、ステップＳ９０１で実行される、タッチ点の移動ベクトルの角度差を取得する処理の流れの一例を示すフローチャートである。まず、ステップＳ１００１において、生成部８０１は、検出されている複数のタッチ点のうち、１つのタッチ点を特定するためにタッチ点のＩＤを選択する。
【００７７】
ステップＳ１００２において、生成部８０１は、位置ベクトルの始点となる座標を決定する。本実施例では、生成部８０１は、保持しているタッチ点の位置情報に基づき、選択されているＩＤのタッチ点が初めに検出された位置、または前回検出された位置を、位置ベクトルの始点となる座標として決定する。
【００７８】
次に、ステップＳ１００３において、生成部８０１は、移動ベクトルの終点となる座標を決定する。本実施例では、生成部８０１は、第１の取得部１１２が取得した情報に基づき、選択されているＩＤのタッチ点の最新の位置情報を移動ベクトルの終点となる座標として決定する。
【００７９】
そして、ステップＳ１００４において、生成部８０１は決定した始点から終点に向かう移動ベクトルの方向を示す情報を取得する。この際、生成部８０１は、決定された始点と終点を結ぶことで移動ベクトルを生成する。ただし、始点と終点が同一の座標となる場合の移動ベクトルは、ゼロベクトルとする。そして、入力領域４０１のＹ軸を基準として時計回りに、生成した移動ベクトルの方向を示す角度を算出する。角度算出は、例えばタンジェント等の三角関数を用いることができる。生成部８０１は、取得した角度の情報をタッチ点のＩＤと関連付けて保持する。
【００８０】
ステップＳ１００５において、第３の取得部８０２が、全てのタッチ点について、移動ベクトルが生成されたか否かを判定する。第３の取得部８０２は、生成部８０１が保持しているＩＤの数に基づいて、判定を行う。全てのタッチ点のベクトルが生成されたと判定された場合（ステップＳ１００５でＹＥＳ）には、ステップＳ１００６に進む。一方、全てのタッチ点のベクトルが生成されてはいないと判定された場合（ステップＳ１００５でＮＯ）には、ステップＳ１００１に戻って、次に処理するタッチ点のＩＤを選択する。
【００８１】
ステップＳ１００６では、第３の取得部８０２が、各タッチ点の移動ベクトルの角度差を取得する。第３の取得部８０２は、生成部８０１が保持している各ベクトルの方向を示す角度の差分を算出する。なお、ここで取得する角度差は、絶対値であるとする。そして、移動ベクトルの角度差を算出する処理は終了し、ステップ９０２に進む。以降の処理は、第１の実施例同様に実行される。
【００８２】
ここで、図１１は、ステップＳ９０１で実行される１つのタッチ点の移動ベクトルの生成方法の一例を示す図である。図１１（ａ）を参照しながら、本実施例において生成される移動ベクトルの具体例を説明する。ここで、ｐ１からｐ４は、入力領域４０１とユーザの指が接触した位置の座標を、一定時間間隔でサンプリングしたタッチ点であり、ｐ１は最初に検出された位置に相当する点である。本実施例では、２０ミリ秒毎にタッチパネルが入力領域４０１をスキャンするので、略２０ミリ秒間隔でタッチ点が取得されると考えることができる。生成部８０１は、ｐ２が検出された時点で移動ベクトルＶ１ａを生成する。同様に、ｐ３が検出された時点で生成された移動ベクトルがＶ２ａ、ｐ４が検出された時点で生成された移動ベクトルがＶ３ａである。
【００８３】
移動ベクトルの生成方法は、本実施例で使用した方法に限らない。以下、図１１（ｂ）〜図１１（ｄ）を参照して、他の生成方法の例を説明する。
【００８４】
図１１（ｂ）では、生成された移動ベクトルの大きさが、基準となる距離Ｌを超えた時に、その移動ベクトルの終点となっていたタッチ点の検出位置を、次の処理で生成する移動ベクトルの始点とする方法を説明する。ここでも、ｐ１からｐ４は、一定時間間隔でサンプリングされたタッチ点であり、ｐ１はタッチ点が最初に検出された位置である。生成部８０１は、ｐ１、ｐ２が検出された時点では、最初に検出されたｐ１の座標を移動ベクトルの始点として決定する。従って、例えばｐ３が検出された時点では移動ベクトルＶ１ａを生成する。そして、生成部８０１は、生成した移動ベクトルの大きさ（ｐ１からｐ３への移動距離）が基準距離Ｌを超えたか否かを判定する。その結果、基準距離Ｌを超えた場合にはその時点でのタッチ点の最新の検出位置を、次に移動ベクトルを生成する際に、始点となる座標として決定する。従って、生成部８０１は、移動ベクトルＶ１ｂのＸ方向成分が基準距離Ｌを超えたことに応じて、ｐ３を移動ベクトルの始点として決定する。そして、ｐ４を検出した時点では移動ベクトルＶ２ｂを生成する。このようにして、生成部８０１はタッチ点毎に移動ベクトルを生成し、第３の取得部８０２は、各タッチ点について生成された最新の移動ベクトルを用いて、その角度差を取得する。なお、生成部８０１では、ベクトル生成に必要とならないタッチ点の情報、及び最新でない移動ベクトルの情報は破棄してしまってよい。
【００８５】
また、図１１（ｃ）では、タッチ点の移動速度が極小となった点を、生成部８０１が始点となる座標として決定して、移動ベクトルを生成する例を示す。ｐ１からｐ８はここでも、一定時間間隔でサンプリングされたタッチ点である。サンプリング時間が一定のため、図１１（ｂ）におけるタッチ点間の距離は、タッチ点の移動速度の大きさに比例する。従って、ｐ１からｐ８のタッチ点の推移から、移動速度が極小になったのは、前後のタッチ点との間隔が小さいｐ６であることがわかる。従って、生成部８０１は、ｐ１〜ｐ６が検出された時点の処理ではｐ１を移動ベクトルの始点として決定し、例えばｐ６が検出された時点では、移動ベクトルＶ１ｃを生成する。そして、ｐ７以降が検出された時点で実行される処理ではｐ６を始点として決定し、例えばｐ８が検出された時点では移動ベクトルＶ２ｃを生成する。
【００８６】
ただし、タッチパネルセンサから取得されるタッチ点の位置座標には、ばらつきが生じる場合がある。例えば、操作中にユーザの指とタッチパネルの接触面の面積が変化し、タッチ点として特定される１点の座標の相対位置が変わるといったことが考えられる。このようなばらつきを考慮せずに移動ベクトルを生成すると、移動ベクトルの方向が検出のばらつきに依存して、角度差と閾値ｂの比較を行う処理の精度が低下する場合がある。この問題に対する対策として、図１１（ｄ）では、始点として決定された座標と、終点となる最新の検出位置の間の、タッチ点の推移の座標を全て考慮して移動ベクトルを生成する例を説明する。ここでは、始点として初めに検出されたｐ１の座標を決定し、終点となる座標としては、Ｘ座標をタッチ点の最新の検出位置のＸ座標、Ｙ座標をこれまで検出された同じＩＤのタッチ点の位置のＹ軸座標の平均値に決定する。このように、検出されたタッチ点の座標の平均値を利用して移動ベクトルを生成することで、移動ベクトルの角度差と閾値ｂとの比較処理の精度が向上し、マルチタッチ操作の認識がより正確にできる。
【００８７】
以上説明した移動ベクトルの生成方法は一例である。例えば、生成した移動ベクトルの方向の角度差が所定の閾値以上となったことや、タッチ点が所定時間以上停止したことに基づいて、次に生成する移動ベクトルの始点となる座標を決定することもできる。このように様々な方法の中から、情報処理装置１００の演算能力などに応じて適切な方法を選択し、本実施例に利用することができる。
【００８８】
ここで、具体的に、第２の実施例による情報処理装置１００をユーザが操作する操作例３を説明する。操作例３では、操作例１と同様に、図４（ａ）のようにユーザが二本の指４０２、４０３を入力領域４０１にタッチさせて同時に右方向に、動かすマルチドラッグ操作を行い、図４（ｂ）のようにそれぞれの指によるタッチ点が推移するものとする。その際、第１の取得部１１２によって取得された各タッチ点の情報は、図５に示すテーブルとして保持部１１３に保持されるものとする。なお、操作例３において角度の閾値ｂは４５度であるものとする。
【００８９】
操作例１と異なる点は、タッチ点Ｄのタッチイベントがタッチパネルから通知されたことに従って、ステップＳ２０４において、少なくとも１つのタッチ点が移動したと判定された後の処理である。ステップＳ９０１において、生成部８０１は、ＩＤが１のタッチ点について、タッチ点Ａの位置を始点の座標、タッチ点Ａの位置を終点の座標とした移動ベクトルＡを生成する。移動ベクトルＡの方向は、Ｙ軸を基準とし時計回りの角度を求めると、９０度となる。同様に、ＩＤが２のタッチ点について、タッチ点Ｂの位置を始点の座標、タッチ点Ｄの位置を終点の座標とした移動ベクトルＢを生成する。移動ベクトルＢの方向も、Ｙ軸を基準とし時計回りに９０度となるので、第３の取得部８０２によって、移動ベクトルＡと移動ベクトルＢの角度差として、０度を示す情報が取得される。今、閾値ｂは４５度であるので、ステップＳ９０２では、決定部１１６が、第３の取得部８０２に取得された角度差０度は閾値ｂ未満であると判定する。すなわち、２つのタッチ点は、同方向に移動されているため、ユーザはマルチドラッグ操作を入力していると決定され、ステップＳ２０８及びステップＳ２０９において、マルチドラッグ操作に対応する処理が実行される。
【００９０】
同様に、タッチパネルによってタッチ点Ｆのタッチイベントが通知された際の処理においては、生成部８０１によって、ＩＤが１のタッチ点について図４（ｂ）の移動ベクトルＣ、ＩＤが２のタッチ点について図４（ｂ）の移動ベクトルＤが生成される。それぞれ、ベクトルの方向は９０度であり、角度差が０度なので、決定部１１６はマルチドラッグ操作が入力されたと決定する。
【００９１】
なお、本実施例のステップＳ１００６の角度差を取得する処理においては、算出結果は絶対値で扱うことが望ましい。絶対値を用いることで、角度差の量だけを考慮し、角度差の方向は考慮しない。さらに、鋭角側の角度差を算出するため、算出結果が１８０度以上の場合、３６０度から算出結果を減算し、角度差を求めることが望ましい。角度差を鋭角に統一することで、閾値との比較処理の一貫性を保ち、ユーザにとっては視覚的にもわかりやすい操作が可能となる。
【００９２】
また、移動ベクトルの角度差と角度の閾値との比較において、閾値を複数設定してもよい。例えば、始点から終点までの距離に応じて、距離が近ければ角度の大きな閾値を用いる。このようにすることで、上述したようなタッチ点の検出位置にばらつきが生じた場合に、移動ベクトルの方向として取得される角度の誤差が大きくなることによって、判定の精度を低下させないことができる。図１１（ｅ）は、ｐ１が検出された後、ｐ２が検出された場合と、検出位置のばらつきによってｐ２´が検出された場合に生成される移動ベクトルＶ１ｅとＶ１ｅ´との方向の違いを示す。一方、図１１（ｆ）は、ｐ１が検出された後、ｐ２よりも離れたｐ３が検出された場合と、ｐ３´が検出された場合に生成される移動ベクトルＶ２ｅとＶ２ｅ´との方向の違いを示す。なお、ｐ３とｐ３´は、ｐ２とｐ２´と同じだけの、検出位置のばらつきを表すものとする。Ｖ１ｅとＶ１ｅ´との方向の違いは、Ｖ２ｅとＶ２ｅ´との方向の違いよりも大きい。このように、始点から終点までの距離が近い程、検出位置のばらつきが、移動ベクトルの方向に与える影響は大きくなる。従って、始点から終点への距離に応じて、複数の閾値を設定することで、より正確に入力されたマルチタッチ操作の決定することができる。
【００９３】
以上説明したように、本実施例においても、ユーザが２点をタッチする場合に、２点全てのタッチ点の位置情報が更新されたことに応じて、情報処理装置１００に対してユーザが入力したマルチタッチ操作を決定する処理を行う。その際、少なくとも１点が移動した移動方向の角度差が、所定の閾値未満か否かに基づいて、マルチドラッグ操作あるいはピンチ操作のいずれが入力されたかを決定する。これにより、ユーザがタッチした２点をほぼ同一の方向に移動させる場合には、誤ってピンチ操作が通知されることはなく、ユーザの意図に反して表示画像の表示倍率が変更される誤動作は防止される。なお、第１の実施例とその変形例、及び第２の実施例は、組み合わせて実施してもよい。
【００９４】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005990011.tif 000002
【図２】
0005990011.tif 000003
【図３】
0005990011.tif 000004
【図４】
0005990011.tif 000005
【図５】
0005990011.tif 000006
【図６】
0005990011.tif 000007
【図７】
0005990011.tif 000008
【図８】
0005990011.tif 000009
【図９】
0005990011.tif 000010
【図１０】
0005990011.tif 000011
【図１１】
0005990011.tif 000012