説明

ツリー表示調整装置

【課題】ツリー構造を望ましいレイアウトに調整させて表示させることが可能な技術を提供する。
【解決手段】ツリー表示提供装置は第1の決定手段と、第2の決定手段と、回転移動手段とを有している。第1の決定手段は、ユーザの入力に応じて決定される値である第1の値及び第2の値を決定する。第2の決定手段は、対象となる部分木における親子ノード間の距離である半径方向距離が第1の値となるようにするとともに、兄弟ノード間の回転方向距離が所定の値以上になるように各ノードの位置決定を行う。回転移動手段は、前記第2の値に応じて前記対象となる部分木を回転移動させる。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載の実施の形態は、ツリー表示調整装置に関する。
【背景技術】
【0002】
ツリー構造は、ある階層に属する一つのデータから、下位階層に位置する複数のデータが枝分かれした状態で配置されている構造であり、様々な局面で使用されている。開発者などがツリー構造をコンピュータ上で図示させて、検証、改良等の作業を行うことが一般的に行われている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−048531号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ツリー構造が大きくなってノードの数が多数になり、あるいはツリー構造が複雑化するに従い、ツリー構造の内容を一目して把握することが困難になり、ツリー構造を整列させる必要が生ずる。しかし、ツリー構造におけるノードを、手動にて目的の配置に整列させることは負担が大きく、またどのような配置が見やすく理解しやすい配置となるかを直感的に見出すことも困難である。
【0005】
本発明は、ツリー構造を望ましいレイアウトに調整させて表示させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
一の実施の形態によれば、ツリー表示調整装置が提供される。ツリー表示提供装置は第1の決定手段と、第2の決定手段と、回転移動手段とを有している。
【0007】
第1の決定手段は、ユーザの入力に応じて決定される値である第1の値及び第2の値を決定する。第2の決定手段は、対象となる部分木における親子ノード間の距離である半径方向距離が第1の値となるようにするとともに、兄弟ノード間の回転方向距離が所定の値以上になるように各ノードの位置決定を行う。回転移動手段は、前記第2の値に応じて前記対象となる部分木を回転移動させる。
【図面の簡単な説明】
【0008】
【図1】ツリー表示調整装置の構成例を示す機能ブロック図
【図2】ツリー表示調整処理の内容を示したフローチャート
【図3】ノード位置決定処理の一例を示すフローチャート
【図4】図4は、兄弟ノード処理順決定処理の一例を示したフローチャート
【図5】兄弟ノードの処理順決定処理の例を示すためのツリーを示した図
【図6】兄弟ノードの処理順決定処理の例を示すためのツリーを示した別の図
【図7】葉ノード位置決定処理の一例を示したフローチャート
【図8】図8は、親ノード位置決定処理の一例を示したフローチャート
【図9】ユーザによって選択された対象部分木の例を示す図
【図10】ノードの位置を決定するための極座標系を示す図
【図11】ノードbが当該座標の位置に配置された状態を示す図
【図12】ノードcが葉ノード位置決定処理により決定された座標の位置に配置された状態を示す図
【図13】ノードdが極座標に配置された状態を示す図
【図14】ノードeが上記極座標の位置に配置された状態を示す図
【図15】ノードe以下の部分木ツリー全体を原点を中心とした回転移動させた状態を示す図
【図16】ノードf、ノードg、ノードhが極座標系に配置された状態を示す図
【図17】ノードiが極座標に配置された状態を示す図
【図18】ツリー方向θ’とツリー整列方向θを示した図
【図19】ツリー方向θ’をツリー整列方向下θに一致するように対象部分木全体を回転移動させた状態を示す図
【図20】ツリー表示調整装置の画面表示例を示す図
【図21】図20に続く、ツリー表示調整装置の画面表示例を示す図
【図22】図21に続く、ツリー表示調整装置の画面表示例を示す図
【発明を実施するための形態】
【0009】
添付の図面を参照しながら、本発明の一実施の形態の説明をする。
[用語の定義]
本明細書中で使用する用語の定義を述べる。
【0010】
(1) ツリー
「ツリー」とは、木構造のデータの表示形式をいう。ツリーは、一般的にノードとノード間を結ぶエッジで表される。
【0011】
(2)ノード
「ノード」とは、ツリー内の枝の分かれる部分である。各ノードは0個以上の子ノードを持つ。子ノードを持つノードは、子ノードの親ノードと呼ばれる。
【0012】
(3)兄弟ノード
「兄弟ノード」とは、同じ親ノードを持つノード同士をいう。
【0013】
(4)ルートノード
「ルートノード」とは、木構造の頂点にある最上位ノードをいう。根ノードとも呼ばれる。
【0014】
(5)リーフノード
「リーフノード」とは、子ノードを有さないノードをいう。葉ノードとも呼ばれる。
【0015】
(6)ツリーの方向
「ツリーの方向」とは、ルートノードの子ノードのうち両端に位置する子ノードの偏角の平均値をいう。「ツリーの方向」は、ルートノードからリーフノードへ広がっていく木のおよそ中心を通る軸の方向である。
【0016】
(7)半径方向間隔
「半径方向間隔」とは、親ノードとその子ノードの距離をいう。また、「基準半径方向間隔」は、ツリー構造の整列に用いる半径方向間隔の値で、記号「r」で表す。
【0017】
(8)回転方向間隔
「回転方向間隔」とは、隣り合う同世代ノード間の弧の長さをいう。「基準回転方向間隔」は、ツリー構造の整列に用いる回転方向間隔の値で、記号「l」(英小文字の「エル」)で表す。
【0018】
(9)深さ
「深さ」とは、ルートノードからのエッジ数をいう。ルートノードの子ノードは深さが「1」である。同じ親ノードから同一の深さの子ノードは同世代のノードである。
【0019】
[ツリー表示調整装置の概要]
本実施の形態にかかるツリー表示調整装置の概要を述べる。
ツリー表示調整装置は、ユーザの操作に応じて、ユーザの選択したノード(「選択ノード」と呼ぶ)以下の部分木に含まれる各ノードを、選択ノードからの位置が適切になるように配置して、適切なレイアウトでツリー構造の表示を行う装置である。
【0020】
ツリー表示調整装置は、選択ノードを中心として見たときに隣り合う同世代ノード間の弧の長さが一定以上になるように選択ノード以下の各ノードを配置する。ツリー表示調整装置によって整列させられると、選択ノードの周りに選択ノードの子ノード及びそれ以降の世代のノードが放射状に並べられる。また、ツリー表示調整装置は、選択ノード以下の親子間の距離(半径方向間隔)をユーザの入力に応じて変化させ、その結果ツリーの広がり具合を変化させることが可能である。
【0021】
ツリー表示調整装置は、ポインティングデバイスによって入力された位置をインタラクティブにツリー構造の整列に反映させる。
ツリー表示調整装置は、画面上に表示された選択ノードとポインティングデバイスによって指定されたポイントとの距離から、基準半径方向距離を計算し、その基準半径方向距離を選択ノード以下の全エッジ(ブランチ)に適用する。
【0022】
ツリー表示調整装置は、選択ノードからポインティングデバイスにより指定されたポイントへの方向と、ツリー方向とを一致させるようにツリー全体を、ルートノードを中心として回転移動させる。
【0023】
なお、視覚化されたツリー構造は、設計に使うツールであるため、中心から広がっていく放射状の配置が適しており、ツリー表示調整装置は、このような放射状の配置を実現するものである。
【0024】
また、初めから最適な配置は分からず、試しながら配置するので、ユーザの操作に応じてインタラクティブに結果を視認できる本ツリー表示調整装置は有用である。
【0025】
また、本ツリー表示調整装置はトップのルートノードだけではなく、ツリーの一部分である部分木に対しても適用可能な配置技術である。そのため、本ツリー表示調整装置は部分的にバランスの悪いツリーを綺麗に並べる場合にも適している。
【0026】
[ツリー表示調整装置の構成例]
本実施の形態にかかるツリー表示調整装置の構成例について説明する。
ツリー表示調整装置は、例えばコンピュータ、ワークステーションなどの情報処理装置によって実現される装置である。この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
【0027】
図1は、ツリー表示調整装置の構成例を示す機能ブロック図である。なお、図1に示した各構成要素は、ツリー表示調整装置を機能ごとのまとまりとしてとらえた要素であって、実際のツリー表示調整装置が各構成要素に相当するハードウエア(回路、モジュール、ユニットなど)を備えていることを意味するものではない。なお、以下に構成要素が「接続する」、「接続されている」と記しているが、必ずしも物理的に配線等により接続されていることを指すものではなく、構成要素間でデータや信号を送受信できること意味しており、例えばプログラムモジュールなどの間でのデータの受け渡しの実行も「接続」されていると呼んでいる。
【0028】
ツリー表示調整装置1は、入力部10と、入力部10に接続されたノード位置決定部30と、ノード位置決定部30に接続するツリー構造データ記憶部40、静的パラメータ値記憶部50と、ノード位置決定部30に接続された出力部20とを有している。
【0029】
ノード位置決定部30は、動的パラメータ値決定部31、兄弟ノード処理順決定部32、葉ノード位置決定部30、親ノード位置決定部30、ツリー方向変更部35、決定位置記憶部36とを有している。動的パラメータ値決定部31は本実施の形態の第1の決定手段に相当し、葉ノード位置決定部30及び親ノード位置決定部30は、本実施の形態の第2の決定手段に相当し、ツリー方向変更部35は本実施の形態の回転移動手段に相当する。
【0030】
入力部10は、ノードの位置を決定するためのユーザの操作内容を出力する手段であって、例えばポインティングデバイス、タッチパネルなどである。
ノード位置決定部30は、入力部10から入力に基づいて、動的パラメータ値である基準半径方向距離r、ツリー整列方向θを決定し、これらに基づいてツリー中の選択されたノード群(後述する処理対象部分木)中の各ノードの位置を決定し、決定した位置に基づいてツリーを表示させる機能を有する。基準半径方向距離rは本実施の形態の第1の値に相当し、ツリー整列方向θは本実施の形態の第2の値に相当する。
【0031】
ツリー構造データ記憶部40は、ツリー構造データを記憶する機能を有する。
静的パラメータ値記憶部50は、静的パラメータである基準回転方向距離lを記憶する機能を有する。基準回転方向距離lは本実施の形態の所定の値に相当する。
【0032】
出力部20は、ノード位置決定部30によって決定されたノードの位置に基づいてツリーを表示する機能を有し、例えば液晶ディスプレイ装置である。
動的パラメータ値決定部31は入力部の操作に応じて動的に変化する値である動的パラメータの値を決定する機能を有する。
【0033】
兄弟ノード処理順決定部32は、兄弟ノードが複数存在する場合、ノードの位置決定処理を実行する順番を決定する機能を有し、後述する兄弟ノード処理順決定処理を実行する。
【0034】
葉ノード位置決定部30は、位置決定をしようとするノードが葉ノードである場合に、当該葉ノードの位置決定を行う機能を有し、後述する葉ノード位置決定処理を実行する。
【0035】
親ノード位置決定部30は、位置決定をしようとするノードが親ノードである場合に、当該親ノードの位置決定を行う機能を有し、後述する親ノード位置決定処理を実行する。
【0036】
ツリー方向変更部は、処理対象部分木のツリー方向をツリー整列方向に一致させるように処理対象部分木を回転移動させる機能を有し、後述するツリー方向変更処理を実行する。
【0037】
決定位置記憶部36は、ツリー方向変更部35によって、回転移動させられた後の各ノードの位置情報を記憶する機能を有する。記憶された各ノードの位置情報に基づいて、出力部20にレイアウトの調整されたツリーが表示される。
【0038】
[ツリー表示調整]
以下に、ツリー表示調整装置による処理の概要について説明する。
[用いられるパラメータ]
【0039】
ツリー表示調整装置は、ツリー表示調整処理を実行するために3つのパラメータを使用する。3つのパラメータとは基準半径方向間隔r、基準回転方向間隔l、ツリー整列方向θである。
【0040】
基準半径方向間隔rは、ユーザの入力操作により定まる動的パラメータであって、例えばツリー表示調整装置は、ポインティングデバイスによるドラッグ&ドロップ操作により決定する、ポインタの移動開始点とポインタの移動終了点との距離を半径方向間隔rとして記憶し、計算に使用する。
【0041】
ツリー整列方向θは、ユーザによる入力操作により定まるパラメータであって、例えばツリー表示調整装置は、ポインティングデバイスによるドラッグ&ドロップ操作により決定する、選択ノードの座標とポインタの移動終了点とを結ぶ線分により決定される方向(角度)である。
【0042】
基準回転方向間隔lは、あらかじめ設定された値を有する静的パラメータである。基準回転方向間隔lは、上記基準半径方向間隔r及びツリー整列方向θとは異なり、別途ユーザ等により指定される値である。
[ツリー表示調整装置の動作(ツリー表示調整処理)]
【0043】
次に、ツリー表示調整装置1の動作について説明する。図2は、ツリー表示調整装置1の主たる動作である、ツリー表示調整処理の内容を示したフローチャートである。
【0044】
まず、ユーザが表示されているツリー構造のうち、整列させたい部分(対象部分木と呼ぶ)の最も上位のノード(対象部分木ルートノードと呼ぶ)から、所望のエッジの長さの距離分だけポインティングデバイスのポインタをドラッグするツリー表示調整装置1は、このドラッグ&ドロップにより出力される(ポインティングデバイスのポインタの座標(以下、ポインティングデバイス座標という)を取得する(S10)。ポインティングデバイス座標のドラッグ開始位置により、処理対象部分木の部分木ルートノードが特定される、
【0045】
次に、ツリー表示調整装置1はポインティングデバイス座標のドラッグ開始位置及び終了位置にから基準半径方向距離rを算出する(S20)。
【0046】
次に、ツリー表示調整装置1は、ポインティングデバイス座標のドラッグ開始位置及び終了位置にからツリー整列方向を算出する(S30)。
【0047】
次にツリー表示調整装置1はノード位置決定処理を実行する(S40)ノード位置決定処理の内容については後述する。
次にツリー表示調整装置1はノード位置決定処理により決定された各ノードの位置(座標)に基づいて、ツリーを描画する(S50)。
【0048】
次に、ツリー表示調整装置1は、ポインティングデバイスのポインタ(又はボタンなど)が離されたか否かを判定する(S60)。離されたと判定した場合(S60、Yes)、ツリー表示調整装置1は、ツリー表示調整装置1はツリー表示調整処理を終了する。一方、離されていないと判定した場合(S60、No)、ツリー表示調整装置1は、ステップS10に戻りツリー表示調整処理を続行する。この場合、その時点のポインティングデバイス座標を新たなドラッグ終了位置として、新たな基準半径方向間隔r及びツリー整列方向θが定まり、これらに基づいてツリー表示調整処理が再実行される。そのため、ユーザはポインティングデバイスのポインタを動かし続けることによって、ツリーの表示をインタラクティブに変化させて視認し続けることが出来、好ましいレイアウトを発見することが容易となる。
【0049】
以上で、ツリー表示調整装置1の主たる動作である、ツリー表示調整処理の説明を終了する。
【0050】
[ノード位置決定処理]
次にツリー表示調整処理中のノード位置決定処理(図2、S40)の内容を説明する。図3はノード位置決定処理の一例を示すフローチャートである。
【0051】
ノード位置決定処理に入ると、ツリー表示調整装置1、より詳しくはノード位置決定部30は、処理対象ノードが葉ノードか否かを判定する(S110)。葉ノードでないと判定した場合(S110、No)、ツリー表示調整装置1、より詳しくはノード位置決定部30は、ツリー構造データ記憶部40から処理対象ノードの全子ノードの情報を取得する(S120)。なお、処理対象ノードが決定されてない場合は、対象部分木ルートノードが処理対象ノードとされる。
【0052】
次にツリー表示調整装置1、より詳しくは兄弟ノード処理順決定部32はステップS120において取得した情報に基づいて兄弟ノード処理順決定処理を実行する(S130)。兄弟ノード処理順決定処理は、兄弟ノードのうちどのノードを処理対象として選択するかの順番を定める処理である。兄弟ノード処理順決定処理の詳しい内容は後述する。
【0053】
次にツリー表示調整装置1は、未処理の兄弟ノードのうち最上位の処理順のノードの情報を読む(S140)。ここで情報を読まれるノードが新たな処理対象ノードとなる。
【0054】
次にツリー表示調整装置1は、ノード位置決定処理(S150)を行う。これはノード位置決定処理(S40)の再帰処理(再帰呼び出し)である。
【0055】
次にツリー表示調整装置1は、処理対象ノードの兄弟ノードのうち未処理のノードが存在するか否かを判定する(S160)。兄弟ノードのうち未処理のノードが存在すると判定した場合(S160、Yes)、次にツリー表示調整装置1は、ステップS140に戻る。
【0056】
一方、兄弟ノードのうち未処理のノードは存在しないと判定した場合(S160、No)、ツリー表示調整装置1、より詳しくは親ノード位置決定部30は親ノード位置決定処理を実行する(S170)。親ノード位置決定処理は、処理対象ノードの親ノードの位置(座標)を、前述の動的及び静的パラメータ及びその子ノードの位置(座標)に基づいて決定する処理である。親ノード位置決定処理の内容については後述する。なお、ここで決定された親ノードの位置(座標)は最終的に確定されたものではなく、後述するツリー方向変更処理によってさらに変更されることがある。
【0057】
次に、ツリー表示調整装置1、より詳しくはツリー方向変更部35は、ツリー方向変更処理を実行する(S180)。ツリー方向変更処理は、処理対象部分木の各ノードの位置決定後、処理対象部分木のツリー方向を決定し、当該ツリー方向をユーザの入力で定まるツリー整列方向に一致させるように、処理対象部分木ツリーを対象部分木ルートノードを中心とした回転移動させる処理である。
【0058】
ツリー方向変更処理が終了すると、ツリー表示調整装置1はノード位置決定処理を終了する。なお、そのノード位置決定処理が再帰呼び出しされた処理である場合は、再帰呼び出ししたノード位置決定処理に戻り、ノード位置決定処理が続行されることになる。
【0059】
一方、ステップS110において処理対象ノードが葉ノードであると判定した場合(S110、Yes)、ツリー表示調整装置1、より詳しくは葉ノード位置決定部30は、葉ノード位置決定処理を実行する(S190)。葉ノード位置決定処理は、処理対象ノードである葉ノードの位置(座標)を、前述の動的及び静的パラメータに基づいて決定する処理である。葉ノード位置決定処理の内容については後述する。なお、ここで決定された葉ノードの位置(座標)は最終的に確定されたものではなく、後述するツリー方向変更処理によってさらに変更されることもある。葉ノード位置決定処理(S190)終了後、ツリー表示調整装置1はノード位置決定処理を終了する。なお、そのノード位置決定処理が再帰呼び出しされた処理である場合は、再帰呼び出ししたノード位置決定処理に戻り、ノード位置決定処理が続行されることになる。
以上で、ノード位置決定処理の説明を終了する。
【0060】
[兄弟ノード処理順決定処理]
次に、上述したノード位置決定処理中の一処理である、兄弟ノード処理順決定処理(図3、S130参照)について説明する。図4は、兄弟ノード処理順決定処理の一例を示したフローチャートである。
【0061】
兄弟ノード処理順決定処理に入ると、ツリー表示調整装置1、より詳しくは兄弟ノード処理順決定部32は、処理対象ノードの兄弟ノードから、互いに隣接するノードの組み合わせを全て生成する(S310)。
【0062】
次にツリー表示調整装置1より詳しくは兄弟ノード処理順決定部32は、それぞれの組み合わせにおける2つのノードのノード間角度を求める(S320)。「ノード間角度」とは、2つのノードの偏角の差の絶対値である。このステップで全ての組み合わせについて2つのノードのノード間角度が算出される。
【0063】
次にツリー表示調整装置1より詳しくは兄弟ノード処理順決定部32は、ステップS320において算出した全組み合わせのノード間角度のうち、最大のノード間角度を有する組み合わせを抽出する(S330)。
【0064】
次にツリー表示調整装置1より詳しくは兄弟ノード処理順決定部32は、ステップS330において抽出した組み合わせの2つのノードのうち、反時計回り方向のノード(極座標において、より大きな偏角を有するノード)を最初の処理順(処理順位第1位)のノードに決定する(S340)。
【0065】
次にツリー表示調整装置1は、最初の処理順に定められたノードを基準として、反時計回り方向から見て近い順番で、残りの兄弟ノードの処理順(処理順位第2位、第3位、…)を決定する(S350)。その後ツリー表示調整装置1より詳しくは兄弟ノード処理順決定部32は、兄弟ノード処理順決定処理を終了する。
【0066】
[兄弟ノード処理順決定処理の具体例]
次に、兄弟ノードの処理順決定処理(図4参照)の具体例を示す。図5、図6は、兄弟ノードの処理順決定処理の例を示すためのツリーを示した図である。
【0067】
ツリー表示調整装置1は、処理順を決定する対象となる兄弟ノードについて、互いに隣接するノードの組み合わせを生成する(S310)。図5に示したツリーにおいて、ノードaの子ノードであって、互いに兄弟ノードの関係であるノードb、ノードe、ノードiについて処理順を決定する場合は、ノードb、ノードe、ノードiが図5に示したような位置関係にある場合、ツリー表示調整装置1は、ノードbとノードeの組み合わせ、ノードeとノードiの組み合わせ、ノードiとノードbの組み合わせの3つの組み合わせを生成する。
【0068】
次に、ツリー表示調整装置1は、それぞれの組み合わせにおける2つのノードのノード間角度を求める(S320)。「図5に示した例では、ノードbとノードeの組み合わせについてノードbとノードeのノード間角度α、ノードeとノードiの組み合わせについてノードeとノードiのノード間角度β、ノードiとノードbの組み合わせについてノードiとノードbのノード間角度γのそれぞれの角度を算出する。
【0069】
次に、ツリー表示調整装置1、より詳しくは兄弟ノード処理順決定部32は、ステップS320で求めた組み合わせのノード間角度のうち最大のノード間角度を有する組み合わせを抽出する(S330)。図5に示した例では、γ>β>αの関係になるものとする。この場合には最大のノード間角度はノード間角度γであるので、ツリー表示調整装置1、より詳しくは兄弟ノード処理順決定部32は、ノードiノードbとの組み合わせを抽出する。
【0070】
次にツリー表示調整装置1、より詳しくは兄弟ノード処理順決定部32は、抽出した組み合わせの2つのノードのうち、親ノード(ノードa)を中心として反時計回り方向側(極座標の偏角が大きい方)のノードを最初の処理順のノードに決定する(S340)。図5の例では、ノードiよりノードbの偏角が大きいので、ノードbが最初の処理順ノードに決定される。
【0071】
次にツリー表示調整装置1は、最初の処理順に定められたノードを基準として、反時計回り方向から見て最初の処理順に定められたノードに近い順番で、残りの兄弟ノードの処理順を決定する(S350)。図5に示した例では、反時計回り方向から見てノードbに近い順番は、ノードe、ノードiの順となる。
【0072】
以上で、ノードaを親ノードとする3つの兄弟ノードの処理順はノードb、ノードe、ノードiと決定される。
これで第1世代の兄弟ノードについて兄弟ノードの処理順決定処理は終了する。
【0073】
兄弟ノードの処理順決定処理は、第2世代以降のノードにも同様に適用される。図6は、図5のツリーにおける第2世代のノードに兄弟ノードの処理順決定処理を適用する例を示した図である。この例では、第1世代のノードiの3つの子ノード、ノードf、ノードg、ノードhの処理順を決定する。この例では最大の角度を有する隣接する兄弟ノードの組み合わせはノードhとノードfの組み合わせであり、親ノードを中心として反時計回り方向側(座標の偏角が大きい方)のノードはノードfである。よって、最初の処理順のノードはノードfに決定され、ノードfから見て反時計回り方向に近いノードの順は、ノードg、ノードhとなる。よって、ノードf、ノードg、ノードhの処理順はノードf、ノードg、ノードhと決定される。
【0074】
[葉ノード位置決定処理]
次に、ノード位置決定処理(図3参照)内の一処理である、葉ノード位置決定処理(図3、S190)の内容を説明する。図7は、葉ノード位置決定処理の一例を示したフローチャートである。
【0075】
葉ノード位置決定処理に入ると、ツリー表示調整装置1、より詳しくは葉ノード位置決定部30は、処理対象ノードである葉ノードが当該葉ノードと同世代ノードのうち最初に位置決定されるノードであるか否かを判定する(S410)。同世代ノードのうち最初に位置決定されるノードであると判定した場合(S410,Yes)、ツリー表示調整装置1、より詳しくは葉ノード位置決定部30は当該葉ノードの位置を当該世代の基準位置に定める。基準位置は、極座標の動径を基準半径方向距離r×当該葉ノードの深さ(世代数)とし、極座標の偏角を0[rad]とする位置(極座標)である。
【0076】
一方、同世代ノードのうち最初に位置決定されるノードでないと判定した場合(S410,No)、ツリー表示調整装置1は、当該葉ノードの位置を隣の同世代ノードから基準回転方向距離lだけ離れた位置に決定する(S420)。より詳しくは当該葉ノードの座標を、極座標の動径を基準半径方向距離r×当該葉ノードの深さ(世代数)とし、極座標の偏角を隣の同世代ノードから基準回転方向距離lだけ離れた位置となる角度]とする。
【0077】
なお、「隣の同世代ノード」とは、同世代ノードのうち、直近に位置決定がなされたノード、若しくは同世代ノードのうち最も大きな角度を有するノードである。
以上でツリー表示調整装置1、より詳しくは葉ノード位置決定部30は葉ノード位置決定処理を終了する。
【0078】
[親ノード位置決定処理]
次に、ノード位置決定処理(図3参照)内の一処理である、親ノード位置決定処理(図3、S170)の内容を説明する。図8は、親ノード位置決定処理の一例を示したフローチャートである。
【0079】
親ノード位置決定処理に入ると、ツリー表示調整装置1、より詳しくは親ノード位置決定部30は処理対象ノードの親ノードの半径方向の位置(原点からの距離)を基準半径方向距離r×(その親ノードの深さ(世代数))により決定する(S510)。
【0080】
次にツリー表示調整装置1、より詳しくは親ノード位置決定部30は、当該親ノードの偏角を子ノードの角度の最大値と最小値の平均値とする(S520)。
【0081】
次にツリー表示調整装置1、より詳しくは親ノード位置決定部30は、当該親ノードと、その親ノードに隣接する同世代ノードとの回転方向距離が基準回転方向距離lより小さいか否かを判定する(S530)。当該回転方向距離が基準回転方向距離lより小さいと判定した場合(S530、Yes)、ツリー表示調整装置1、より詳しくは親ノード位置決定部30は、当該親ノードの偏角を、当該親ノードと隣接する同世代ノード距離が基準回転方向距離lとなる角度に変更する(S540)。変更された角度を変更後角度と呼ぶ。
【0082】
次にツリー表示調整装置1、より詳しくは親ノード位置決定部30は、当該親ノードの変更後角度に合わせて、当該親ノード以下の全ノードを、原点を中心として回転移動させる(S550)。すなわち、ステップS520において算出された角度と変更後角度との差を、各ノードの座標の偏角に加算して各ノードの新しい座標の偏角とする。
【0083】
一方、当該回転方向距離が基準回転方向距離lより小さくないと判定した場合(S530、No)、ツリー表示調整装置1、より詳しくは親ノード位置決定部30はそのまま親ノード位置決定処理を終了する。
以上で親ノード位置決定処理の説明を終了する。
【0084】
[ノード位置決定処理の具体例]
次に、上述したノード位置決定処理(図3参照)の具体例を説明する。
図9にユーザによって選択された対象部分木の例を示す。この対象部分木は、この部対象分木におけるルートノード(「部分木ルートノード」と呼ぶこととする)であるノードaと、ノードaの子ノードであるノードb、ノードe、ノードiと、ノードeの子ノードであるノードc、ノードdと、ノードiの子ノードであるノードf、ノードg、ノードhで構成される。
【0085】
部分木ルートノードであるノードaは第0世代のノード、ノードb、ノードe、ノードiは第1世代のノード、ノードc、ノードd、並びにノードf、ノードg、ノードhは第2世代のノードである。
【0086】
[第1世代ノードのノード位置決定処理の開始]
対象部分木についてノード位置決定処理を実行するツリー表示調整装置1は、まず、部分木ルートノードaの子ノード、ノードb、ノードe、ノードiについて位置決定を行う。これらノードb、ノードe、ノードiをどのような順番で位置決定を行うかは、兄弟ノード処理順決定処理(図4参照)により定まる。ここでは、この兄弟ノード処理順決定処理により、ノードb、ノードe、ノードiの順に処理順が決定されたものとする。
【0087】
[ノードbの位置決定]
本実施の形態では、ツリー表示調整装置1は、図10に示すような極座標系を用いて各ノードの位置決定を行うものとして説明するが、その他の座標系を用いてもかまわない。
【0088】
ツリー表示調整装置1は、第1世代ノードの中の処理順が最初と定められたノードであるノードbの位置決定を行う。ノードbの位置決定を行うに先立ち、ツリー表示調整装置1はノードbが葉ノードであるか否かを判定する。ノードbは葉ノードであるため、ツリー表示調整装置1は葉ノード位置決定処理を実行しノードbの位置を決定する。ノードbの位置は、同世代ノードの基準位置である座標、すなわち動径を基準半径方向距離rとし、偏角を角度0とする座標に決定される。図11は、ノードbが当該座標の位置に配置された状態を示す図である。
【0089】
[ノードe、ノードc、ノードdの位置決定]
次に、ツリー表示調整装置1は、ノードbと同世代である第1世代ノードの中で、処理順が第2位と定められたノードであるノードeを処理対象ノードとする。
【0090】
ノードeの位置決定を行うに先立ち、ツリー表示調整装置1はノードeが葉ノードであるか否かを判定する。ノードeは葉ノードではないので、ツリー表示調整装置1はノードeの子ノード(第2世代ノード)であるノードc、ノードdの位置決定を行う。ここで、ツリー表示調整装置1は兄弟ノード処理順決定処理により、ノードc、ノードdの順に位置決定を行うものとする。
【0091】
[ノードcの位置決定]
ノードcの位置決定を行うに先立ち、ツリー表示調整装置1はノードcが葉ノードであるか否かを判定する。ノードcは葉ノードであるので、ツリー表示調整装置1は、葉ノード位置決定処理によって、ノードcの座標を第2世代ノードの基準位置である動径を半径方向距離r×深さ(世代数)=r×2=2rとし、偏角を角度0である座標に決定する。図12は、ノードcが葉ノード位置決定処理により決定された座標の位置に配置された状態を示す図である。
【0092】
[ノードdの位置決定]
次に、ツリー表示調整装置1は、ノードcの次の順位であるノードdを新たな処理対象ノードとする。ノードdの位置決定を行うに先立ち、ツリー表示調整装置1はノードdが葉ノードであるか否かを判定する。ノードdは葉ノードであるので、ツリー表示調整装置1は、葉ノード位置決定処理によって、ノードdの動径を基準半径方向距離r×世代数=2rとし、偏角をノードcから回転方向距離lだけ離れた位置となる角度とする座標にノードdを配置する。すなわち、ノードdの座標(2r、l/2r)となる。図13は、ノードdが極座標に配置された状態を示す。
【0093】
[ノードeの再配置位置の決定]
ノードeの全ての子ノードの位置決定が完了すると、ツリー表示調整装置1は親ノード位置決定処理を実行して、ノードeの位置決定を行う。まず、ツリー表示調整装置1は、ノードeの座標の動径を基準半径方向距離r×深さ(世代数)=r×1=rとし、その偏角を子ノードの偏角の最大値と最小値の平均値とする。ここでは、子ノードの偏角の最大値はノードdの「l/2r」であり、子ノードの角度の最小値はノードcの「0」である。よって、これらの平均値は(l/2r+0)/2=l/4rとなる。この処理段階では、ノードeの位置は(r、l/4r)と算出される。図14は、ノードeが上記極座標の位置に配置された状態を示す。
【0094】
次にツリー表示調整装置1は、ノードeが同世代ノードで隣接するノードと基準回転方向距離lより離れているか否かを判定する。基準回転方向距離lより離れていると判定した場合、ツリー表示調整装置1は当該ノードの位置をそのままとする。一方、基準回転方向距離lより離れていないと判定した場合、同世代ノードで隣接するノードと基準回転方向距離lだけ離れるように、処理対象ノード以下のツリーを、原点を中心として回転移動させる。この例では、ノードeは、同世代ノードで隣接するノードであるノードbと基準回転方向距離lより離れていないので、ノードeがノードbから基準回転方向距離lだけ離れるように、ノードe以下の部分木ツリーを、原点を中心として回転移動させる。図15に、ノードeを、隣接する同世代ノードbから基準回転方向距離lだけ離れるように、ノードe以下の部分木ツリー全体を、原点を中心とした回転移動させた状態を示す。この回転移動によってノードeの座標は(r、l/r)となり、ノードbの座標は(2r、3l/4r)となり、ノードdの座標は(2r、5l/4r)となる。
【0095】
[ノードi、ノードf、ノードg,ノードhの位置決定]
次に、ツリー表示調整装置1は、第1世代ノードの中の処理順が第3位と定められたノードであるノードiの位置決定を行う。
【0096】
ノードiの位置決定を行うに先立ち、ツリー表示調整装置1はノードiが葉ノードであるか否かを判定する。ノードiは葉ノードではないため、ツリー表示調整装置1はノードiの子ノード(第2世代ノード)であるノードf、ノードg、ノードhの位置決定を行う。ここで、ツリー表示調整装置1は「兄弟ノード処理順決定処理」により、ノードf、ノードg、ノードhの順に処理順を決定したものとする。
【0097】
[ノードfの位置決定]
次に、ツリー表示調整装置1は、第1の順位であるノードfの位置決定をする。ノードfの位置決定を行うに先立ち、ツリー表示調整装置1はノードfが葉ノードであるか否かを判定する。ノードfは葉ノードであるため、ツリー表示調整装置1は、葉ノード位置決定処理により、座標の動径を基準半径方向距離r×深さ(世代数)=r×2=2rとし、座標の偏角を、同世代ノードのうち直近に配置されたノード(ここではノードd)から回転方向距離lだけ離れた位置となる角度とする座標の位置にノードfを配置する。すなわち、ノードfの座標は(2r、7l/4r)となる。
【0098】
[ノードgの位置決定]
次に、ツリー表示調整装置1は、兄弟ノード中第2の順位であるノードgの位置決定をする。ノードgの位置決定を行うに先立ち、ツリー表示調整装置1はノードgが葉ノードであるか否かを判定する。ノードgは葉ノードであるため、ツリー表示調整装置1は、葉ノード位置決定処理により、座標の動径を基準半径方向距離r×深さ(世代数)=r×2=2rとし、座標の偏角を、同世代ノードのうち直近に配置されたノード(ここではノードf)から回転方向距離lだけ離れた位置となる角度とする座標の位置にノードgを配置する。すなわち、ノードgの座標は(2r、9l/4r)となる。
【0099】
[ノードhの位置決定]
次に、ツリー表示調整装置1は、兄弟ノード中第3の順位であるノードhの位置決定をする。ノードhの位置決定を行うに先立ち、ツリー表示調整装置1はノードhが葉ノードであるか否かを判定する。ノードhは葉ノードであるため、ツリー表示調整装置1は、葉ノード位置決定処理により、座標の動径を基準半径方向距離r×深さ(世代数)=r×2=2rとし、座標の偏角を、同世代ノードのうち直近に配置されたノード(ここではノードg)から回転方向距離lだけ離れた位置となる角度とする座標の位置にノードhを配置する。すなわち、ノードhの座標は(2r、11l/4r)となる。
【0100】
図16にノードf、ノードg、ノードhが極座標系に配置された状態を示す。
【0101】
[ノードiの位置決定]
ノードiの全ての子ノードの位置決定が完了すると、ツリー表示調整装置1はこれら子ノードの親ノードであるノードiの位置決定を行う。まず、ツリー表示調整装置1は、ノードiの座標の動径を基準半径方向距離r×世代数(1)=rとし、その偏角を子ノードの偏角の最大値と最小値の平均値とする。ここでは、子ノードの偏角の最大値はノードhの「11l/4r」であり、子ノードの角度の最小値はノードfの「7l/4r」である。よって、これらの平均値は(11l/4r+7l/4r)/2=9l/4rとなる。よって、この処理段階では、ノードiの座標は(r、9l/4r)と算出される。図17は、ノードiが極座標に配置された状態を示す。
【0102】
[ノードiの再配置位置の決定]
次に、ツリー表示調整装置1はノードiが同世代ノードで隣接するノードと回転方向距離lより離れているか否かを判定する。基準回転方向距離lより離れていると判定した場合、ツリー表示調整装置1は当該ノードの位置をそのままとする。一方、基準回転方向距離lより離れていないと判定した場合、同世代ノードで隣接するノードと基準回転方向距離lだけ離れるように、対象ノード以下のツリーを、原点を中心とした回転移動させる。この例では、ノードeは、同世代ノードで隣接するノードであるノードeと基準回転方向距離lより離れているので、そのままノードiの座標が決定される。
[ノードaの配置]
次に、ツリー表示調整装置1は原点に部分木ルートノードであるノードaを配置する。なお、部分木ルートノードはいつ行ってもかまわない。後述する回転移動の終了後であってもかまわない。
【0103】
[ツリー整列方向への回転移動]
次に、ツリー表示調整装置1は対象部分木のツリー方向を、ツリー整列方向θに一致させるよう対象部分木のツリー方向を回転移動させる。
【0104】
まず、ツリー表示調整装置1は対象部分木のツリー方向を算出する。
対象部分木のツリー方向は、全ての第1世代ノードの偏角の最大値と最小値の平均値である。ここでは、第1世代ノードの偏角の最大値はノードiの「9l/4r」であり、第1世代ノードの角度の最小値はノードbの「0」である。よって、これらの平均値は(9l/4r+0)/2=9l/4rとなり、ツリー方向θ’は=9l/4rと算出される。
【0105】
次に、ツリー表示調整装置1はそのツリー方向θ’をツリー整列方向θに一致するように、原点を中心として対象部分木ツリー全体を回転移動させる。図18はツリー方向θ’とツリー整列方向θを示した図、図19は、ツリー方向θ’をツリー整列方向下θに一致するように対象部分木全体を、原点を中心として回転移動させた状態を示す図である。
【0106】
ツリー方向とツリー整列方向が一致するように、対象部分木を回転移動させると、ノード位置決定処理は完了する。
[画面例]
【0107】
ツリー表示調整装置1の画面表示例を示す。図20はユーザがツリー表示を調整したい部分木の部分木ルートノード200にポインティングデバイスのポインタ210を置いた状態の画面例である。
【0108】
図21は、図20の状態の後に、ポインタ210がドラッグされた状態の画面例である。ポインタ210の移動に応じて部分木ルートノード200以下のノードは、親子ノード間の距離である半径方向距離が基準半径方向距離rとなり、兄弟ノード間の回転方向距離が基準回転方向距離l以上になり、ツリー方向がツリー整列方向に一致するように回転移動されている。
【0109】
図22は、図21の状態の後にポインタ210がさらに部分木ルートノード200から離れた位置までドラッグされた状態の画面例である。親子ノード間の距離である半径方向距離がより長くなり、ツリー方向は現在のポインタの位置に従って新たなツリー整列方向に一致するように回転移動されている。
【0110】
このように本ツリー表示調整装置によれば、インタラクティブにツリー表示の調整を行うことが可能となる。
【0111】
[まとめ]
本実施の形態によれば、ノードを個別に移動させる必要がなくなるため、整列を行うのにかかる時間を短縮することが出来る。
また、本実施の形態によれば、インタラクティブに結果を確認しながらノードの整列が行われるため、ユーザが所望する配置にすることが容易となる。
【0112】
エッジの長さ(親子ノード間の距離)が変わると、連動してツリーの広がり具合が変化するため、直感的に整列を行える。
ドラッグアンドドロップにより、個別にノードを移動させることによって、整列の順序を容易に変更できる。
【0113】
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
【符号の説明】
【0114】
1・・・ツリー表示調整装置; 30・・・ノード位置決定部; 31・・・動的パラメータ決定部; 33・・・葉ノード位置決定部; 34・・・親ノード位置決定部; 35・・・ツリー方向変更部

【特許請求の範囲】
【請求項1】
ユーザの入力に応じて決定される値である第1の値及び第2の値を決定する第1の決定手段と、
対象となる部分木における親子ノード間の距離である半径方向距離が第1の値となるようにするとともに、兄弟ノード間の回転方向距離が所定の値以上になるように各ノードの位置決定を行う第2の決定手段と、
前記第2の値に応じて前記対象となる部分木を回転移動させる回転移動手段と
を有するツリー表示調整装置。
【請求項2】
前記第2の決定手段は、第1の値の変化にリアルタイムに応じて各ノードの位置決定を行い、
前記回転移動手段は第2の値の変化にリアルタイムに応じて前記部分木を回転移動させる
ことを特徴とする請求項1に記載のツリー表示調整装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2013−97508(P2013−97508A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−238590(P2011−238590)
【出願日】平成23年10月31日(2011.10.31)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】