(57)【要約】      （修正有）【課題】操作性に優れ、無理なく自然な動作で指示入力することができる指示入力装置、指示入力システム、指示入力方法、及びプログラムを提供する。【解決手段】操作者がＬＥＤをポインティング方向に動かす。３Ｄ計測装置２０では操作者の所定部位の動作に従って移動するＬＥＤから発光された光を検出し、パソコン本体３２は計測された位置情報に基づいて、ＬＥＤの加速度及び速度を検出する。このときの速度から速度ベクトルＳを算出する。そして、ディスプレイ４２の画面のポインティング位置にカーソルを表示する。また、速度ベクトルＳと、速度ベクトルＳに垂直な平面とにより構成される座標系においてＬＥＤの動きを判断し、ＬＥＤの動きが予め定められた動きであれば、該動きに対応した処理の実行を指示する。【選択図】図２
2005070996.tif 000002
【特許請求の範囲】
【請求項１】
操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力手段と、
前記入力手段により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出手段と、
前記検出手段により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出手段と、
前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出手段と、
前記表示手段の前記表示用交点算出手段により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御手段と、
を含む指示入力装置。
【請求項２】
前記検出手段により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出手段と、
前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出手段と、
前記平面算出手段により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出手段と、を更に含み、
前記表示用交点算出手段は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出手段により検出された加速度が前記所定値を越えた後は、前記交点算出手段により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出する請求項１記載の指示入力装置。
【請求項３】
前記速度ベクトル算出手段により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理手段を更に含む請求項１または請求項２記載の指示入力装置。
【請求項４】
前記所定の処理は、前記検出手段により検出された、前記座標系における前記発光手段の加速度及び速度に基づいて、前記発光手段の動きが予め定められた動きに対応するか否かを判断すると共に、前記発光手段の動きが予め定められた動きに対応すると判断した場合に、該予め定められた動きに対応付けられた処理の実行を指示する処理である請求項３記載の指示入力装置。
【請求項５】
前記制御手段は、前記表示用交点算出手段により算出された最新の表示用交点及び過去に算出された複数の表示用交点の位置の各々に対応して前記指示情報が複数表示されるように前記表示手段を制御する請求項１乃至請求項５のいずれか１項記載の指示入力装置。
【請求項６】
前記制御手段は、前記複数の指示情報の表示状態が、時間の経過に従って変化するように前記表示手段を制御する請求項５記載の指示入力装置。
【請求項７】
前記表示手段は、前記指示情報を表示すると共に所定のオブジェクトを表示し、
前記制御手段は、前記指示情報の表示位置と前記所定のオブジェクトの表示位置とが一致した場合、及び、前記指示情報の表示位置と前記所定のオブジェクトの表示位置とが一致し、かつ前記処理手段により前記予め定められた動きに対応付けられた処理の実行が指示された場合、のいずれか一方の場合に、前記表示手段の表示状態を変更するように前記表示手段を制御する請求項４乃至請求項６のいずれか１項記載の指示入力装置。
【請求項８】
操作者の所定部位の動作に従って移動する発光手段と、
前記発光手段から発光された光を検出することにより前記発光手段の位置を計測する計測装置と、
請求項１乃至請求項７のいずれか１項記載の指示入力装置と、
を含む指示入力システム。
【請求項９】
前記発光手段を携帯電話に設けた請求項８記載の指示入力システム。
【請求項１０】
操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力工程と、
前記入力工程により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出工程と、
前記検出工程により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出工程と、
前記速度ベクトル算出工程により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出工程と、
前記表示手段の前記表示用交点算出工程により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御工程と、
を含む指示入力方法。
【請求項１１】
前記検出工程により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出工程と、
前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出工程と、
前記平面算出工程により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出工程と、を更に含み、
前記表示用交点算出工程は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出工程により検出された加速度が前記所定値を越えた後は、前記交点算出工程により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出する請求項１０記載の指示入力方法。
【請求項１２】
前記速度ベクトル算出工程により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理工程を更に含む請求項１０または請求項１１記載の指示入力方法。
【請求項１３】
前記所定の処理は、前記検出工程により検出された、前記座標系における前記発光手段の加速度及び速度に基づいて、前記発光手段の動きが予め定められた動きに対応するか否かを判断すると共に、前記発光手段の動きが予め定められた動きに対応すると判断した場合に、該予め定められた動きに対応付けられた処理の実行を指示する処理である請求項１２記載の指示入力方法。
【請求項１４】
コンピュータに、
操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力工程と、
前記入力工程により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出工程と、
前記検出工程により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出工程と、
前記速度ベクトル算出工程により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出工程と、
前記表示手段の前記表示用交点算出工程により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御工程と、
を実行させるためのプログラム。
【請求項１５】
前記検出工程により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出工程と、
前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出工程と、
前記平面算出工程により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出工程と、を更に含み、
前記表示用交点算出工程は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出工程により検出された加速度が前記所定値を越えた後は、前記交点算出工程により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出する請求項１４記載のプログラム。
【請求項１６】
前記速度ベクトル算出工程により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理工程を更に含む請求項１４または請求項１５記載のプログラム。
【請求項１７】
前記所定の処理は、前記検出工程により検出された、前記座標系における前記発光手段の加速度及び速度に基づいて、前記発光手段の動きが予め定められた動きに対応するか否かを判断すると共に、前記発光手段の動きが予め定められた動きに対応すると判断した場合に、該予め定められた動きに対応付けられた処理の実行を指示する処理である請求項１６記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、指示入力装置、指示入力システム、指示入力方法、及びプログラムに関し、特に、操作者の所定部位の動作に従って移動するＬＥＤ等の発光手段の位置情報に基づいてカーソル等の指示情報の表示位置を制御する指示入力装置、指示入力システム、指示入力方法、及びプログラムに関するものである。
【背景技術】
【０００２】
パソコン等に対して指示入力するためのデバイスとして、従来よりｘ−ｙ座標値を相対座標値としてパソコンに指示入力するマウス（２次元マウス）が広く用いられている。近年、この２次元マウスを用いて３次元座標値を指示入力する技術が提案されている。この技術では、例えば、従来の２次元（ｘ−ｙ）座標値を指示するためのマウスボールに加え、３つ目の座標値（ｚ座標値）を指示するためのマウスボールを別に設け、このマウスボールの回転を用いて３次元座標値を指示入力する。これには複雑な操作が必要とされる。また、２次元マウスの操作は２次元平面上に拘束されており、３次元空間の指示入力装置としては操作性に劣る。
【０００３】
そこで、光源としてのＬＥＤをペンに装備、或いは操作者の指等に装着し、ＬＥＤからの光を受光する受光部をパソコンの画面の上部等に取付け、ＬＥＤの位置を検出することにより３次元座標値を指示入力することができる装置（３次元マウス）が提案されている（例えば、特許文献１参照。）。この装置では、光源の受光部に対する角度を求め、三角測量の原理により光源の３次元位置を求めている。なお、この装置を用いてマウスの基本動作であるクリック等のシグナルを入力する場合には、操作者が指で押すことのできるスイッチ等をＬＥＤの近傍に設け、該スイッチを押下する等の機械的操作を行うことにより有線を介してパソコンの基本ソフトに入力する必要がある。
【０００４】
また、３次元座標値を指示入力できる装置として、２次元上の２つのボールを回転させることによって、ｘ、ｙ軸方向の移動量を入力できるだけでなく、角度や回転角も入力でき、ｚ軸方向に対する入力も可能となるポインティングデバイス（例えば、特許文献２参照。）や、第一の方向に光変換素子を配列した第１の光センサアレイと、第１の方向とは別の第二の方向に光変換素子を配列した第２の光センサアレイとが移動するときに両者の出力変化に応じた信号を生成し、それにより（カーソル等の）移動量や移動方向を決定する非接触方式の位置検出装置（例えば、特許文献３参照。）が知られている。
【０００５】
更にまた、所定の形を有した物体を（指標）をＣＣＤカメラで認識してパソコン等に対するコマンドとして解釈するリモコン装置（例えば、特許文献４参照。）や、電子ペンの中に指で回転されるロータリースイッチが設けられ、その回転度合いによってグラフィカルパラメター（線分の太さ、色、陰影、グレイスケール）の変化の度合いを決定する座標入力用電子ペン（例えば、特許文献５参照。）や、ユーザの手首に装着されたＲＦＩＤの動きをアンテナにより認識させてから、ＲＦＩＤの動きのパターンを他のデバイスへの入力コマンドとして解釈する指示入力システム（例えば、特許文献６参照。）が知られている。
【０００６】
また、米国Gyration Inc.社のGyromouseも、ポインティングデバイスとして広く知られている。このGyromouseは、オートジャイロを内蔵しており、空中操作でレーザーの方向を変えることができる機構を有している。
【０００７】
更にまた、近年、人の動きやしぐさをＣＣＤカメラにより撮影し、その画像を解析することによって、例えば腕や指の方向を示す特徴点を検出し、指示入力するシステムが提案されている。このシステムではＣＣＤカメラを２台設け、利用者の特定の部位の動きから、例えば指の指し示す方向を検出する。
【０００８】
また、本出願人により、発光手段からの光を受光することにより発光手段の位置を検出する技術を用い、五感の少なくとも１つに訴えるようなフィードバック（焦点メタファーや色相等の変化）によって、画面の前面に広がる３次元空間上の分割された複数の領域の各境界に対する発光手段の通過状態をユーザに認知させ、機械的メカニズムを利用せずに、発光手段の各領域の境界に対する通過の仕方に応じて、クリック、ダブルクリック、ドラッグ等の２次元マウスの機能を実行することができる３次元指示入力装置が提案されている（特願２００３−９６３６６参照）。更にまた、操作者に装着された発光手段を３Ｄ計測装置から操作者に向かう方向（ｚ軸方向）に沿って前後方向に移動させ、発光手段からの光を受光することにより計測された位置情報から発光手段の動きに伴う加速度、速度を検出し、動きに伴う時間も考慮しながら、発光手段の動きが予め定められた動きに対応しているか否かを判断し、対応していると判断した場合に予め定められた動きに対応付けられた処理（クリック、ダブルクリック、ドラッグ等の機能）の実行を指示することができる指示入力装置が提案されている（特願２００３−１３８６４５参照）。
【０００９】
また、加速度センサを用いて加速度または速度を検出し、文字や図形を入力する装置も知られている（例えば、特許文献７及び８参照。）。
【特許文献１】特開平１０−９８１２号公報
【特許文献２】特開平５−１５０９００号公報
【特許文献３】特開平１１−２４８３２号公報
【特許文献４】特開平１１−１１０１２５号公報
【特許文献５】特開２０００−４７８０５号公報
【特許文献６】特開２００１−３０６２３５号公報
【特許文献７】特開平８−１６３０１号公報
【特許文献８】特開２０００−２６８１３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来の３次元マウスは、操作者がＬＥＤの近傍に設けられたスイッチを指で押すことによって操作するため、２次元マウスと同様に機械的操作及びそれを実現する部品を必要とする。また、マウスの基本動作であるクリック等のシグナルは有線を介して入力されるため、操作者が操作する上でわずらわしさが生じる。この点については、ブルートゥースや符号等を付加した赤外線を用いることにより無線での入力が可能となるが、大きさや重量が増加し、またコストがかかる、という問題が生じる。更に、この技術ではＬＥＤの位置を絶対座標で求めるため、指示する方向を入力するには操作者の体の部位に発光体を２つ装着しなくてはならない、といった問題も生じる。
【００１１】
また、上述した従来のポインティングデバイスや指示入力システム等の他の指示入力デバイスも、上述した３次元マウスと同様に機械的操作を必要とするため、操作性に劣る。米国Gyration Inc.社のGyromouseも、クリック等の操作は通常の２次元マウス同様、指による機械的操作を必要としている。また、重量やサイズが比較的大きく、高価である。
【００１２】
すなわち、従来の指示入力デバイスは、ボタンやスイッチ等を押下するような比較的細かい操作が必要なため、機械的操作を行うことが比較的困難な人にとっては、使い勝手が悪い。
【００１３】
一方、人の動きやしぐさをCCDカメラにより撮影し、腕や指の方向を検出するシステムでは、人の部位には個人差があるため、特徴点を必ずしも検出できない場合がある。また、CCDカメラは視野角に限界があり、それを拡張するにはさらにCCDカメラを追加しなければならない、という問題もある。また、特徴点を検出するために画像処理を行うことから、他のシステムにくらべて解析対象が増え、レスポンスが遅くなる、という問題がある。
【００１４】
また、従来の本出願人が提案した３次元指示入力装置や指示入力装置は、定められた空間（領域）或いは平面を確認しながら発光手段が装着された指や手を動かさなくてはならないため、自然な動作で指示入力することが困難である。
【００１５】
更にまた、加速度センサを用いて指示入力する装置では、ペン等の筆記具に加速度センサを内蔵（装着）することから、筆記具のサイズや重量が増加し、使い勝手が悪い、という問題がある。また、発光手段の位置を測定して加速度及び速度を検出する場合に比べて、検出できる加速度及び速度の精度が粗くなるため、利用者の細かな動作を検出することができない、という問題がある。
【００１６】
本発明は、上述した課題を解決するために提案されたものであり、操作性に優れ、無理なく自然な動作で指示入力することができる指示入力装置、指示入力システム、指示入力方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するために、本発明の指示入力装置は、操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力手段と、前記入力手段により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出手段と、前記検出手段により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出手段と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出手段と、前記表示手段の前記表示用交点算出手段により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御手段と、を含んで構成されている。
【００１８】
本発明の指示入力方法は、操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力工程と、前記入力工程により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出工程と、前記検出工程により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出工程と、前記速度ベクトル算出工程により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出工程と、前記表示手段の前記表示用交点算出工程により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御工程と、を含んでいる。
【００１９】
本発明のプログラムは、コンピュータに、操作者の所定部位の動作に従って移動する発光手段から発光された光を検出することにより計測された該発光手段の位置を示す位置情報を入力する入力工程と、前記入力工程により入力された位置情報に基づいて、前記発光手段の加速度及び速度を検出する検出工程と、前記検出工程により検出された加速度が所定値を越えた位置を基点とする前記発光手段の移動した方向を示す速度ベクトルを前記検出された速度に基づいて算出する速度ベクトル算出工程と、前記速度ベクトル算出工程により算出された速度ベクトルを含む線分と、前記発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して設けられた仮想平面と、の交点を表示用交点として算出する表示用交点算出工程と、前記表示手段の前記表示用交点算出工程により算出された表示用交点の位置に対応する位置に前記指示情報が表示されるように前記表示手段を制御する制御工程と、を実行させる。
【００２０】
本発明において、発光手段は、操作者の所定部位の動作に従って移動する。この発光手段は、操作者の指や手等に装着可能とすることもできる。発光手段は、光を発するものであれば特に限定されず、例えばＬＥＤとしてもよい。発光手段の位置は、発光手段から発光された光が検出されることにより計測される。
【００２１】
また、発光手段により指示される位置を示すための指示情報を表示する表示手段に対応して仮想平面が設けられる。表示手段は、パソコン等に備えられているディスプレイであってもよいし、投影機等を用いて表示する大型スクリーンであってもよい。表示手段に表示される指示情報は、特に限定されないが、例えばパソコン等で用いられるカーソルとすることができる。
【００２２】
発光手段の位置を示す位置情報が入力されると、入力された位置情報に基づいて、発光手段の加速度及び速度が検出される。検出された加速度が所定値を越えた場合には、検出された加速度が所定値を越えた位置を基点とする発光手段の移動した方向を示す速度ベクトルが算出される。次に、速度ベクトルを含む線分と仮想平面との交点が表示用交点として算出される。算出された表示用交点の位置に対応する位置に指示情報が表示されるように、表示手段が制御される。
【００２３】
このように、発光手段の移動した方向を示す速度ベクトルと仮想平面との交点（表示用交点）に対応する位置に指示情報を表示するので、機械的操作を必要とせず、操作性に優れ、無理なく自然な動作で指示入力することができる。例えば、指示情報を所望の位置に表示させたい場合には、発光手段を該所望の位置の方向に移動させるだけで、容易に指示情報を表示させることができる。
【００２４】
本発明の指示入力装置は、前記検出手段により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出手段と、前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出手段と、前記平面算出手段により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出手段と、を更に含み、前記表示用交点算出手段は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出手段により検出された加速度が前記所定値を越えた後は、前記交点算出手段により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出することができる。
【００２５】
本発明の指示入力方法は、前記検出工程により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出工程と、前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出工程と、前記平面算出工程により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出工程と、を更に含み、前記表示用交点算出工程は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出工程により検出された加速度が前記所定値を越えた後は、前記交点算出工程により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出することができる。
【００２６】
本発明のプログラムは、前記検出工程により検出された加速度が所定値を越えた後に前記発光手段が静止した静止位置を始点とし、前記発光手段が該静止位置から移動した移動位置を終点とするベクトルである移動ベクトルを算出する移動ベクトル算出工程と、前記移動ベクトル算出手段により算出された移動ベクトルに垂直で、かつ前記移動位置を含む平面を算出する平面算出工程と、前記平面算出工程により算出された平面と、前記速度ベクトル算出手段により算出された速度ベクトルを含む線分と、の交点を算出する交点算出工程と、を更に含み、前記表示用交点算出工程は、前記速度ベクトルを含む線分と前記仮想平面との交点を表示用交点として算出すると共に、前記検出工程により検出された加速度が前記所定値を越えた後は、前記交点算出工程により算出された交点と前記移動位置とを含む線分と、前記仮想平面と、の交点を表示用交点として算出することができる。
【００２７】
検出された加速度が所定値を越えた後は、検出された加速度が所定値を越えた後に発光手段が静止した静止位置を始点とし、発光手段がこの静止位置から移動した移動位置を終点とするベクトルである移動ベクトルが算出される。なお、静止は、完全な静止でなくてもよい。例えば、発光手段の位置の変動が所定範囲内となったときや、発光手段の加速度及び速度が所定値以下となったときを、発光手段が静止したときとして、このときの位置を静止位置とすることができる。
【００２８】
算出された移動ベクトルにより、発光手段の移動方向が示される。続いて、算出された移動ベクトルに垂直で、かつ移動位置を含む平面が算出される。更に、この平面と速度ベクトルを含む線分との交点が算出される。この交点と移動位置とを含む線分と、仮想平面との交点が表示用交点として算出される。算出された表示用交点の位置に対応する位置に指示情報が表示されるように、表示手段が制御される。
【００２９】
このように、検出された加速度が所定値を越えた後、発光手段の静止位置及び移動位置とから新たな表示用交点を求め、該表示用交点に対応する位置に指示情報を表示するようにしたため、機械的操作を必要とせず、操作性に優れ、無理なく自然な動作で指示入力することができる。例えば、速度ベクトルと、仮想平面との表示用交点に対応する位置に指示情報を表示した後、この指示情報の表示位置を所望の位置に移動させたい場合には、発光手段を一旦静止させてから所望の位置の方向に移動するだけで、容易に所望の位置に指示情報を移動させることができる。
【００３０】
なお、移動位置は、所定時間毎の移動位置であってもよいし、静止位置から移動して再度静止したときの位置であってもよい。また、移動ベクトルに垂直で、かつ移動位置を含む平面と、速度ベクトルを含む線分と、の交点は、所定時間固定されていてもよい。これにより、移動位置毎に該交点を計算せずにすみ、計算量を軽減させることができる。
【００３１】
本発明の指示入力装置は、前記速度ベクトル算出手段により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理手段を更に含むこともできる。
【００３２】
本発明の指示入力方法は、前記速度ベクトル算出工程により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理工程を更に含むこともできる。
【００３３】
本発明のプログラムは、前記速度ベクトル算出工程により算出された速度ベクトルと、該速度ベクトルに垂直な平面と、により構成される座標系を用いて所定の処理を行う処理工程を更に含むこともできる。
【００３４】
すなわち、表示手段の画面に対して垂直な方向でなくても、任意の方向に発光手段を移動させることで、速度ベクトルと速度ベクトルに垂直な平面とにより構成される座標系を用いて所定の処理を行うことができる。従って、操作者にとって自然な動きでスムーズに指示入力することができる。
【００３５】
ここで、前記所定の処理は、前記検出手段により検出された、前記座標系における前記発光手段の加速度及び速度に基づいて、前記発光手段の動きが予め定められた動きに対応するか否かを判断すると共に、前記発光手段の動きが予め定められた動きに対応すると判断した場合に、該予め定められた動きに対応付けられた処理の実行を指示する処理とすることもできる。
【００３６】
このように、任意の方向に発光手段を移動させることで、速度ベクトルと速度ベクトルに垂直な平面とにより構成される座標系を用いて発光手段を動かすことができるため、操作者にとって自然な動きで予め定められた動きを形成することができると共に、発光手段の動きが予め定められた動きに対応するか否かを判断して予め定められた動きに対応付けられた処理の実行をスムーズに指示することができる。
【００３７】
ここで、予め定められた動きは、特に限定されず、１つであってもよいし、複数あってもよい。また、複数の細かな動きにより構成された動きであってもよい。
【００３８】
例えば、パソコンのクリックやダブルクリック、或いはドラッグ＆ドロップの動きを予め定めておけば、速度ベクトルと速度ベクトルに垂直な平面とにより構成される座標系における発光手段の動きが、これら予め定められた動きに対応するか否かを判断し、対応すると判断した場合に、クリックやダブルクリック、或いはドラッグ＆ドロップの処理の実行を指示することができる。
【００３９】
また、前記所定の処理としては、例えば、前記座標系を構成する速度ベクトルをｚ軸とし、該ｚ軸そのものを上下左右に動かして、表示手段に３次元的に表現された仮想物体のビュー（見方）を変える処理とすることもできる。
【００４０】
また、前記制御手段は、前記表示用交点算出手段により算出された最新の表示用交点及び過去に算出された複数の表示用交点の位置の各々に対応して前記指示情報が複数表示されるように前記表示手段を制御することができる。
【００４１】
これにより、指示情報の位置を複数表示することができ、指示情報の表示位置を見失うことなく、容易に指示位置を確認することができる。
【００４２】
また、前記制御手段は、前記複数の指示情報の表示状態が、時間の経過に従って変化するように前記表示手段を制御することもできる。
【００４３】
これにより、指示情報が表示されてから経過した時間を確認することができると共に、最新の表示位置を見失うことがなくなる。
【００４４】
前記表示手段は、前記指示情報を表示すると共に所定のオブジェクトを表示し、前記制御手段は、前記指示情報の表示位置と前記所定のオブジェクトの表示位置とが一致した場合、及び、前記指示情報の表示位置と前記所定のオブジェクトの表示位置とが一致し、かつ前記処理手段により前記予め定められた動きに対応付けられた処理の実行が指示された場合、のいずれか一方の場合に、前記表示手段の表示状態を変更するように前記表示手段を制御することができる。
【００４５】
このように表示状態が変更されることにより、指示情報とオブジェクトとの位置関係を確認することができる。例えば、このような表示状態の変更は、シューティングゲーム等の表示変更に適用することができる。
【００４６】
また、本発明の指示入力システムは、操作者の所定部位の動作に従って移動する発光手段と、前記発光手段から発光された光を検出することにより前記発光手段の位置を計測する計測装置と、上記指示入力装置と、を含んで構成されている。
【００４７】
本指示入力システムも、上述した本発明の指示入力装置、指示入力方法、及びプログラムと同様に作用するため、機械的操作を必要とせず、操作性に優れ、無理なく自然な動作で指示入力することができる。
【００４８】
また、前記発光手段を携帯電話に設けることもできる。このように、ワイヤレスで持ち歩くことができる携帯電話に発光手段を設けることにより、容易に指示入力することができ、携帯電話の電源を発光手段の電源と共有することができる。
【００４９】
なお、上述した本発明のプログラムを記憶する記憶媒体は、特に限定されず、ハードディスクであってもよいし、ＲＯＭであってもよい。また、ＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【発明の効果】
【００５０】
本発明は、発光手段の移動した方向を示す速度ベクトルと、仮想平面との交点に対応する位置に指示情報を表示すると共に、発光手段が静止してから更に移動したときには、仮想平面上の新たな交点を求め、該交点に対応する位置に指示情報を表示するようにしたため、機械的操作を必要とせず、操作性に優れ、無理なく自然な動作で指示入力することができる。また、速度ベクトルと速度ベクトルに垂直な平面とにより構成される座標系を用いて所定の処理を行うようにしたため、機械的操作を必要とせず、操作性に優れ、無理なく自然な動作で指示入力することができる。
【発明を実施するための最良の形態】
【００５１】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
【００５２】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る指示入力装置としての機能を備えたパソコン３０を含む指示入力システムの構成を示す図である。図示されるように、指示入力システムは、ＬＥＤ１０と、３Ｄ計測装置２０と、パソコン３０とを備えている。
【００５３】
ＬＥＤ１０は、操作者の指や手等に装着される。
【００５４】
３Ｄ計測装置２０は、不図示の受光部がＬＥＤ１０から発光された光を受光することによりＬＥＤ１０からの光を検出し、ＬＥＤ１０の３次元位置を計測する。該計測された３次元位置を示す位置情報（ｘ、ｙ、ｚ座標値）はパソコン３０に出力される。なお、この３Ｄ計測装置２０は、ＬＥＤ１０等の発光体から発光された光を検出することにより３次元位置を計測できる装置であれば特に限定されないが、特開平１０−９８１２号公報に記載された位置検出の技術等を用いて構成することができる。
【００５５】
本指示入力システムでは、３Ｄ計測装置２０の受光部をパソコン３０のディスプレイの画面の位置と略一致する位置（例えばディスプレイ上部等）に装備することにより、パソコン３０のディスプレイの画面前方の空間におけるＬＥＤ１０の３次元位置を計測する。また、パソコン３０のディスプレイの画面に略一致する位置には、パソコン３０のディスプレイの画面に対応した（実際には存在しない）仮想平面が設定される。ＬＥＤ１０を装着した操作者は、該仮想平面に対してＬＥＤ１０を装着した手を移動させることにより、仮想平面に対応したディスプレイの画面の任意の位置にカーソルを表示させることができる。
【００５６】
本指示入力システムの３Ｄ計測装置２０で用いられる座標系は、仮想平面の左上角に原点があり、仮想平面をｘ−ｙ平面とし、仮想平面に垂直な軸をｚ軸とする座標系であり、この座標系では、仮想平面から操作者に向かう方向がｚ軸の＋方向、仮想平面に向かって右方向がｘ軸の＋方向、下方向がｙ軸の＋方向となるように定められている。以下、この座標系を基準座標系と呼称する。
【００５７】
なお、仮想平面はどの平面上に設けてもよいが、ディスプレイの画面に略一致する平面上に設けることにより、操作者が指示入力する際、入力位置を感覚的に認識しやすいため好適である。
【００５８】
図２は、パソコン３０の具体的な構成を示した図である。図示されるように、パソコン３０のパソコン本体３２は、ＣＰＵ３４、ＲＯＭ３６、ＲＡＭ３８、及び入出力インタフェース（Ｉ／Ｏ）４０を含んで構成されている。また、Ｉ／Ｏ４０には、３Ｄ計測装置２０と、ディスプレイ４２と、スピーカ４４と、ハードディスクドライブ（ＨＤＤ）４６とが接続されている。
【００５９】
３Ｄ計測装置２０から出力されたＬＥＤ１０の位置情報は、Ｉ／Ｏ４０を介して入力される。
【００６０】
ＨＤＤ４６には、ＬＥＤ１０の加速度及び速度を検出し、該加速度及び速度に基づいてディスプレイ４２にＬＥＤ１０により指示される位置を示すためのカーソルを表示すると共に、ＬＥＤ１０の動きを検出して所定の処理の実行を指示する指示入力処理ルーチンのプログラム（以下、指示入力処理プログラムと呼称）、及び指示入力処理プログラムを実行する際に用いられる各種設定情報が記憶されている。ＣＰＵ３４は、指示入力処理プログラム及び各種設定情報をＲＡＭ３８にロードして、該プログラムを実行する。
【００６１】
指示入力処理ルーチンでは、検出した加速度及び速度に基づいて、ＬＥＤ１０の指示する方向や、動きが判断される。加速度を用いて判断することにより、ＬＥＤ１０を急速に動かしている状態とそうでない状態、すなわち、操作者が意識して手を動かしている状態と、指示入力する意志がなく、自由に手を動かしている状態とを区別することができる。また、速度を用いて判断することにより、ＬＥＤ１０をある程度の距離だけ動かしたことを認識でき、実際のＬＥＤ１０の動きを判断することができる。速度を判断材料とすることにより、位置情報から移動距離自体を算出して用いる場合に比して、より小さな動きを認識することが可能となる。
【００６２】
各種設定情報には、ＬＥＤ１０の動きに伴う加速度の閾値Ａ0、速度の閾値Ｖ0、ポインティングモード（後述）の時間Ｋ１、コマンドモード（後述）の時間Ｋ２、ＬＥＤ１０の動きを判断するための時間の閾値Ｔ１0及びＴ２0とが含まれている。
【００６３】
指示入力処理プログラムや各種設定情報を記憶する記憶媒体は、ＨＤＤ４６に限定されず、ＲＯＭ３６であってもよい。また、図示は省略するが、Ｉ／Ｏ４０に接続されたＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカードであってもよい。更にまた、該プログラムを、ネットワークに接続されたサーバ等からダウンロードするようにしてもよい。
【００６４】
図３は、パソコン本体３２の構成を機能的に示した図である。
【００６５】
図示されるように、パソコン本体３２は、コマンド生成部５０と、マウスドライバ５２と、ＯＳ５４と、イメージドライバ５６とを含んで構成されている。
【００６６】
コマンド生成部５０は、３Ｄ計測装置２０で計測された３次元位置を示す位置情報を入力して、ＬＥＤ１０の加速度及び速度を検出する。更に、検出した加速度及び速度に基づいて、カーソルがディスプレイ４２に表示されるように、ポインティングのためのコマンドを生成してマウスドライバ５２に出力する。更にまた、検出した加速度及び速度に基づいて、ローカル座標系（後述）におけるＬＥＤ１０の動きが、ボタンが装備された一般的なマウス（以下、これを２次元マウスと呼称する）におけるボタン操作、すなわち、クリック、ダブルクリック、ドラッグ・アンド・ドロップ、のいずれに対応する動きかを判断し、判断結果に対応するコマンドを生成してマウスドライバ５２に出力する。
【００６７】
マウスドライバ５２には、コマンド生成部５０からコマンドが入力される。マウスドライバ５２に入力されたコマンドは、ＯＳ５４に出力される。
【００６８】
ＯＳ５４は、マウスドライバ５２からのコマンドを解釈して該コマンドに対応した処理を実行する。
【００６９】
イメージドライバ５６は、ＯＳ５４の制御の下で、ＬＥＤ１０の位置や動きに対応した画像をディスプレイ４２に表示するための処理を行う。
【００７０】
なお、図示を省略するが、パソコン本体３２にはサウンドドライバも備えられている。サウンドドライバは、ＯＳ５４の制御の下で、ＬＥＤ１０の動きに対応した音声をスピーカ４４から出力するための処理を行う。
【００７１】
以下、本実施の形態に係る指示入力処理の流れについて詳細に説明する。
【００７２】
操作者がＬＥＤ１０を装着した手を３Ｄ計測装置２０の計測領域内で動かす。手の動きに応じてＬＥＤ１０の位置が変化する。３Ｄ計測装置２０は、ＬＥＤ１０の３次元位置を所定時間毎に計測し、該３次元位置を示す位置情報を逐次パソコン３０（パソコン本体３２）に出力する。該位置情報は指示入力処理ルーチンで用いられる。
【００７３】
図４及び図５は指示入力処理のメインルーチンを示したフローチャートである。
【００７４】
なお、本フローチャートでは図示を省略しているが、パソコン３０（パソコン本体３２）には、所定時間毎に３Ｄ計測装置２０からＬＥＤ１０の位置情報が入力される。そして、ＣＰＵ３４により、入力毎に入力された位置情報に基づいてＬＥＤ１０の加速度及び速度が検出される。例えば、速度は所定の時間内の各座標値の差分を該所定の時間で割ることにより検出し、加速度は速度を該所定の時間で割ることにより検出することができる。
【００７５】
ステップ１００では、加速度が閾値Ａ0を越えたか否かを判断する。ここで、加速度≦Ａ0であると判断した場合には、３Ｄ計測装置２０から次の位置情報を入力するまで、待機状態を維持する。また、加速度＞Ａ0であると判断した場合には、操作者が意志をもって手を動かした状態であるため、この時点で、所望の位置にカーソルを表示するためのポインティングモードを開始する。
【００７６】
ステップ１０２では、ポインティングモードの時間Ｋ１を計時するために、タイマＴをリセットしてスタートさせる。
【００７７】
ステップ１０４で、速度が閾値Ｖ0を越えたか否かを判断する。ここで判断される速度は、ステップ１００で閾値Ａ0を越える加速度を発生させたＬＥＤ１０の動きに伴う速度である。ステップ１０４で、速度≦Ｖ0であると判断した場合には、ポインティングモードを終了してステップ１００に戻る。また、速度＞Ｖ0であると判断した場合には、ステップ１０６に移行する。
【００７８】
なお、ステップ１００及びステップ１０４で肯定判断される動作は、操作者がＬＥＤ１０を装着した手をポインティング方向に急速に動かす動作である。以下、任意の方向に手を急速に動かす動作をプッシュと呼称する。プッシュによりポインティングモードが開始されるが、このポインティングモードは、ステップ１００で閾値Ａ0を越える加速度が検出されたときから時間Ｋ１が経過するまで、或いは時間Ｋ１が経過するまでの間に新たにプッシュの動作がなされるまで継続される。なお、ステップ１００及び１０４で肯定判断される動作（プッシュ）の方向は、ディスプレイ４２の画面或いは仮想平面に対して垂直な方向である必要はなく、任意の方向でよい。
【００７９】
ステップ１０６では、指示入力処理ルーチンのサブルーチンとして予め指示入力処理プログラムに組み込まれている第１ポインティング処理ルーチンが実行される。
【００８０】
以下、図６の第１ポインティング処理ルーチンを示したフローチャート、及び図８の説明図を参照しながら第１ポインティング処理の流れについて説明する。
【００８１】
ステップ２００では、ステップ１００で閾値Ａ0を越える加速度が検出された位置（加速度検出位置）を基点とし、ＬＥＤ１０の移動方向を示す速度ベクトルＳを算出する。検出された速度により（ｘ、ｙ、ｚ）方向のベクトルが得られるため、これにより即座に速度ベクトルＳを求めることができる。
【００８２】
ステップ２０２では、速度ベクトルＳを含む線分Ｍ１を算出する。速度ベクトルＳは幾何学的に簡単に求められるが、線分Ｍ１は、速度ベクトルＳを一般化しパラメトリックに表現したものである。
【００８３】
ステップ２０４では、線分Ｍ１と仮想平面Ｖとの交点Ｃ１を算出する。仮想平面Ｖとは、前述したように、ディスプレイ４２の画面に略一致する平面上に設定された、ディスプレイ４２の画面に対応した平面をいう。交点Ｃ１は、仮想平面Ｖ上の点として幾何学的に求めることができ、線分Ｍ１を示す式と仮想平面Ｖを示す式とから一意に算出される。
【００８４】
ステップ２０６では、ポインティング処理を行う。具体的には、ディスプレイ４２の画面における、ステップ２０４で算出した仮想平面Ｖ上の点（交点Ｃ１）の位置に対応する位置にカーソルが表示されるようにポインティングのためのコマンドを生成してマウスドライバ５２に出力する。マウスドライバ５２を介して該コマンドが入力されたＯＳ５４は、該コマンドを解釈し、ディスプレイ４２の画面の、交点Ｃ１に対応した位置にカーソルが表示されるようにディスプレイ４２を制御する。
【００８５】
このように、まず、最初のプッシュにより指示された方向に対応して、仮想平面Ｖ上の点（交点Ｃ１）が求められ、ディスプレイ４２の画面にカーソルが表示される。
【００８６】
ステップ２０８では、ＬＥＤ１０が静止したか否かを判断する。ここでは、ＬＥＤ１０のｘ、ｙ、ｚ座標値の移動平均から所定の範囲内に位置するｘ、ｙ、ｚ座標値が、所定数以上入力された場合に、ＬＥＤ１０が静止したと判断する。なお、静止の判断は特にこれに限定されず、所定時間前のｘ、ｙ、ｚ座標値と最新のｘ、ｙ、ｚ座標値との距離が所定距離内となったときに静止したと判断するようにしてもよいし、加速度及び速度が所定値以下となったときに静止したと判断するようにしてもよい。
【００８７】
ステップ２０８で静止したと判断した場合には、ステップ２１０で、静止位置Ｐを検出する。静止したと判断されたときのｘ、ｙ、ｚ座標値が静止位置Ｐとなる。ここで検出された静止位置Ｐは、後述する第２ポインティング処理で用いられる。
【００８８】
図４のステップ１０６の第１ポインティング処理終了後は、ステップ１０８に移行する。ステップ１０８では、加速度が閾値Ａ0を越えたか否かを判断する。ここで、加速度≦Ａ0であると判断した場合には、プッシュの動作は開始されていないと判断し、ステップ１１０に移行する。ステップ１１０では、タイマＴがポインティングモードの時間Ｋ１に到達したか否かを判断する。
【００８９】
ステップ１１０で、タイマＴ＜Ｋ１であると判断した場合には、ポインティングモードの時間Ｋ１は経過していないと判断し、ステップ１１２に移行する。
【００９０】
ステップ１１２では、指示入力処理ルーチンのサブルーチンとして予め指示入力処理プログラムに組み込まれている第２ポインティング処理ルーチンが実行される。
【００９１】
以下、図７の第２ポインティング処理ルーチンを示したフローチャート、及び図８の説明図を参照しながら第２ポインティング処理の流れについて説明する。
【００９２】
ステップ３００では、ＬＥＤ１０が移動した移動位置Ｑを検出する。なお、ここでは、移動位置Ｑは静止していなくてもよい。
【００９３】
ステップ３０２では、静止位置Ｐと移動位置ＱとからＬＥＤ１０の移動方向を示す移動ベクトルＰＱを算出する。
【００９４】
ステップ３０４では、該移動ベクトルＰＱに垂直で、かつ移動位置Ｑを含む平面Ｎを算出する。具体的には、移動ベクトルＰＱとの内積が０になるベクトル（移動ベクトルＰＱに直交するベクトル）を２つ求め、この２つのベクトルと移動位置Ｑとから、移動ベクトルＰＱに垂直で、移動位置Ｑを含む平面Ｎを算出する。
【００９５】
ステップ３０６では、ステップ３０４で算出した平面Ｎと、ステップ２０６で算出した線分Ｍ１との交点Ｏを算出する。
【００９６】
ステップ３０８では、移動位置Ｑと交点Ｏとを含む線分Ｍ２を算出する。
【００９７】
ステップ３１０では、線分Ｍ２と仮想平面Ｖとの交点Ｃ２を算出する。交点Ｃ２は、仮想平面Ｖ上の点として、線分Ｍ２を示す式と仮想平面Ｖを示す式とから一意に算出される。
【００９８】
ステップ３１２では、第１ポインティング処理のステップ２０６と同様にポインティング処理を行う。これにより、ディスプレイ４２に表示されるカーソルは、交点Ｃ１に対応する位置から交点Ｃ２に対応する位置に移動する。
【００９９】
以上説明した第２ポインティング処理は、図４のステップ１０８及びステップ１１０で否定判断が続く間（すなわち、新たにプッシュの動作がなされるまで、或いは時間Ｋ１が経過するまで）繰り返され、逐次新しい交点Ｃ２が算出されてカーソルの表示位置が移動する。静止位置Ｐ及び線分Ｍ１は変更されないため、移動位置Ｑを検出するだけで、交点Ｃ２を逐次更新していくことができる。なお、ここでは、３Ｄ計測装置２０から位置情報が所定時間毎に入力されるため、該所定時間毎に第２ポインティング処理が実行される。すなわち、該所定時間毎に移動位置Ｑが検出されて交点Ｃ２が更新される。
【０１００】
一方、ステップ１１０で、タイマＴ≧Ｋ１であると判断した場合には、新たなプッシュが行われないうちに時間Ｋ１に到達したと判断し、ポインティングモードを終了してステップ１００に戻る。
【０１０１】
また、ステップ１０８で、加速度＞Ａ0であると判断した場合には、新たなプッシュの動作が開始されたと判断し、ステップ１１４に移行する。ステップ１１４では、タイマＴが時間Ｋ１未満か否かを判断する。ここで、タイマＴ≧Ｋ１であると判断した場合には、ポインティングモードを終了してステップ１００に戻る。また、タイマＴ＜Ｋ１であると判断した場合には、時間Ｋ１が経過するまでにプッシュの動作が開始されたと判断し、ステップ１１６に移行する。
【０１０２】
ステップ１１６では、速度が閾値Ｖ0を越えたか否かを判断する。ここで判断される速度は、ステップ１０８で閾値Ａ0を越える加速度を発生させたＬＥＤ１０の動きに伴う速度である。ステップ１１６で、速度≦Ｖ0であると判断した場合には、ポインティングモードを終了してステップ１００に戻る。また、速度＞Ｖ0であると判断した場合には、新たにプッシュの動作がなされたと判断し、ポインティングモードを終了してステップ１１８に移行する。
【０１０３】
ステップ１１８では、コマンドモードの時間Ｋ２を計時するために、タイマＴをスタートさせる。ここで、ＬＥＤ１０の動きを判断して判断結果に対応する処理の実行を指示するためのコマンドモードが開始される。
【０１０４】
図５のステップ１２０では、座標系変換式を算出する。
【０１０５】
このステップでは、ステップ１０８及び１１６で肯定判断されたときのプッシュによる速度ベクトルＳと静止位置Ｐを前述のステップ２００〜２０４と同様に求め、３Ｄ計測装置２０から入力された基準座標系における位置情報を、速度ベクトルＳがｚ軸に、静止位置Ｐが原点となるような座標系（以下、この座標系をローカル座標系と呼称する）における位置情報に変換するための式を算出する。
【０１０６】
具体的には、まず、基準座標系の原点を平行移動させて静止位置Ｐに一致させる変換を行い、座標系Ａ１を得る。この座標系Ａ１のｚ−ｙ平面と、速度ベクトルＳ及び静止位置Ｐを含む線分Ｍ１とが重なるように、座標系Ａ１を座標系Ａ１のｙ軸まわりに回転させ、座標系Ａ２を得る。更に線分Ｍ１がＡ２のｚ座標軸に重なるように、座標系Ａ２を座標系Ａ２のｘ軸まわりに回転させ、座標系Ａ３を得る。この３つの変換式を１つの行列（例えば３ｘ３）にまとめる。この行列を座標系変換式という。
【０１０７】
なお、以下では、ｚ軸が速度ベクトルＳに一致し、原点が静止位置Ｐの座標系（すなわち、変換して得られる座標系Ａ３）をローカル座標系と呼称し、ローカル座標系のｘ、ｙｚ軸を基準座標系のｘ、ｙ、ｚ軸と区別するため、ローカルｘ、ｙ、ｚ軸と呼称する。また、ローカルｘ軸及びローカルｙ軸により形成される平面をローカル平面Ｌと呼称する。図９に、ローカル座標系の一例を示す。コマンドモード中は、このローカル座標系が用いられる。すなわち、３Ｄ計測装置２０から所定時間毎に入力されるｘ、ｙ、ｚ座標値が、各々座標系変換式によりローカル座標系のｘ、ｙ、ｚ座標値に変換されて用いられる。
【０１０８】
ステップ１２２では、コマンド処理ルーチン（後述）を起動させて、コマンド処理を実行する。このコマンド処理ルーチンは、ローカルｚ軸上のＬＥＤ１０の動きを判断し、該動きに対応付けられた処理の実行を指示するための処理ルーチンであり、指示入力処理ルーチンのサブルーチンとして予め指示入力処理プログラムに組み込まれている。
【０１０９】
ステップ１２４では、タイマＴがコマンドモードの時間Ｋ２に到達したか否かを判断する。ここで、タイマＴ＜Ｋ２であると判断した場合には、コマンド処理ルーチンを繰り返す。また、タイマＴ≧Ｋ２であると判断した場合には、コマンドモードの時間Ｋ２が経過したと判断し、ステップ１００に戻る。これにより、コマンドモードは終了する。
【０１１０】
あるいは、コマンド処理ルーチン実行中、メインルーチンは常にタイマＴを監視して時間Ｋ２が経過したか否かを判断し、時間Ｋ２が経過したと判断したときには割込みによりコマンド処理ルーチンを強制終了するようにしてもよい。
【０１１１】
ここで、コマンド処理ルーチンの処理について説明する。
【０１１２】
まず、図１０を参照しながら、コマンド処理ルーチンで判断されるＬＥＤ１０の動きについて説明する。図において、加速度の状態は実線の矢印で、速度の状態は点線の矢印で示されている。
【０１１３】
クリックの動きは、予め設定されている時間以内の動きであり、ローカル平面Ｌに近づく方向（ローカルｚ軸のマイナス方向）に急速に移動した後、逆の方向（ｚ軸のプラス方向）に急速に移動する（すなわち、ローカルｚ軸上を１往復する）動きとして設定されており、図ではＡの動きに相当する。
【０１１４】
ダブルクリックの動きは、予め設定されている時間以内の動きであり、クリックの動きを連続して２回繰り返す（すなわち、ローカルｚ軸上を２往復する）動きとして設定されており、図ではＢの動きに相当する。
【０１１５】
ドラッグ・アンド・ドロップの動きは、ドラッグの動きとドロップの動きとから構成され、図ではＣの動きに相当する。ドラッグは、ローカルｚ軸のマイナス方向に急速に移動した後、予め設定されている時間経過後、ゆっくりとマイナス方向或いはローカル平面Ｌ上を移動する動きとして設定されている。なお、ゆっくりとマイナス方向或いはローカル平面Ｌ上を移動する動きには、時間の制限はない。ドロップは、ローカルｚ軸のプラス方向に急速に移動する動きとして設定されている。
【０１１６】
図１１は、図１０のダブルクリックの動き（Ｂ）のローカルｚ軸上の動きを時間の経過に従って示した図である。本図において、横軸は時間軸、縦軸はｚ軸を表している。Ｂ０点〜Ｂ４点で示される太実線はＬＥＤ１０の動きの軌跡を表している。細実線矢印は加速度の状態を表し、点線矢印は速度の状態を表している。なお、太実線で示される時間軸上のＬＥＤ１０の動き、該動きに伴う加速度及び速度は、実際には非常に小さいものであるが、本図では誇張して描かれている。
【０１１７】
以下、図１２から図１４の各フローチャートを用いて、図１１と対比させながら、コマンド処理ルーチンについて説明する。
【０１１８】
なお、ここではローカルｚ軸上のＬＥＤ１０の動きを判断するため、ＬＥＤ１０の動きを判断するための加速度及び速度は、ローカル座標系のｚ座標値を用いて検出する。
【０１１９】
また、ローカル平面Ｌに近づく方向をローカルｚ軸のマイナス方向とし、ローカル平面Ｌから離れる方向をローカルｚ軸のプラス方向として加速度及び速度を検出するため、ＬＥＤ１０をローカル平面Ｌに近づく方向に移動させれば、検出される加速度及び速度の符号は−となり、ローカル平面Ｌから離れる方向に移動させれば、検出される加速度及び速度の符号は＋となる。なお、閾値Ａ0及び閾値Ｖ0は絶対値で設定されているため、検出した加速度又は速度と閾値とを比較する際には、加速度及び速度が正の値となるように必要に応じて−の符号を付して処理する。
【０１２０】
図１２のフローチャートのステップ４００で、検出した加速度に−の符号を付した値が、加速度の閾値Ａ0を越えたか否かを判断する。前述したように、ＬＥＤ１０をローカル平面Ｌに近づく方向に動かせば、速さ及び加速度の符号は−となる。従って、この場合には、−の符号を付すことにより速さ及び加速度を正の値にする。
【０１２１】
ステップ４００で、−加速度≦Ａ0であると判断した場合には、本サブルーチンを終了してメインルーチンに戻る。図１１では、Ｂ０点以前の状態が待機状態に相当する。メインルーチン（図５）のステップ１２４でタイマＴ≦Ｋ２と判断されれば、またコマンド処理が繰り返される。またステップ４００で−加速度＞Ａ0であると判断した場合には（図１１では、Ｂ０点に相当）、操作者が意志をもって手を動かした状態であるため、ステップ４０２に移行し、タイマＴ１及びタイマＴ２をスタートさせる。
【０１２２】
ここで、タイマＴ１は、ある方向への移動を開始してから該ある方向とは逆の方向への移動を開始するまでの時間を計時するために用いられるタイマである。タイマＴ１に対しては、予め閾値Ｔ１0が設定されている。
【０１２３】
タイマＴ２は、ダブルクリックの動きを判断するために用いられるタイマである。タイマＴ２に対しては、予め閾値Ｔ２0が設定されている。
【０１２４】
ステップ４０４で、速度に−の符号を付した値が、閾値Ｖ0を越えたか否かを判断する。ここで、−速度≦Ｖ0であると判断した場合には、ステップ４１６に移行し、タイマＴ１及びＴ２をリセットして終了する。また、−速度＞Ｖ0であると判断した場合には（図１１ではＢ１点に相当）、ステップ４０６に移行し、加速度が閾値Ａ0を越えたか否かを判断する。なお、ここでは、ＬＥＤ１０の移動方向を明瞭にするために便宜上加速度に＋の符号を付す。
【０１２５】
ステップ４０６で、＋加速度≦Ａ0であると判断した場合には、ステップ４０８に移行し、タイマＴ１が閾値Ｔ１0を越えたか否かを判断する。ここで、タイマＴ１≦Ｔ１0であると判断した場合には、ステップ４０６に戻る。また、＋加速度＞Ａ0であると判断した場合には、ステップ４１０に移行し、タイマＴ１が閾値Ｔ１0以下であるか否かを判断する。
【０１２６】
ステップ４１０で、タイマＴ１＞Ｔ１0であると判断した場合には、ＬＥＤ１０の動きは予め設定されている動きのいずれにも対応しないと判断し、ステップ４１６に移行し、タイマＴ１及びＴ２をリセットして終了する。また、ステップ４１０で、タイマＴ１≦Ｔ１0であると判断した場合には、ＬＥＤ１０の動きは予め設定されている時間以内の動きであるため、ステップ４１２に移行し、速度が、閾値Ｖ0を越えたか否かを判断する。
【０１２７】
ステップ４１２で、＋速度≦Ｖ0であると判断した場合には、ＬＥＤ１０の動きは予め設定されている動きのいずれにも対応しないと判断し、ステップ４１６に移行し、タイマＴ１及びＴ２をリセットして終了する。＋速度＞Ｖ0であると判断した場合には、ＬＥＤ１０の動きは前述した予め設定されているクリックの動きに対応すると判断し、ステップ４１４に移行し、クリック処理を行う（図１１では、Ｂ２点に相当）。
【０１２８】
クリック処理を具体的に図３の機能構成図を用いて説明すると、コマンド生成部５０が、クリックの動きに対応付けられた処理の実行を指示するためのコマンドをマウスドライバ５２に出力する。コマンド生成部５０は、該コマンドを２次元マウスにおけるボタン操作によるコマンドと同様の形式で出力する。これにより、マウスドライバ５２を介して該コマンドが入力されたＯＳ５４では、２次元マウスと同様に該コマンドを解釈して適切な処理を実行することができる。
【０１２９】
ステップ４１４のクリック処理を実行した後は、図１３のステップ４２０に移行し、タイマＴ１をリセットしてスタートさせる。このステップ以降の処理は、ＬＥＤ１０の動きがダブルクリックの動きであるか否かを判断するための処理となる。
【０１３０】
ステップ４２２では、加速度に−の符号を付した値が閾値Ａ0を越えたか否かを判断する。−加速度≦Ａ0であると判断した場合には、ステップ４２４に移行し、タイマＴ１が閾値Ｔ１0を越えたか否かを判断する。
【０１３１】
ステップ４２４で、タイマＴ１＞Ｔ１0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。ステップ４２４で、タイマＴ１≦Ｔ１0であると判断した場合には、ステップ４２２に戻る。
【０１３２】
ステップ４２２で、−加速度＞Ａ0であると判断した場合には、ステップ４２６に移行し、タイマＴ１が閾値Ｔ１0以下であるか否かを判断する。
【０１３３】
ステップ４２６で、タイマＴ１＞Ｔ１0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。ステップ４２６で、タイマＴ１≦Ｔ１0であると判断した場合には、ステップ４２８に移行し、−速度が閾値Ｖ0を越えたか否かを判断する。
【０１３４】
ステップ４２８で、−速度≦Ｖ0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。ステップ４２８で、−速度＞Ｖ0であると判断した場合には、ステップ４３０に移行し、タイマＴ１をリセットしてスタートさせる（図１１では、Ｂ３点に相当）。
【０１３５】
ステップ４３２では、次に検出した加速度が閾値Ａ0を越えたか否かを判断する。ここで、＋加速度≦Ａ0であると判断した場合には、ステップ４３４に移行し、タイマＴ１が閾値Ｔ１0を越えたか否かを判断する。
【０１３６】
ステップ４３４で、タイマＴ１＞Ｔ１0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。タイマＴ１≦Ｔ１0であると判断した場合には、ステップ４３２に戻る。
【０１３７】
ステップ４３２で、＋加速度＞Ａ0であると判断した場合には、ステップ４３６に移行し、タイマＴ１が閾値Ｔ１0以下であるか否かを判断する。
【０１３８】
ステップ４３６で、タイマＴ１＞Ｔ１0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。タイマＴ１≦Ｔ１0であると判断した場合には、ステップ４３８に移行し、タイマＴ２が閾値Ｔ２0以下であるか否かを判断する。
【０１３９】
タイマＴ２は、クリックの動きがスタートしたときからの時間を計時している。閾値Ｔ２0は、ダブルクリックの動きに要する時間の限度として予め設定されている。従って、タイマＴ２と閾値Ｔ２0を比較することにより、ＬＥＤ１０の動きがダブルクリックの動きに対応するか否かを判断することができる。
【０１４０】
ステップ４３８で、タイマＴ２＞Ｔ２0であると判断した場合には、ＬＥＤ１０の動きはダブルクリックの動きに対応していないと判断し、ステップ４４４に移行してタイマＴ１及びＴ２をリセットし終了する。タイマＴ２≦Ｔ２0であると判断した場合には、ステップ４４０に移行し、＋速度が閾値Ｖ0を越えたか否かを判断する。
【０１４１】
ステップ４４０で、＋速度≦Ｖ0であると判断した場合には、ステップ４４４に移行し、タイマＴ１及びＴ２をリセットして終了する。＋速度＞Ｖ0であると判断した場合には、ＬＥＤ１０の動きは前述した予め設定されているダブルクリックの動きに対応すると判断し、ステップ４４２に移行してダブルクリック処理を行う（図８では、Ｂ４点に相当）。
【０１４２】
ダブルクリック処理もクリック処理と同様に、コマンド生成部５０が、ダブルクリックの動きに対応付けられた処理の実行を指示するためのコマンドをマウスドライバ５２に出力する。マウスドライバ５２を介して該コマンドが入力されたＯＳ５４では、２次元マウスと同様に該コマンドを解釈して、ダブルクリックの動きに対応する適切な処理を実行することができる。
【０１４３】
ステップ４４２の後は、ステップ４４４に移行してタイマＴ１及びＴ２をリセットし、終了する。
【０１４４】
なお、ダブルクリックの動きは、上述の速度、加速度、及び時間の条件を満たした動きであれば、特に図１１に限定されるものではない。例えば、２回目のクリックのローカルｚ軸上の始点（すなわち、Ｂ２点）は、１回目のクリックのローカルｚ軸上の始点（すなわち、Ｂ０点）と同じ位置である必要はない。
【０１４５】
一方、図１２のステップ４０８で、タイマＴ１＞閾値Ｔ１0であると判断した場合には、ＬＥＤ１０の動きは予め設定されているドラッグの動きに対応すると判断し、図１４のステップ４５０に移行し、ドラッグ処理を行う。
【０１４６】
具体的には、コマンド生成部５０が、クリック処理と同様に、ドラッグの動きに対応付けられた処理の実行を指示するためのコマンドをマウスドライバ５２に出力する。マウスドライバ５２を介して該コマンドが入力されたＯＳ５４では、該コマンドを解釈して、ドラッグの動きに対応する適切な処理を実行する。
【０１４７】
なお、ドラッグ処理は、通常は、クリック処理の後に行われる処理である。例えば、クリック処理により選択されたアイコンなどのオブジェクトをドラッグ（移動）したりすることができる。
【０１４８】
ステップ４５０の後は、ステップ４５２で、加速度が閾値Ａ0を越えたか否かを判断する。＋加速度≦Ａ0であると判断した場合には、ステップ４５０に戻り、ドラッグ処理を継続する。また、＋加速度＞Ａ0であると判断した場合には、ステップ４５４に移行し、速度が閾値Ｖ0を越えたか否かを判断する。
【０１４９】
ステップ４５４で、＋速度≦Ｖ0であると判断した場合には、ステップ４５０に戻り、ドラッグ処理を継続する。＋速度＞Ｖ0であると判断した場合には、ＬＥＤ１０の動きは予め設定されているドロップの動きに対応するため、ステップ４５６に移行し、ドロップ処理を行う。
【０１５０】
ドロップ処理もドラッグと同様に、コマンド生成部５０が、ドラッグの動きに対応付けられた処理の実行を指示するためのコマンドをマウスドライバ５２に出力する。マウスドライバ５２を介して該コマンドが入力されたＯＳ５４では、該コマンドを解釈して、ドラッグの動きに対応する適切な処理を実行する。
【０１５１】
ステップ４５６の後は、ステップ４５８でタイマＴ１及びＴ２をリセットして終了する。
【０１５２】
以上説明した指示入力処理ルーチンを具体的な例を挙げて説明する。例えば、操作者が、ディスプレイ４２に表示されているファイル（のアイコン）をダブルクリックしてオープンさせたい場合には、まず、１回目のプッシュでポインティングモードを開始し、操作者がオープンさせたいファイルのアイコンが表示されている位置とカーソルの表示位置とが一致（ポインティング）するようにＬＥＤ１０を移動させる。該ファイルにポインティングできたところで、２回目のプッシュを行ってコマンドモードを開始し、ダブルクリックの動作を行う。これによりファイルをオープンさせることができる。なお、１回目のプッシュで、カーソルの位置を補正する必要がなければ、直ちに２回目のプッシュを行えばよい。
【０１５３】
なお、上述したドロップの動きを、上述のＬＥＤ１０をローカルｚ軸上のプラス方向に急速に動かす動きではなく、再度ローカル平面に対してプッシュする動き（すなわち、ローカルｚ軸上のマイナス方向に急速に動かす動き）としてもよい。この場合には、ステップ４５２を、−加速度＞Ａ0であるか否かを判断する処理に置換え、ステップ４５４を、−速度＞Ｖ0であるか否かを判断する処理に置換える。これにより、再度ローカル平面に対してプッシュしたときにドロップ処理が行われるという方式になる。この方式によれば、ドロップの動きが、人が”物を置く”という動きに近くなり、操作者はより自然な動きで指示入力できる。
【０１５４】
また、ＬＥＤ１０の動きが予め定められた動き（クリック、ダブルクリック、ドロップ＆ドロップ）に対応するか否かを判断する際、ＬＥＤ１０の動き又は予め定められた動きに許容量を持たせて判断するようにしてもよい。例えば、操作者がＬＥＤ１０を手に装着して動かす場合、手のふらつきによって、意図しない微細なぶれが生じる場合がある。従って、判断手段は、ＬＥＤ１０の動き又は予め定められた動きに許容量を持たせて判断することにより、より円滑に指示入力できる。
【０１５５】
以上説明したように、ＬＥＤ１０の位置情報を入力し、位置情報に基づいてＬＥＤ１０の動きに伴う加速度及び速度を検出し、検出した加速度及び速度に基づいてＬＥＤ１０の移動方向を示す速度ベクトルＳを算出し、該速度ベクトルＳ含む線分Ｍ１を算出し、該線分Ｍ１と表示画面に対応して設けられた仮想平面Ｖとの交点Ｃ１を算出してディスプレイ４２の画面の交点Ｃ１に対応する位置にカーソルを表示するようにしたため、機械的操作を行うことなく、自然な動作でポインティングすることができる。
【０１５６】
また、加速度が所定値を越えた後にＬＥＤ１０が静止した静止位置Ｐと、静止した位置から移動した移動位置Ｑとから、移動ベクトルＰＱを算出し、移動ベクトルＰＱにより示される方向に垂直な平面Ｎと、線分Ｍ１との交点Ｏを算出し、該交点Ｏと移動位置Ｑとを含む線分Ｍ２と仮想平面Ｖとの交点Ｃ２を算出して、カーソルの表示位置を移動するようにしたため、無理なく自然な動作でカーソルの位置を移動したり微調整したりすることができる。
【０１５７】
更に、ポインティング動作の最初のＬＥＤ１０の動きで、操作者が指示する方向（速度ベクトルＳ）を求めることができる。従って、ポインティング動作の最初の段階で所望の方向にＬＥＤ１０を移動させれば、次に続く動作が不安定な状態になっても、所望の位置にポインティングすることができるため、例えば、細やかな操作を安定して行うことが困難な人にとっても使い勝手に優れる。
【０１５８】
また、絶対座標値を用いずにＬＥＤ１０の移動方向によりポインティングの処理を行うため、遠隔操作が可能となる。
【０１５９】
また、加速度センサを用いずに、１つの発光手段（ＬＥＤ１０）からの光を検出することにより３次元位置を測定して操作者の指示する方向や位置を求めることができるため、システムを容易かつ安価に構築することが可能である。
【０１６０】
なお、実験によると、手等に装着したＬＥＤの動きを検出するための閾値として、加速度の閾値は3ｘ10-7 m/sec2程度であり、速度の閾値は6ｘ10-6 m/sec程度が好適であることが分かっている。この値は、市販の加速度センサにより検出される加速度より数桁オーダーも小さいため、加速度を検出するための装置として加速度センサを用いることは好適ではない。従って、本発明のように、加速度センサを用いずに、発光手段が発光した光を検出して３次元位置を計測する計測装置を用いて加速度及び速度を検出することにより、精度高くＬＥＤの動きを検出でき、簡単な構造と簡単な計算でかつ安価にシステムを構築することができる。
【０１６１】
なお、本実施の形態では、移動位置Ｑを所定時間毎に検出する例について説明したが、
静止位置Ｐが検出された後に静止した静止位置を移動位置Ｑとしてもよい。
【０１６２】
また、所定時間交点Ｏを固定し、固定した交点Ｏと移動位置Ｑとを含む線分Ｍ２から交点Ｃ２を逐次更新していくようにしてもよい。これにより、交点Ｏを常に算出し直す場合に比して計算量を軽減させることができる。なお、この場合には、時間的なずれと共に誤差が生じてくる場合があるので、一定間隔で交点Ｏを再計算することも好適である。また、線分Ｍ１と線分Ｍ２とがなす角度が所定値を越えたときに交点Ｏを再計算するようにしてもよい。また、交点Ｏを再計算せずに、一旦カーソルの表示を消して、プッシュの動作からやり直すことができるようにしてもよい。
【０１６３】
更にまた、前回の線分Ｍ２と今回の線分Ｍ２とがなす角度が所定値を越えたときに、ポインティング動作が緩慢になったと判断して、一旦カーソルの表示を消すようにしてもよい。
【０１６４】
なお、線分Ｍ１と線分Ｍ２（平面Ｎ）とが平行になってしまった場合には、交点Ｏを求めることができない。このような場合を想定し、例えば、交点Ｏを算出するステップの前に、予め線分Ｍ１と平面Ｎとが平行であるか否かを判断するステップを設け、平行であると判断した場合には、カーソルを移動させない、或いはカーソルがディスプレイ４２の画面から消えるように制御して、操作者に再度ポインティングのための動作を行わせるようにしてもよい。
【０１６５】
また、上述したように、速度ベクトルＳに垂直な平面をｘ−ｙ平面とし、かつ速度ベクトルＳをｚ軸とする座標系におけるＬＥＤ１０の動きが、予め定められた動きか否かを加速度及び速度に基づいて判断し、判断した動きに対応付けられた処理の実行を指示するようにしたため、ディスプレイの画面に対して垂直な方向でなくても、任意の方向にＬＥＤを動かすことで予め定められた動きを形成することができ、操作者にとって自然な動きでスムーズに指示入力することができる。
【０１６６】
なお、上述した実施の形態では、２回めのプッシュを、１回めのプッシュと同様の動作とする例について説明したが、例えば、２回目のプッシュについては上述したクリックの動作と同じように、任意の方向に１往復する動作としてもよい。これにより、操作者にとってより自然な動きで指示入力できる。
【０１６７】
また、上述した実施の形態では、ＬＥＤ１０の移動方向や動きのみにより指示入力する例について説明したが、例えば、指示入力用のスイッチやボタン等をＬＥＤ１０とは別に備えておき、ＬＥＤ１０の移動方向や動きによる指示入力とボタン押下等の機械的操作による指示入力とを必要に応じて使い分けることも可能である。
【０１６８】
また、ＬＥＤ１０に電池を接続し、電池をＬＥＤ１０と同じ手に装着するようにしてもよい。これにより、ＬＥＤ１０への電源供給のためのコードが不要となりワイヤレスで操作できる。
【０１６９】
また、上述した実施の形態では、ＬＥＤ１０を操作者の手や指に装着する例について説明したが、例えば、図１５に示されるように、ＬＥＤ１０をペン型のツール１２に設けてもよい。ペン型のツール１２には電池等の電源供給手段を設けるようにすることもできる。また、図１６に示されるように、ＬＥＤ１０を携帯電話１６に設けてもよい。この場合には、携帯電話１６の電源をＬＥＤ１０の電源と共有することができる。
【０１７０】
［第２の実施の形態］
第１の実施の形態では、ＬＥＤ１０が移動すると、算出された最新の交点Ｃ２のみに対応する位置にカーソルが表示される例について説明したが、本実施の形態では、最新の交点Ｃ２だけでなく、過去算出された交点についても、対応する位置にカーソルを表示すると共に、時間の経過に従ってそれら複数のカーソルの表示状態を変更する例について説明する。
【０１７１】
なお、本実施の形態におけるシステム構成及びパソコン３０の構成は、第１の実施の形態と同様であるため説明を省略する。
【０１７２】
図１７は、本実施の形態におけるディスプレイ４２に表示されたカーソルの表示状態を示す図である。図示されるように、ディスプレイ４２には、最新のカーソルから数ステップ前までの複数のカーソル（ここでは、４ステップ前まで、計５つのカーソル）が表示されている。カーソル６０ａ、６０ｂ、６０ｃ、６０ｄ、６０ｅの順に、表示されてから経過した時間が短い。カーソルの表示色は、表示されてから経過した時間が短い順に濃くなっている。
【０１７３】
図１８は、本実施の形態に係る表示制御ルーチンの流れを示すフローチャートである。本表示制御ルーチンは、前述の指示入力処理プログラムに含まれている。
【０１７４】
ステップ５００で、所定時間が経過したか否かを判断する。所定時間経過したと判断したときには、ステップ５０２で、カーソルの表示状態を変更する。
【０１７５】
具体的には、カーソル６０ａ、６０ｂ、６０ｃ、６０ｄ、６０ｅのそれぞれの表示色が同じ程度だけ薄くなるように表示制御する。
【０１７６】
なお、図示は省略するが、新たに移動位置Ｑが検出されて仮想平面Ｖとの新たな交点Ｃ２が検出された場合には、表示されてからの時間が最も長いカーソル６０ｅが消去され、ディスプレイ４２の画面の、新たな交点Ｃ２に対応する位置に最新のカーソルが表示されるように制御される。また、カーソル６０ａ、６０ｂ、６０ｃ、６０ｄの表示状態がそれぞれ変更される。すなわち、新たに表示されたカーソルの表示色が最も濃くなり、カーソル６０ｄの表示色が最も薄くなるように表示制御される。
【０１７７】
このように、最新の交点Ｃ２だけでなく、過去算出された交点についても対応する位置にカーソルを表示すると共に、時間の経過に従ってそれら複数のカーソル表示状態を変更するようにしたため、カーソルの表示位置を見失うことなく、容易に指示入力位置を確認することができる。
［第３の実施の形態］
第１及び第２の実施の形態で説明した指示入力システムをゲーム等の娯楽システムや複写機操作の補助システムに適用した例について説明する。本実施の形態においては、本発明の指示入力装置としての機能を有するパソコン３０については、図示が省略されている。
【０１７８】
図１９は、指示入力システムをモグラたたきゲームに適用した場合を示した図である。図示される画面は、パソコン３０のディスプレイ４２の画面とする。ディスプレイ４２の画面に動物の顔がランダムに現れる。利用者はＬＥＤ１０が設けられたペン型のツール１２（以下、ＬＥＤペン１２と呼称する）を使い、モグラたたきのルールに従って、現れた顔をポインティングするか或いはクリックする。現れた顔をポインティングしたとき或いはクリックしたときには、それに従って点数が加算されるようにする。
【０１７９】
図２０は、指示入力システムをダーツゲームに適用した場合を示した図である。この場合には、画面上に通常ダーツで使われる模様（複数の同心円等）が表示される。利用者がＬＥＤペン１２を投げるふりをすると、パソコン３０のＣＰＵ３４はＬＥＤ１０の進行方向を計算してＬＥＤ１０が指示する位置を算出し（すなわち、第１の実施の形態の交点Ｃ１を算出し）、画面に表示されている模様に当たったか否かを判断し、当たった場所に応じて点数を加算する。
【０１８０】
図２１は、指示入力システムをインベーダーゲームに適用した場合を示した図である。画面に爆弾等の落下物が表示される。落下物は画面の上方から下方に向かって落下する。利用者は落下物をＬＥＤペン１２によりポインティングまたはクリックする。落下物をポインティング或いはクリックできた場合には、落下物が爆発し、点数が加算される。落下物の種類に応じて点数が加算されるようにしてもよい。落下物が地表（画面の底辺）まで辿りついた場合には、落下物の種類に応じて点数を減算するようにしてもよい。
【０１８１】
図２２（Ａ）は、指示入力システムをハンマーゲームに適用した場合を示した図である。画面には、ＶＲＭＬ（Virtual Reality Modeling Language）等を用いて３次元表現で表示する。画面の中心部にはハンマー６２を表示し、画面上ではハンマー６２の柄の最下部が基点となるように固定される。利用者は、ＬＥＤペン１２のドラッグの動きにより、ハンマー６２を基点を中心に動かすことが可能である。画面に表現されている３次元空間には彗星のような複数の物体が自由に、かつ各々異なった速さで動いている。利用者は、ＬＥＤペン１２のドラッグの動きにより、物体をたたくようにハンマー６２を動かす。ハンマー６２が物体に当たったときには点数が加算される。基点はＬＥＤペン１２のドラッグ＆ドロップの動きにより３次元空間上で移動させることも可能である。また、図２２（Ｂ）に示されるように、ハンマー６２の代わりに昆虫網６４を表示し、昆虫網６４により物体を捉えるようなゲームにしてもよい。なお、ハンマー６２も昆虫網６４も３次元の奥行き表現を誇張してやると好適である。
【０１８２】
図２３は、図２２（Ａ）及び図２２（Ｂ）に示したゲームの仕組みを大掛りにしたものである。図示されるように、ディスプレイ４２の代わりに大型スクリーン４２ａを用いて３次元空間を表現し、実物の昆虫網６８の柄の最上部及び最下部の２カ所にＬＥＤ１０を設ける。大型スクリーン４２ａには、複数の仮想昆虫（トンボ等）と、実物の昆虫網６８に対応した仮想昆虫網７２が表示される。また、大型スクリーン４２ａ手前には、３Ｄ計測装置２０の受光部７０を４カ所に配設した３次元認識領域を設ける。３Ｄ計測装置２０は、２つのＬＥＤ１０の３次元位置を計測し、２つの位置情報をパソコン３０に出力することにより、昆虫網６８の位置及び動きをパソコン３０側で認識することができる。
【０１８３】
利用者は、該３次元認識領域内で、ＬＥＤ１０を２カ所に設けた昆虫網６８を動かすことにより、その動きがパソコン３０側で認識され、それにより、大型スクリーン４２ａに表示された仮想昆虫網７２を動かすことができる。利用者は、昆虫網６８を動かして仮想昆虫網７２を動かし、仮想空間内を自由な方向で、かつ予め設定されたスピードで動いている仮想昆虫を捕らえる。捕らえた仮想昆虫の種類に応じて異なった得点が加算される。
【０１８４】
ここでは、昆虫網６８の柄の最下部のドラッグの動きによって、仮想昆虫網７２の柄の最下部（基点）を動かすものとする。また、昆虫網６８の柄の最上部の動きを認識することで、３次元空間の基点に対する位置を第１の実施の形態と同様に計算することができる。なお、柄の長さは決まっているので、柄の基点に対して定数を加算するだけでよい。
【０１８５】
同様に昆虫網６８のネット部分の大きさも決まっているので、ネット部分の位置も簡単に求められる。よって、ネットの動き、或いは軌跡をリアルタイムで計算することができ、仮想昆虫が仮想昆虫網７２のネットに入ったか否かを判断することができる。
【０１８６】
このゲームは、ゲームセンタや、大型投影機や大型スクリーンがある家庭内等で利用できる。なお、モーションキャプチャー装置を用いて同様のゲームを提供することは可能ではあるが、費用がかかる。一方、本指示入力システムを用いれば安価に実現可能であり、かつ、２つの光源を設けるだけでよいため、電源（電池）の消費が少なくてすむ。また、モーションキャプチャーの場合には、通常、電源はコードにより有線で供給されており、利用者の動作がある程度制限されるが、本指示入力システムでは大きな電力は消費されないため電池等で電源を供給するだけでよく、動作の制限は少なくてすむ。
【０１８７】
また、ＶＲ（バーチャルリアリティー）を実現する際に通常必要とされるＨＭＤ（ヘッドマウントディスプレー）やデータグローブが、本指示入力システムでは不要となるため、利用者の使用快感度が向上し、コストの面においても有利である。
【０１８８】
図２４は、指示入力システムを落下物捕獲ゲームに適用した場合を示した図である。投影機７４により大型スクリーン４２ａに落下物を投影する。落下物はランダムに落下させる。大型スクリーン４２ａ上部には３Ｄ計測装置２０の受光部７０が設けられ、利用者の手や指等に装着されたＬＥＤ１０等の光源の位置が測定される。
【０１８９】
利用者は、大型スクリーン４２ａに表示された落下物に対して、たたくような動作を行う。３Ｄ計測装置２０は、ＬＥＤ１０の３次元位置を測定し、３次元位置を示す位置情報により、ＬＥＤ１０の動きに伴う加速度、速度、方向などが検出され、ＬＥＤ１０の移動方向や動きが検出される。更に、落下物の位置と予め設定されている許容量とから、落下物がたたかれたか否かを判断する。たたかれたと判断した場合には、爆発の画像を表示して、たたかれた落下物の表示を消す。これらの処理はパソコン３０により行われる。
【０１９０】
落下物の大きさや種類によって得点は異なり、また落下物が地表（大型スクリーン４２ａの底辺）まで落下した場合には、落下物の種類によって得点が差し引かれるようにしてもよい。なお、この差し引かれる得点は加算される得点の負数とは限らない。
【０１９１】
また、ゲームの進行とともに、残り時間を大型スクリーン４２ａに表示したり、音楽を流したりして、ゲームの興奮度を高めることも可能である。本ゲームは、図２３で示したハンマーゲームと異なり、ＶＲＭＬソフトは必要ないため、より安価に実現できる。
【０１９２】
図２５は、指示入力システムを複写機操作の補助に用いる場合を示した図である。現在普及している複写機の中には、操作画面（タッチパネルディスプレイ）８２が、図示されるように複写機８０の上後端部に設けられているものがある。このように、操作画面８２が比較的離れた位置にあると、子供や背が比較的低い人、或いは体の不自由な人にとっては、操作画面８２に触れること自体が困難となり、指示入力しづらい。
【０１９３】
従って、複写機８０の側面や、操作画面８２の側面に３Ｄ計測装置２０の受光部を配備し、ＬＥＤ１０を利用者の指に装着したり、或るいはＬＥＤペン１２等のツールを用いることにより、比較的離れた位置に設けられた操作画面８２に対して容易に指示入力することができる。
【０１９４】
このように、指示入力システムを複写機等に適用すれば、タッチパネルディスプレイの操作を画面に触れずに比較的離れたところから行うことができる。
【０１９５】
また、複写機だけでなく、金融機関のＡＴＭ等のタッチパネルディスプレイの操作にも適用することができる。スイッチのＯＮ／ＯＦＦ操作等に適用することができる。
【図面の簡単な説明】
【０１９６】
【図１】本発明の第１の実施の形態に係る指示入力装置としての機能を備えたパソコンを含む指示入力システムの構成を示す図である。
【図２】パソコンの具体的な構成を示した図である。
【図３】パソコン本体の構成を機能的に示した図である。
【図４】指示入力処理のメインルーチンを示したフローチャートである。
【図５】指示入力処理のメインルーチンを示したフローチャートである。
【図６】第１ポインティング処理ルーチンを示したフローチャートである。
【図７】第２ポインティング処理ルーチンを示したフローチャートである。
【図８】第１ポインティング処理及び第２ポインティング処理における処理を幾何学的に説明した説明図である。
【図９】ローカル座標系の一例を示した図である。
【図１０】ローカル座標系における指示動作の具体例を示した図である。
【図１１】図１０のダブルクリックの動き（Ｂ）のローカルｚ軸上の動きを時間の経過に従って示した図である。
【図１２】コマンド処理ルーチンを示したフローチャートである。
【図１３】コマンド処理ルーチンを示したフローチャートである。
【図１４】コマンド処理ルーチンを示したフローチャートである。
【図１５】ＬＥＤ１０が設けられたペン型のツールを示した図である。
【図１６】ＬＥＤ１０が設けられた携帯電話を示した図である。
【図１７】第２の実施の形態におけるディスプレイに表示されたカーソルの表示状態を示す図である。
【図１８】表示制御ルーチンを示したフローチャートである。
【図１９】指示入力システムをモグラたたきゲームに適用した場合を示した図である。
【図２０】指示入力システムをダーツゲームに適用した場合を示した図である。
【図２１】指示入力システムをインベーダーゲームに適用した場合を示した図である。
【図２２】図２２（Ａ）は、指示入力システムをハンマーゲームに適用した場合を示した図であり、図２２（Ｂ）は、図２２（Ａ）のハンマーの代わりに表示する昆虫網を示した図である。
【図２３】図２２（Ａ）及び図２２（Ｂ）に示したゲームの仕組みを大掛りにしたゲームを示した図である。
【図２４】指示入力システムを落下物捕獲ゲームに適用した場合を示した図である。
【図２５】指示入力システムを複写機操作の補助に用いる場合を示した図である。
【符号の説明】
【０１９７】
１０  ＬＥＤ
１６  携帯電話
２０  ３Ｄ計測装置
３０  パソコン
３２  パソコン本体
３４  ＣＰＵ
３６  ＲＯＭ
３８  ＲＡＭ
４０  Ｉ／Ｏ
４２  ディスプレイ
４６  ＨＤＤ
５０  コマンド生成部
【図１】
2005070996.tif 000003
【図２】
2005070996.tif 000004
【図３】
2005070996.tif 000005
【図４】
2005070996.tif 000006
【図５】
2005070996.tif 000007
【図６】
2005070996.tif 000008
【図７】
2005070996.tif 000009
【図８】
2005070996.tif 000010
【図９】
2005070996.tif 000011
【図１０】
2005070996.tif 000012
【図１１】
2005070996.tif 000013
【図１２】
2005070996.tif 000014
【図１３】
2005070996.tif 000015
【図１４】
2005070996.tif 000016
【図１５】
2005070996.tif 000017
【図１６】
2005070996.tif 000018
【図１７】
2005070996.tif 000019
【図１８】
2005070996.tif 000020
【図１９】
2005070996.tif 000021
【図２０】
2005070996.tif 000022
【図２１】
2005070996.tif 000023
【図２２】
2005070996.tif 000024
【図２３】
2005070996.tif 000025
【図２４】
2005070996.tif 000026
【図２５】
2005070996.tif 000027