図1には、携帯端末10のハードウエア構成が示される。図1を参照して、この発明の一実施例である携帯端末10はCPU24を含む。CPU24には、キー入力装置26、タッチパネル32、メインメモリ34、フラッシュメモリ36、撮像装置38およびLED発光器40が接続され、さらに、無線通信回路14を介してアンテナ12が、A/Dコンバータ16を介してマイク18が、D/Aコンバータ20を介してスピーカ22が、そしてドライバ28を介してディスプレイ30が、それぞれ接続される。
アンテナ12は、図示しない基地局からの無線信号を捕捉(受信)し、また、無線通信回路14からの無線信号を放出(送信)する。無線通信回路14は、アンテナ12で受信された無線信号を復調および復号化し、また、CPU24からの信号を符号化および変調する。マイク18は、音波をアナログの音声信号に変換し、A/Dコンバータ16は、マイク18からの音声信号をディジタルの音声データに変換する。D/Aコンバータ20は、CPU24からの音声データをアナログの音声信号に変換し、スピーカ22は、D/Aコンバータ20からの音声信号を音波に変換する。
キー入力装置26は、ユーザによって操作される各種のキー,ボタン,トラックボール(図示せず)などで構成され、操作に応じた信号(コマンド)をCPU24に入力する。ドライバ28は、CPU24からの信号に応じた画像をディスプレイ30に表示する。タ
ッチパネル32は、ディスプレイ30の表示面に設けられ、タッチ点の位置を示す信号(座標)をCPU24に入力する。
メインメモリ34は、たとえばSDRAMなどで構成され、CPU24に各種の処理を実行させるためのプログラム,データなど(図2参照)を記憶する共に、CPU24に必要な作業領域を提供する。フラッシュメモリ36は、たとえばNAND型のフラッシュメモリで構成され、プログラムなどの保存領域さらには撮像装置38による画像データの記録領域として利用される。
撮像装置38は、図示しないレンズ,イメージセンサ(たとえばCCD,CMOSなどの撮像素子),カメラ処理回路などで構成され、レンズを経てイメージセンサ上に結像する光学像を光電変換して、これに対応する画像データを出力する。
LED発光器40は、図示しないLED(Light Emitting Diode)およびドライバで構成され、CPU24の制御下でドライバがLEDを駆動することにより、カメラ撮影用のフラッシュ光(ストロボ光)を発したり、所定のパターンで発光することによりユーザに対して各種の報知(たとえば着信報知など)を行ったりする。
CPU24は、メインメモリ34に記憶されたプログラム(52〜54)に従って、他のハードウエア(12〜22,26〜40)を利用しつつ、各種の処理を実行する。処理の実行に必要なタイミング信号は、RTC(Real Time Clock)24aから供給される。
以上のように構成された携帯端末10では、図示しないメニュー画面を通して、通話を行う通話モード、カメラ撮影を行う撮影モード、および電話帳などの情報(62)の3次元検索を行う3次元検索モードなどを選択することができる。なお、これ以外にも、たとえば、電子メールの送受信を行うメールモード、インターネットに接続してデータ通信を行うインターネットモードなども準備されているが、詳しい説明を省略する。
通話モードが選択されると、携帯端末10は、通話装置として機能する。詳しくは、キー入力装置26によって発呼操作が行われると、CPU24は、無線通信回路14を制御して発呼信号を出力する。なお、発信先の電話番号は、予め登録された電話帳情報(62:図3(A)参照)から選択することもできる。出力された発呼信号は、アンテナ12を介して出力され、図示しない移動通信網を経て相手の電話機に伝達される。電話機は、着信音,振動,発光などによる呼び出しを開始する。相手が着呼操作を行うと、CPU24は通話処理を開始する。一方、相手からの発呼信号がアンテナ12によって捕捉されると、無線通信回路14は着信をCPU24に通知し、CPU24は、着信音による呼び出しを開始する。キー入力装置26によって着呼操作が行われると、CPU24は通話処理を開始する。
通話処理は、たとえば、次のように行われる。相手から送られてきた受話音声信号は、アンテナ12によって捕捉され、無線通信回路14によって復調および復号化を施された後、D/Aコンバータ20を経てスピーカ22に与えられる。これにより、スピーカ22から受話音声が出力される。一方、マイク18によって取り込まれた送話音声信号は、A/Dコンバータ16を経て無線通信回路14に送られ、無線通信回路14によって符号化および変調を施された後、アンテナ12を通して相手に送信される。相手の電話機でも、送話音声信号の復調および復号化が行われ、送話音声が出力される。
撮影モードが選択されると、携帯端末10はカメラ装置として機能する。詳しくは、CPU24がスルー撮影開始命令を発し、撮像装置38はスルー撮影を開始する。撮像装置38では、図示しないレンズを経てイメージセンサに結像した光学像は、光電変換を施さ
れ、これによって、光学像を表す電荷が生成される。スルー撮影では、イメージセンサで生成された電荷の一部が、たとえば1/60秒毎に、低解像度の生画像信号として読み出される。読み出された生画像信号は、カメラ処理回路によってA/D変換,色分離,YUV変換などの一連の画像処理を施されることで、YUV形式の画像データに変換される。こうして、撮像装置38からは、スルー表示用の低解像度の画像データが、たとえば60fpsのフレームレートで出力される。出力された画像データは、現時点のスルー画像データとしてメインメモリ34に書き込まれ、ドライバ28は、メインメモリ34に記憶されたスルー画像データを繰り返し読み出し、これに基づくスルー画像をディスプレイ30に表示する。
ユーザは、ディスプレイ30に表示されたスルー画像を見ながら、撮像装置38の向きや対象までの距離を調節した後、キー入力装置26またはタッチパネル32によりシャッタ操作を行う。CPU24は、シャッタ操作に応答して静止画撮影命令を発する。応じて、イメージセンサで生成された電荷が高解像度の生画像信号として読み出され、読み出された生画像信号は、カメラ処理回路によって一連の画像処理を施されることでYUV形式の画像データに変換される。こうして、撮像装置38から記録用の高解像度の画像データが出力され、出力された画像データは、メインメモリ34に一時保持された後、静止画像データとしてフラッシュメモリ36に書き込まれる。
3次元検索モードが選択されると、携帯端末10は、情報たとえば電話帳情報62(図3参照)を3次元で表示して(図4参照)、タッチ操作に基づき検索を行う(図14〜図22参照)、検索装置として機能する。最初、この実施例の3次元検索の概要を説明する。
図3に示す電話帳情報62には、登録番号(No.),名前,インデックス,電話番号,メールアドレスおよび住所が登録されており、携帯端末10は、検索項目(適宜“項目”と呼ぶ)としての名前(“青木”,“加藤”,…,“和田”)を“あ”行,“か”行,…,“わ”行を示すインデックス(“あ”,“か”,…“わ”)と関連付けて3次元で表示する。各項目をインデックスで分類して表示することで、検索の効率が高まる。以下では、こうして3次元表示される項目(名前)およびインデックスを“表示要素”と総称する。
詳しくは、CPU24は、まず、図12(A)に示されるような3次元空間(x,y,z)内に、表示の視点P0(x0,y0,z0)および回転の中心点C(a,b,c)を定義する。そして、電話帳情報(62)の各表示要素i(“青木”,“加藤”などの項目、および“あ”,“か”などのインデックス)に対し、オブジェクト画像Piを割り当てる(図12参照)と共に、オブジェクト画像Piの初期位置(xi,yi,zi)を決定する(図5参照)。
オブジェクト画像Piの初期位置は、たとえば、図23(A)に示すような円盤Ds上において、たとえば円盤Dsの中心点C(またはその近傍の点)を起点に螺旋状に延びる線(螺旋H1)に沿って決定される。これによって、各オブジェクトを円盤Ds上に偏りなく配置することができるので、情報量(項目数)が比較的少ない場合に適した配置が実現される。または、図23(B)に示すような球Spの内部において、たとえば球Spの中心点C(またはその近傍の点)を起点に螺旋状(巻糸状)に延びる線(螺旋H2)に沿って決定される。これによって、各オブジェクトを球体Sp上(表面)または内部に偏りなく配置することができるので、情報量(項目数)が比較的多い場合に適した配置が実現される。なお、線の向きは、図示とは逆でもよい(つまり中心点Cまたはその近傍の点を終点とする螺旋に沿って初期位置を決定してもよい)。また、線の形態は、螺旋以外の曲線やジグザグ線など任意の形態でよいが、円盤Dsの上または球Spの表面もしくは内部
を極力交わることなく均等に巡る線であることが好ましい。
一方、電話帳情報62に基づいて、インデックス間のリンク(R1)および項目間のリンク(R2)を示すリンク情報(64:図4参照)を作成する。CPU24は、こうして作成した3次元初期位置情報66およびリンク情報64に基づいてドライバ28を駆動して、電話帳情報62の各表示要素iに対応するオブジェクト画像Piをディスプレイ30に3次元で表示する。
なお、以下では、オブジェクト画像P1,P2,…の集合を3次元オブジェクト画像82と総称する(図13参照)。図13の例では、3次元オブジェクト画像82と共に、インデックスのリンクL1を示す一点鎖線およびインデックス毎の項目のリンクL2を示す点線を表示しているが、これらは省略してよい。
表示にあたって、各オブジェクト画像Piには、視点P0からの距離diに応じた大きさDiが与えられる。したがって、手前のオブジェクト画像(たとえば“青木”や“あ”)は大きく表示されて見易いが、奥手のオブジェクト画像(たとえば“浜崎”や“は”)は小さく表示されて見難くなる。また、オブジェクト画像間の位置関係によっては、他のオブジェクト画像の影に入って見えなくなるオブジェクト画像も出てくる。
このような場合、各オブジェクト画像Piは、図12(A)に示すように、中心点Cの周りを回転される。具体的には、CPU24は、各オブジェクト画像Piの位置(xi,yi,zi)に対して、ユーザのタッチ操作に応じた回転演算を施す。回転演算は、横方向(経線方向:図12(C)参照)の回転演算および縦方向(緯線方向:図12(B)参照)の回転演算を含んでおり、3次元空間内でオブジェクト画像Piを任意の方向に回転させることができる。なお、他の実施例では、回転演算は、縦方向(緯線方向)または横方向(経線方向)のいずれか一方の回転演算のみを含んでいてもよい。
以下では、こうして各オブジェクト画像Piを、中心点Cに関して縦横方向に回転させる処理を、単に“回転”と呼ぶ。各オブジェクト画像Piの間の3次元位置関係は、回転に対して不変である(言い換えると、3次元オブジェクト画像82の形状および大きさは、回転しても変わらない)。
一方、ディスプレイ30上でのオブジェクト画像P1,P2,…の2次元表示位置(X,Y)は、回転に応じて変化する(図15,図16,図18,図19参照)。たとえば、図16に示すように、手前のオブジェクト画像(たとえばインデックス“あ”とその項目“青木”,“浅野”および“井上”)と、奥手のオブジェクト画像(たとえばインデックス“は”とその項目“浜崎”および“平松”)との表示位置が回転によって入れ替わる結果、どのオブジェクト画像Piも容易に見ることができるようになる。
なお、中心点Cまたはその近傍に位置するオブジェクト画像Pi(図16の例ではインデックス“わ”とその項目“和田”)については、回転しても視点P0からの距離diが変化しない(またはほとんど変化しない)ので、表示サイズが特に大きくなることはないものの、手前のオブジェクト画像の影に隠れないようにすることができる点で、見易くなる。
このような3次元オブジェクト画像82の回転を伴う表示は、CPU24が図6に示すような表示制御情報76に基づいてドライバ28を駆動することにより行われる。詳細は後述するが、図6の表示制御情報74には、各表示要素i(オブジェクト画像Pi)について、3次元現在位置(xi,yi,zi)、2次元表示位置(Xi,Yi)、視点からの距離di、および表示サイズDiを示す情報と、カーソルの位置(どの表示要素に当た
っているか)を示す情報とが含まれる。
オブジェクト画像Piを回転させるためのタッチ操作には、ドラッグ(もしくはスライド),タップおよびフリックの3種類がある。ドラッグ(スライド)とは、タッチパネル32へのタッチ位置を任意の方向に任意の距離だけ変化させる操作をいい、CPU24は、タッチパネル32によって検出されたドラッグの方向および距離に応じた回転量(図12(A)参照)、つまり縦方向の回転量(緯線方向の回転角θp:図12(B)参照)および横方向の回転量(経線方向の回転角θm:図12(C)参照)を決定して、決定結果に基づきオブジェクト画像Piを回転させる(図15参照)。
タップとは、タッチパネル32をポンとたたく(短い時間タッチする)操作をいい、CPU24は、タッチパネル32によって検出されたタップ位置にあるオブジェクト画像Piが手前に来るように縦方向および横方向の回転量を決定して、決定結果に基づきオブジェクト画像Piを回転させる(図16,図19参照)。
フリックとは、タッチパネル32へのタッチ位置を素早く変化させる(引っ掻く)操作をいい、CPU24は、タッチパネル32によって検出されたフリックの位置にあるインデックスを起点に、フリックの方向および強さ(速度または加速度)に応じたインデックスの送り方向および送り数をリンク情報64(図4参照)に基づいて求め、当該送り先のインデックスが手前に来るような縦方向および横方向の回転量を決定して、決定結果に基づきオブジェクト画像Piを回転させる(図18参照)。
また、他のタッチ操作として、同時にタッチした2点間の距離を変化させるピンチアウト/ピンチインも用いられる。CPU24は、タッチパネル32によって検出された2点間距離の増加量に応じた拡大率を決定し、決定結果に基づきオブジェクト画像Piを拡大させる(図14参照)。同様に、検出された2点間距離の減少量に応じた縮小率を決定し、決定結果に基づきオブジェクト画像Piを縮小させる(図示は省略)。
ところで、タップは、オブジェクト画像Piを回転させる(図16,図19参照)場合だけでなく、所望のインデックスに属する項目の概要を一覧表示したり(図17参照)、所望の項目の詳細情報を表示したり(図21参照)する場合にも行われる。所望のインデックスや項目を指示するためのカーソルは、タップまたはフリックによって移動する。
詳しくは、上述したタップによる回転(図16,図19)は、タップしたオブジェクト画像Piにカーソルが当たっていない場合の処理であり、タップしたオブジェクト画像Piにカーソルが当たっている場合の処理は、次のようになる。たとえば、図17(A)に示すように、インデックス“あ”にカーソルが当たっている状態で、この“あ”をタップした場合には、図17(B)に示すように、“あ”に該当する各項目の概要(ここでは“青木”,“浅野”,“井上”と各々の電話暗号)が一覧表示される。また、図21(A)に示すように、項目“浅野”にカーソルが当たっている状態で、この“浅野”をタップした場合には、“浅野”の選択が確定して、図21(B)に示すように、“浅野”の詳細情報(ここでは名前,電話番号,メールアドレスおよび住所)が一覧表示される。
なお、“浅野”の選択に伴って、“浅野”が属するインデックス“あ”の項目(青木,浅野,井上)間でプライオリティが変化した場合には、図22に示すように、項目の表示順序が変化する(青木と浅野が入れ替わる)結果となる。すなわち、インデックス毎に、各項目の選択履歴(回数や時刻)に基づいて項目間のプライオリティが決定され(図7参照)、項目の表示順序はプライオリティに基づいて動的に変化する。
また、図20(A)に示すように、項目“青木”にカーソルが当たっている状態で、こ
の“青木”を右向きにフリックした場合、カーソルは、そのフリックの方向および強度(速度または加速度)に応じて、たとえば図20(B)に示すように“浅野”の位置へと移動する。
なお、図20(A)に示したフリックの強度がより強ければ、カーソルは“浅野”を通過して“井上”まで移動する。一方、図20(A)に示したフリックの向きが左向きであれば、カーソルは移動しない。これは、図4に示したリンク情報64において、最初の項目(項目1)である“青木”と、最後の項目(項目3)である“井上”とが互いにリンクしていないことによる。他の実施例では、両端の項目を互いにリンクさせることで、“青木”上のカーソルは、“浅野”の方向(順方向)だけでなく、“井上”の方向(逆方向)にも移動可能となる。
以上の概要説明からわかるように、この実施例の3次元検索の主要な特徴の第1は、検索対象である電話帳情報62からリンク情報64および3次元初期位置情報66(これらを“3次元オブジェクト情報”69と総称する)を作成して3次元オブジェクト画像82を表示し、そしてこの3次元オブジェクト画像82をタッチパネル32の操作に応じて回転させることで、効率的な検索を行えるようにした点にある。そこで、以下、この点を中心に詳しく説明する。
上述のような3次元検索制御処理は、たとえば、メインメモリ34に記憶された図2〜図7に示す各種のプログラムおよびデータ類(パラメータ,変数など)に基づいて、CPU24が図8〜図11に示すフローに従う処理を実行することにより実現される。
詳しくは、まず図2を参照して、メインメモリ34はプログラム領域50,パラメータ領域60,変数領域70および表示領域80を含み、プログラム領域50には3次元検索制御プログラム52および入出力制御プログラム54などが記憶される。パラメータ領域60には電話帳情報62,リンク情報64および3次元初期位置情報66などが、変数領域70にはタッチ操作情報72,表示制御情報74および履歴&プライオリティ情報76などが、そして表示領域80には3次元オブジェクト画像82(およびその上に描画されるカーソル画像)などが記憶される。
なお、図示は省略するが、プログラム領域50には、先述した通話モードを実現するための通話制御プログラムや、撮影モードを実現するための撮影制御プログラムなども記憶される。
3次元検索制御プログラム52は、CPU24を介して各種ハードウェア(12〜22,26〜40)を制御して、図8〜図11のフローに従う3次元検索制御処理を実行する、メインのソフトウェアプログラムである。入出力制御プログラム54は、3次元検索制御プログラム52によって利用されるサブのソフトウェアプログラムであり、タッチパネル32からの信号に基づいて各種のタッチ操作(たとえばタップ,ドラッグ,フリック,ピンチインおよびピンチアウトなど)を検出したり、ドライバ28を制御して3次元オブジェクト画像82のディスプレイ30への表示を行ったりする。
電話帳情報62は、3次元検索制御プログラム52による検3次元索の対象となる情報であり、たとえば図3に示すように構成される。この電話帳情報62には、ユーザが電話帳に登録した一人一人について、個人情報ある名前,電話番号,メールアドレスおよび住所と、登録番号(No.)およびインデックスとが記録されている。登録番号は、たとえば1,2,3,…のような登録順序を示す通し番号であり、一人一人の識別子として用いられる。インデックスは、50音表において名前の頭文字が属する行(“あ”行,“か”行,…,“わ”行)を示す情報であり、名前を分類する標識として用いられる。
リンク情報64は、電話帳情報62に登録された検索項目(ここでは名前)の間のリンク(L2)をインデックス毎に示すと共に、インデックス間のリンク(L1)をも示す情報であり、たとえば図4に示されるような構成を有する。このリンク情報64では、インデックスが上から下(順方向)に“あ”,“か”,…,“わ”のように配列され、そしてインデックス毎に、項目1,2,3,…が左から右(順方向)に配列されている。つまり、リンク情報64における上から下へのインデックスの配列は、図13に一点鎖線の矢印として示された「インデックスのリンク」L1と対応し、各インデックスにおける左から右への項目の配列は、図13に点線の矢印として示された「インデックス毎の項目のリンク」L2と対応している。
3次元初期位置情報66は、各表示要素の初期位置を示す情報であり、たとえば図5に示されるような構成を有する。この3次元初期位置情報66には、表示要素としてのインデックスおよび名前(“あ”,…,“わ”および“青木”,…,“和田”)と、各表示要素の3次元初期位置とが記録されている。任意の表示要素i(オブジェクト画像Pi)の3次元初期位置は、たとえば(xi,yi,zi)のように表現される。
タッチ条件情報68は、タッチパネル32で検出されたタッチ操作の種類(ピンチイン,ピンチアウト,ドラッグ,タップおよびフリック)を判別するための条件を示す情報であり、具体的にはピンチイン条件,ピンチアウト条件,ドラッグ条件,タップ条件およびフリック条件に関する情報を含む。
タッチ操作情報72は、タッチパネル32からの信号に基づいて検出されたタッチ点の数(1または2のいずれか),位置,方向,速度,加速度および移動距離などを示す情報であり、入出力制御プログラム54によって周期的に(たとえば1/30秒毎に)更新される。タッチパネル32で検出されたタッチ操作の種類は、このタッチ操作情報72と前述のタッチ判別情報69との比較に基づいて、3次元検索制御プログラム52により判別される。
表示制御情報74は、ドライバ28を制御して3次元オブジェクト画像をディスプレイ30に表示させるための情報であり、たとえば図6に示されるような構成を有する。この表示制御情報74には、各オブジェクト画像Piについて、3次元現在位置(xi,yi,zi),2次元表示位置(Xi,Yi),視点からの距離(di)および表示サイズ(Di)を示す情報を含む。表示制御情報74は、3次元検索制御プログラム52によって周期的に(たとえば1/30秒毎に)更新される。
3次元現在位置(xi,yi,zi)は、各表示要素iの現在の3次元位置を示す情報であり、たとえば、3次元初期位置情報66に記録された位置を初期値として、タッチ操作に応じた回転演算を行うことにより決定される。2次元表示位置(Xi,Yi)は、ディスプレイ30の画面上での各表示要素iの位置を示す情報であり、たとえば、3次元現在位置(xi,yi,zi)を3次元空間内の適宜な平面(たとえば、視点P0を通り、かつ視点P0から回転中心Cに向かう直線Lに対して垂直な平面S:図12(A)参照)に向けて射影する演算により決定される。
視点からの距離diは、視点P0と各オブジェクト画像Piとの間の距離(図12(A)参照)を示す情報であり、たとえば、視点位置(z0,y0,z0)と3次元現在位置(xi,yi,zi)との間の距離として算出される。表示サイズDiは、ディスプレイ30の画面上での各オブジェクト画像Piのサイズであり、距離diが短いほど大きくなるように決定される。したがって、視点から近いオブジェクトは大きく、遠いオブジェクトは小さく表示されるので、3次元オブジェクト画像82の立体感が高まると共に、情報
を見易く表示することができる。
カーソル位置情報は、現時点でのカーソルの位置を示す情報であり、たとえば、いずれか1つの表示要素Piを指向するポインタで表現される。
履歴&プライオリティ情報76は、各項目(項目オブジェクト)の選択履歴と当該履歴に基づいて決定されるプライオリティ(優先順位)とを示す情報であり、たとえば図7に示すような構成を有する。なお、図7(A)に示されているのは12時30分現在の履歴&プライオリティ情報76であり、図7(B)に示されているのは12時40分現在の履歴&プライオリティ情報76である。
この履歴&プライオリティ情報76では、項目はインデックスにより分類され、プライオリティは、同じインデックスに属する項目間で、選択履歴(選択された回数および/または時刻)に基づいて決定される。たとえば、まず選択回数について比較して、選択回数が多い項目ほど高いプライオリティを与える。選択回数が同じ項目の間では、最新の選択時刻について比較を行い、選択されてから間もない項目ほど高いプライオリティを与える。なお、初期状態での各項目のプライオリティは、たとえば、50音順(あいうえお順)とする。したがって、複数のオブジェクトは、選択履歴(回数および/または時刻)に基づく順序で配置されるので、検索の効率が高まる。
図7(A)の例では、“あ”に属する“青木”,“浅野”および“井上”のうち、“青木”および“浅野”の選択回数が各2回なのに対して、“井上”の選択回数は1回なので、“井上”のプライオリティが最も低い“3”となる。“青木”および“浅野”の間で最新の選択時刻を比較すると、前者の選択時刻が12時20分に対し、後者の選択時刻は12時00分なので、“青木”のプライオリティが最も高い“1となり、“浅野”のプライオリティはその次に高い“2”となる。また、“か”に属する“加藤”および“岸部”の間では、前者の選択回数が2回であり、後者の1回よりも多いため、“加藤”のプライオリティが“1”、“岸部”のプライオリティは“2”となる。一方、“わ”に属する項目は“和田”だけなので、“和田”のプライオリティは“1”となる。
図7(B)の例では、“浅野”の選択履歴に“(3)12時40分”が追加された結果、“浅野”の選択回数は3回となって、“青木”の2回を上回ったため、“浅野”のプライオリティが“2”から“1”に上昇する一方、“青木”のプライオリティは“1”から“2”に降下している。このようなプライオリティの変化に応じて、図22(A)および図22(B)に示すように、ディスプレイ30の画面上で“青木”と“浅野”の表示位置が入れ替わる。
図8を参照して、CPU24は、最初、ステップS1で3次元オブジェクト情報69を構築する。この3次元オブジェクト情報構築処理は、たとえば図9のフローに従って実行される。ここで図9を参照して、まずステップS41で、検索対象ここでは図3に示された電話帳情報62から、図4に示されたリンク情報64を作成する。具体的には、まずインデックスとして、50音表の1列目に配置された文字列つまり“あ”,“か”,…,“わ”をこの順序で登録し、“あ”から“わ”への方向を順方向として定義する。これにより、“あ”から“わ”に至るインデックスのリンクL1が形成される。複数のインデックスをリンクL1に基づいて配置することで、インデックス単位の処理(たとえば3次元オブジェクト画像82を所定数インデックス分だけ回転させる処理)が容易に行える。
次に、各インデックスの項目1,2,3…に対して、該当する名前(青木,加藤,…和田)を割り当てていく。項目に付された数字1,2,3…はプライオリティを示しており、項目1から項目3への方向を順方向と定義する。こうして、インデックス毎の項目のリンクL2が形成される。各インデックスに属する複数の項目をリンクL2に基づいて配置
することで、項目単位の処理(たとえばカーソルを所定数項目分だけ移動させる処理)が容易に行える。各インデックスに付随する複数の項目をインデックス毎のプライオリティ(優先順位)に従って配置することで、検索の効率が高まる。
なお、インデックスは、名前を英字表記した場合の頭文字、つまりアルファベット(A,B,…,Z)でもよい。または、住所に含まれる都道府県名などをインデックスとして用いることもできる。
次に、ステップS43で、リンク情報64から表示要素(インデックスまたは項目)を1つ選出し、ステップS45で当該表示要素i(オブジェクト画像Pi)の3次元初期位置(xi,yi,zi)を決定する。そしてステップS47で、全ての表示要素の選択を終えたか否かを判別し、ここでNOであれば、ステップS43に戻って上記と同様の処理を繰り返す。最後の表示要素がステップS43で選択されて、S45でその表示要素の3次元初期位置が決定されると、ステップS47の判別結果がYESとなり、ステップS49に進む。この時点で、図5に示されるような3次元初期位置情報66が完成する。
こうして作成されたリンク情報64および3次元初期位置情報66は、次のステップS49で、メインメモリ34のパラメータ領域60に“3次元オブジェクト情報”69として記憶される。そしてステップS51で、3次元オブジェクト情報69から図6に示された表示制御情報74を作成する。なお、3次元オブジェクト情報69から表示制御情報74を作成する手順については、既に説明したので省略する。こうして作成された表示制御情報74は、メインメモリ34の変数領域70に記憶される。その後、上位のフロー(図8)に戻る。
再び図8を参照して、ステップS3では、表示制御情報74に基づいてドライバ28を制御して、たとえば図14(A)に示されるような3次元オブジェクト画像82をディスプレイ30に表示する。より具体的には、CPU24は、表示制御情報74に基づいて表示領域80に3次元オブジェクト画像82を描画する一方、ドライバ28に対して当該3次元オブジェクト画像82の表示を命令する。応じてドライバ28は、3次元オブジェクト画像82をディスプレイ30に表示する。
次に、ステップS5で、タッチパネル32へのタッチ操作が行われたか否かをタッチ操作情報72とタッチ条件情報68との比較に基づいて判別する。ここでNOであれば、つまりタッチ操作情報72がタッチ条件情報68に含まれるどの条件とも一致しなければ、所定の待機時間を経てステップS3に戻り、上記と同様の処理を繰り返す。したがって、タッチ操作が検出されない期間、ステップS3およびS5からなるループ処理が周期的に(たとえば1/30秒周期で)実行され、同じ3次元オブジェクト画像82の表示が継続される。
ステップS5でYESであれば、ステップS7に進んで、タッチ操作が1点タッチか否かをタッチ操作情報72に基づいて判別する。タッチ操作情報72に記録された「タッチ点の数」が1であれば、ステップS7でYESと判別し、ステップS17(後述)に進む。この実施例では、タッチ点の数、つまりタッチパネル32で同時に検出可能なタッチ点の個数は、1または2であるとする。ステップS7でNOであれば、タッチ点の数は2であるとみなして、ステップS9に進み、当該タッチ操作がピンチアウトであるか否かをタッチ操作情報72とタッチ条件情報68に含まれるピンチアウト条件との比較に基づいて判別する。
ステップS9でYESであれば、ステップS13に進み、2点間の距離の増加量に応じた拡大率で3次元オブジェクト画像82を拡大した後、ステップS3に戻る。ステップS
3では、表示領域80の3次元オブジェクト画像82が、こうして拡大された3次元オブジェクト画像82により上書きされ、これによりディスプレイ30の表示画像が更新される。したがって、ピンチアウトが検出されている期間、ステップS3〜S9およびS13からなるループ処理が周期的に実行される結果、3次元オブジェクト画像82の表示は、たとえば図14(A)の状態から14(B)の状態へと徐々に変化していく。
ステップS9でNOであれば、ステップS11に移り、当該タッチ操作がピンチインであるか否かをタッチ操作情報72とタッチ条件情報68に含まれるピンチイン条件との比較に基づいて判別する。ステップS11でYESであれば、ステップS15に進み、2点間の距離の減少量に応じた縮小率で3次元オブジェクト画像82を縮小した後、ステップS3に戻る。したがって、ピンチインが検出されている期間、ステップS3〜S11およびS15からなるループ処理が周期的に実行される結果、3次元オブジェクト画像82の表示は、たとえば図14(B)の状態から14(A)の状態へと徐々に変化していく。
1点タッチの場合に実行されるステップS17では、当該タッチ操作がドラッグ(もしくはスライド)であるか否かをタッチ操作情報72とタッチ条件情報68に含まれるドラッグ条件との比較に基づいて判別する。ステップS17でYESであれば、ステップS25〜S29を実行する。ステップS25では、X方向の移動距離に応じた横方向の回転量(経線方向の回転角θm:図12(C)参照)を、ステップS27では、Y方向の移動距離に応じた縦方向の回転量(緯線方向の回転角θp:図12(B)参照)をそれぞれ決定し、そしてステップS29で、これらの決定結果(θm,θp)に従って3次元オブジェクト画像82を回転させる。なお、回転に伴って項目の前後関係が入れ替わった場合には、プライオリティの高い項目が手前になるように項目位置を変更するのが好ましい。その後、ステップS3に戻る。
したがって、ドラッグが検出されている期間、ステップS3〜S7,S17,およびS25〜S29からなるループ処理が周期的に実行される結果、3次元オブジェクト画像82の表示は、たとえば図15(A)の状態から15(B)の状態へと徐々に変化していく。
ステップS17でNOであれば、ステップS19に移り、カーソルはインデックス上にあるか否かを判別する。ステップS19でYESであれば、ステップS21のインデックス制御モード(図10参照)に従ってタップまたはフリックに関連する処理を実行する。一方、ステップS19でNOであれば、カーソルは項目上にあるとみなされ、タップまたはフリックに関連する処理は、ステップS23の項目制御モード(図11参照)に従って実行される。その後、ステップS3に戻る。
インデックス制御モードでは、たとえば図10のフローに従う処理が実行される。図10を参照して、まずステップS61で当該タッチ操作がタップか否かをタッチ操作情報72とタッチ条件情報68に含まれるタップ条件との比較に基づいて判別し、ここでNOであれば、ステップS63で当該タッチ操作がフリックか否かをタッチ操作情報72とタッチ条件情報68に含まれるフリック条件との比較に基づいてさらに判別し、ここでもNOであれば、上位のフロー(図8)に戻る。つまり、当該操作は無効とみなされ、ディスプレイ30の表示画像は特に変化しない。
ステップS61でYESであれば、ステップS65に進み、タップ位置(タッチ点の位置)にインデックスがあるか否かを表示制御情報74(図6参照)およびタッチ操作情報72に基づいて判別する。そして、ステップS65でNOであれば、タップ位置に項目があるか否かをステップS67でさらに判別し、ステップS67でもNOであれば、上位のフロー(図8)に戻る。したがって、インデックスも項目もない場所をユーザがタップし
た場合には、当該操作は無効とみなされ、ディスプレイ30の表示画像は特に変化しない。
一方、ステップS67でYESであれば、ステップS77に進み、表示制御情報74を更新して、カーソルを当該項目上に移動させた後、上位のフロー(図8)に戻る。ステップS77でのカーソル移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画像に反映される。
ステップS65でYESであれば、ステップS69に進み、カーソルは当該インデックス上にあるか否かをさらに判別する。そして、ステップS69でYESであれば、ステップS71に進み、表示領域80への描画を実行して、当該インデックスの項目群を一覧表示した後、上位のフロー(図8)に戻る。ステップS71での一覧表示は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画像に反映される。
したがって、図17(A)に示されるように、カーソルの当たったインデックス“あ”をユーザがタップした場合には、図17(B)に示されるように、“あ”に属する項目群つまり“青木”,“浅野”および“井上”に関する一部の情報(ここでは名前と電話番号)が一覧表示される結果となる。
一方、ステップS69でNOであれば、ステップS73に移って、当該インデックスが画面の手前に来るように3次元オブジェクト画像82を回転させる。具体的には、当該インデックスが画面の手前に来るような縦横方向の回転量(θp,θm:図12(A),図12(B)参照)を決定し、表示制御情報74に記録された3次元現在位置(xi,yi,zi)に対して、決定結果に基づく回転演算を施す。そして、ステップS75でカーソルを当該インデックス上へと移動させた後、上位のフロー(図8)に戻る。ステップS73での回転およびステップS75でのカーソル移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画面に反映される。
したがって、図16(A)に示されるように、画面手前のインデックス“あ”にカーソルが当たった状態で、ユーザが画面奥手のインデックス“は”をタップした場合には、図16(B)に示されるように、3次元オブジェクト画像82が回転して、“は”とそれに付随する項目群“浜崎”および“平松”が、“あ”とそれに付随する“青木”,“浅野”および“井上”に代わって画面の手前に表示され、そしてカーソルも“あ”から“は”に移動する結果となる。
ステップS63でYESであれば、ステップS79に進み、リンク情報64(図4参照)およびタッチ操作情報72に基づいて、フリック方向(タッチ点の移動方向)に応じたインデックスの送り方向(カーソルをインデックスのリンクL1に沿って順方向に送るか逆方向に送るか)を決定する。次に、ステップS81で、フリック強度(タッチ点の移動速度ないし加速度)に応じたインデックスの送り数(カーソルをインデックスのリンクに沿って何個先まで送るか)を決定する。そしてステップS83で、送り先として決定されたインデックスが画面の手前に来るように3次元オブジェクト画像82を回転させる。具体的には、当該インデックスが画面の手前に来るような縦横方向の回転量(θp,θm:図12(A),図12(B)参照)を決定し、表示制御情報74に記録された3次元現在位置(xi,yi,zi)に対して、決定結果に基づく回転演算を施す。その後、上位のフロー(図8)に戻る。ステップS83での回転は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画面に反映される。
したがって、図18(A)に示されるように、画面手前のインデックス“あ”にカーソルが当たった状態で、ユーザが画面左手のインデックス“か”を右向きに適宜な強さでフ
リックした場合には、図18(B)に示されるように、3次元オブジェクト画像82が回転して、“か”とそれに付随する項目群“加藤”および“岸部”が、“あ”とそれに付随する“青木”,“浅野”および“井上”に代わって画面の手前に表示される結果となる。なお、このときカーソルは、ここでは“あ”に当たったままであるが、“あ”から“か”に移動させてもよい。
項目制御モードでは、たとえば図11のフローに従う処理が実行される。図11を参照して、まずステップS91で当該タッチ操作がタップか否かをタッチ操作情報72とタッチ条件情報68に含まれるタップ条件との比較に基づいて判別し、ここでNOであれば、ステップS93で当該タッチ操作がフリックか否かをタッチ操作情報72とタッチ条件情報68に含まれるフリック条件との比較に基づいてさらに判別し、ここでもNOであれば、上位のフロー(図8)に戻る。つまり、当該操作は無効とみなされ、ディスプレイ30の表示画像は特に変化しない。
ステップS91でYESであれば、ステップS95に進み、タップ位置に項目があるか否かを表示制御情報74(図6参照)およびタッチ操作情報72に基づいて判別する。そして、ステップS95でNOであれば、タップ位置にインデックスがあるか否かをステップS97でさらに判別し、ステップS97でもNOであれば、上位のフロー(図8)に戻る。したがって、項目もインデックスもない場所をユーザがタップした場合には、当該操作は無効とみなされ、ディスプレイ30の表示画像は特に変化しない。
一方、ステップS97でYESであれば、ステップS111に進み、表示制御情報74を更新して、カーソルを当該インデックス上に移動させた後、上位のフロー(図8)に戻る。ステップS111でのカーソル移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画像に反映される。
ステップS95でYESであれば、ステップS99に進み、カーソルは当該項目上にあるか否かをさらに判別する。そして、ステップS99でYESであれば、当該項目が選択された(選択が確定された)と判断して、ステップS101に進み、表示領域80への描画を実行して、当該項目の詳細情報を表示する。また、当該項目の選択に伴って、次のステップS103で履歴&プライオリティ情報76を更新し、その次のステップS105では、表示制御情報76を更新して、プライオリティの変化に応じた項目の移動を行う。そして、上位のフロー(図8)に戻る。ステップS101での詳細表示、およびステップS105での項目移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画像に反映される。
したがって、図21(A)に示されるように、カーソルの当たった項目“浅野”をユーザがタップした場合には、図21(B)に示されるように、“浅野”に関する詳細な情報(ここでは名前,電話番号,メールアドレスおよび住所)が表示される結果となる。
また、こうして“浅野”が選択されたことで、図7(A)に示した履歴&プライオリティ情報76は、図7(B)のように更新される。すなわち、“浅野”の選択履歴に“(3)12時40分”が追記されて、“青木”のプライオリティが1から2に下降する一方、“浅野”のプライオリティは2から1に上昇する。その結果、図22(A)および図22(B)に示すように、“浅野”の詳細情報を表示し終えた後、“浅野”と“青木”表示位置が入れ替わる。
ステップS99でNOであれば、ステップS107に移って、当該項目のインデックスが画面の手前に来るように3次元オブジェクト画像82を回転させる。具体的には、当該項目のインデックスが画面の手前に来るような縦横方向の回転量(θp,θm:図12(
A),図12(B)参照)を決定し、表示制御情報76に記録された3次元現在位置(xi,yi,zi)に対して、決定結果に基づく回転演算を施す。そして、ステップS109でカーソルを当該項目上へと移動させた後、上位のフロー(図8)に戻る。ステップS107での回転およびステップS109でのカーソル移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画面に反映される。
したがって、図19(A)に示されるように、画面手前の項目“青木”にカーソルが当たった状態で、ユーザが画面奥手の項目“浜崎”をタップした場合には、図19(B)に示されるように、3次元オブジェクト画像82が回転して、“浜崎”のインデックス“は”とそれに付随する項目群“浜崎”および“平松”が、“あ”とそれに付随する“青木”,“浅野”および“井上”に代わって画面の手前に表示され、カーソルも“青木”から“浜崎”に移動する結果となる。
ステップS93でYESであれば、ステップS113に進み、リンク情報64(図4参照)およびタッチ操作情報72に基づいて、フリック方向に応じた項目の送り方向(カーソルをインデックス毎の項目のリンクL2に沿って順方向に送るか逆方向に送るか)を決定する。次に、ステップS115で、フリック強度に応じた項目の送り数(カーソルをインデックス毎の項目のリンクに沿って何個先まで送るか)を決定する。そしてステップS117で、カーソルを送り先として決定された項目上まで移動させた後、上位のフロー(図8)に戻る。ステップS117でのカーソル移動は、上位のフローに戻った直後に実行されるステップS3で、ディスプレイ30の表示画面に反映される。
したがって、図20(A)に示されるように、画面手前の項目“青木”にカーソルが当たった状態で、ユーザが“青木”を右向きに適宜な強さでフリックした場合には、図20(B)に示されるように、カーソルは、“青木”から隣の“浅野”へと移動する結果となる。
なお、この実施例では、カーソル位置情報は、表示制御情報76(図6参照)において、いずれか1つの表示要素を指向するポインタとして表現されたが、リンク情報64(図4参照)において表示要素を指向するポインタとして表現してもよい。この場合、リンク情報64でのポインタの移動、ひいては画面上でのカーソルの動きは、インデックスのリンクL1またはインデックス毎の項目のリンクL2に沿うように制限される。
また、この実施例では、検索対象(項目)にインデックスを付して、インデックス毎に項目のプライオリティを決定した(インデックスには優先順位がない)が、項目に代えて、またはこれに加えて、インデックスに優先順位を与えてもよい。あるいは、項目にインデックスを付すことなく、またはインデックスとは無関係に、全ての項目に対して一元的な優先順位を与えてもよい。
インデックスに優先順位を与える場合、好ましくは、優先順位の高いインデックが画面の手前に来るように、各インデックスの3次元位置を決定する。一方、全項目に対して一元的な優先順位を与える場合には、好ましくは、優先順位の高い項目が画面の手前に来るように、各項目の3次元位置を決定する。
なお、この実施例では、各オブジェクト画像Piの3次元位置(xi,yi,zi)に回転演算を施すことによって3次元オブジェクト画像82を回転させたが、これに代えて、またはこれに加えて、視点P0を中心点Cの周りで移動させても、画面上で同様の回転を実現できる。
なお、この実施例では、カーソルの当たった項目をタップした場合に、当該項目が選択
されたと判断して当該項目の詳細情報を表示したが、これに加えて、カーソルの当たっていない項目をダブルタップした場合やロングタッチした場合にも、当該項目が選択されたと判断して詳細情報を表示してよい。
以上から明らかなように、この実施例の携帯端末10は、ディスプレイ30とその画面に設けられたタッチパネル32とを利用して、メインメモリ34に記憶された複数の要素(i)を含む情報(たとえば電話帳情報62)を検索する。なお、検索対象の典型例としては、電話帳情報62のほかに、たとえば辞書情報、スケジュール情報、映像/音楽コンテンツのアルバム情報、アプリやデータベースの管理情報などを挙げることができる。
検索装置10のCPU24は、複数の要素それぞれの3次元位置(xi,yi,zi)を決定し(S43〜S47,S105)、複数の要素にそれぞれ対応する複数のオブジェクト(Pi)を決定された3次元位置に配置して所定の視点P0で捉えた3次元オブジェクト画像82を画面に表示し(S3)、タッチパネル32で少なくとも方向を指示する指示操作(ドラッグまたはフリック)が検知された場合に3次元オブジェクト画像82を回転させ(S25〜S29,S73,S79〜S83,S107)、そして、タッチパネル32で複数の要素のいずれか1つを選択する選択操作(タップ)が検知された場合に当該要素の情報を画面に表示する(S101)。
こうして、電話帳情報62を3次元オブジェクト画像82の態様で表示することで、限られた広さの画面に多くの情報を表示することができる。また、表示された3次元オブジェクト画像82中に、奥手にあって見難くいオブジェクト画像や、他のオブジェクト画像の影に入って見えないオブジェクト画像があれば、ユーザは、少なくとも方向を指示する指示操作によって3次元オブジェクト画像82を回転させることで、そのようなオブジェクト画像をも容易に見ることができる。これにより、電話帳情報62など複数の要素(i)を含む情報を効率的に検索することができる。
より具体的には、CPU24は、タッチパネル32で方向および距離を指示する第1指示操作(たとえばドラッグないしスライド)を検知し(S17)、3次元オブジェクト画像82を第1指示操作によって指示された方向および距離に応じた量だけ回転させる(S25〜S29)。したがって、ユーザは、方向および距離を指示する第1指示操作を行うことで、3次元オブジェクト画像を所望の量だけ回転させることができる。
また、CPU24は、タッチパネル32で方向および強度(たとえば速度または加速度)を指示する第2指示操作(たとえばフリック)を検知し(S63)、3次元オブジェクト画像82を第2指示操作によって指示された方向および強度に応じた量だけ回転させる(S79〜S83)。したがって、ユーザは、方向および強度を指示する第2指示操作を行うことでも、3次元オブジェクト画像を所望の量だけ回転させることができる。
そして、CPU24は、タッチパネル32で画面内のいずれか1つのオブジェクトを選択する選択操作(たとえばタップ)を検知し(S91,S95)、選択操作で選択されたオブジェクトに対応する要素の情報を表示する。したがって、ユーザは、いずれか1つのオブジェクトを選択する選択操作を行うことで、所望の項目に対応する情報を表示させることができる。
加えて、CPU24は、複数の要素の間で、たとえば選択履歴に基づく優先順位(76)を決定する(S103)。複数の要素の3次元位置は、この優先順位に基づいて決定される。したがって、複数のオブジェクトが優先順位に従って配置されるので、検索の効率が高まる。
以上では、検索装置として機能する携帯端末10について説明したが、この発明は、表示および接触操作が可能な表示操作器、たとえばディスプレイと当該ディスプレイの画面に設けられたタッチパネル(タッチスクリーンともいう)とを利用して、メモリに記憶された複数の要素を含む情報を検索する、各種の検索装置(典型的にはスマートフォン,携帯電話,タブレットPC,PDAなどの携帯端末であるが、据え置き型のPC,情報端末,情報家電などでもよい)に適用できる。なお、ディスプレイ,タッチパネルおよびメモリは外付けでもよいし、検索装置が実現する各機能を複数の情報処理装置(コンピュータ)に分担させてもよい(これらの集合を「検索システム」と総称する)。