(57)【特許請求の範囲】
【請求項１】
複数のノード間の接続関係を示す情報であって、当該複数のノードの識別子であるノード識別子を有する情報であるノード間情報が格納されるノード間情報格納部と、
前記ノード間情報が示すノードを仮想三次元空間に配置するノード配置部と、
前記仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、前記仮想三次元空間に配置された各ノードと前記仮想三次元空間に配置された他のノードとの配置関係と、前記仮想三次元空間に配置された各ノードと前記ノード間情報により対応づけられている前記仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動部と、
前記仮想三次元空間に配置されたノードを、平面に投影した画像であって、前記ノード間情報で対応づけられたノード間を接続した画像であるノード接続画像を表示するための表示用情報を生成する表示用情報生成部と、
前記表示用情報生成部が生成した表示用情報を出力する出力部とを備え、
前記ノード移動部は、前記各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返し、
前記表示用情報生成部は、前記ノード移動部が移動を繰り返した後のノードについて前記表示用情報を生成するノード配置装置。
【請求項２】
前記ノード移動部は、
前記仮想三次元空間に配置された各ノードについて、前記第一の面との距離の増加に応じて増加する大きさと、前記第一の面に近づく方向と、を有するパラメータであって、当該各ノードの移動量と移動方向とを取得するために用いられるパラメータである第一パラメータを取得する第一取得手段と、
前記仮想三次元空間に配置された各ノードについて、前記仮想三次元空間に配置された他のノードとの距離及び方向に応じて決定される大きさ及び方向を有するパラメータであって、当該各ノードの移動量と移動方向とを取得するために用いられるパラメータである第二パラメータを取得する第二取得手段と、
前記仮想三次元空間に配置された各ノードについて、前記ノード間情報により当該各ノードと対応づけられた１以上の他のノードとの距離及び方向に応じて決定される大きさ及び方向を有するパラメータであって、当該各ノードの移動量と移動方向とを取得するために用いられるパラメータである第三パラメータを取得する第三取得手段と、
前記第一取得手段、第二取得手段、及び第三取得手段が前記各ノードについて取得した第一パラメータ、第二パラメータ、及び第三パラメータに応じて、前記各ノードの移動量と移動方向とを示す情報である移動情報を取得する移動情報取得手段と、
前記移動情報を用いて各ノードを移動させる移動手段とを備えた請求項１記載のノード配置装置。
【請求項３】
前記第一取得手段は、前記第一の面に垂直であって、第一の面に近づく方向を有する前記第一パラメータを取得する請求項２記載のノード配置装置。
【請求項４】
前記第二取得手段は、前記仮想三次元空間に配置された各ノードについて、前記仮想三次元空間に配置された他のノード毎に、ノード間の距離の減少に応じて増加する大きさと、当該他のノードに向かう方向とは逆方向を示す方向と、を有するパラメータを取得し、当該他のノード毎に取得したパラメータを合成して前記各ノードについて前記第二パラメータを取得する請求項２または請求項３記載のノード配置装置。
【請求項５】
前記第三取得手段は、前記仮想三次元空間に配置された各ノードについて、前記ノード間情報により当該ノードと対応づけられた他のノード毎に、ノード間の距離と予め指定された第一の距離との差の大きさの増加に応じて増加する大きさと、ノード間の距離と前記第一の距離との比較結果に応じた方向と、を有するパラメータを取得し、当該他のノード毎に取得したパラメータを合成して前記各ノードについて前記第三パラメータを取得し、
前記比較結果に応じた方向は、当該比較結果がノード間の距離の方が前記第一の距離よりも大きいことを示す場合には、前記他のノードに向かう方向、当該比較結果がノード間の距離の方が前記第一の距離よりも小さいことを示す場合には、前記他のノードに向かう方向とは逆方向を示す方向である請求項２から請求項４いずれか一項記載のノード配置装置。
【請求項６】
前記ノード配置部は、前記ノード間情報が示すノードであって、特定の条件に合致するノードだけを仮想三次元空間に配置する請求項１から請求項５いずれか一項記載のノード配置装置。
【請求項７】
前記ノード移動部は、前記各ノードを移動させる処理を二回以上繰り返し、
前記第一取得手段は、前記ノード移動部が前記ノードを移動させる処理を繰り返す毎に、前記第一パラメータの大きさを増加させる請求項２から請求項５いずれか一項記載のノード配置装置。
【請求項８】
複数のノード間の接続関係を示す情報であって、当該複数のノードの識別子であるノード識別子を有する情報であるノード間情報が格納されるノード間情報格納部と、ノード配置部と、ノード移動部と、表示用情報生成部と、出力部とを用いて行われるノード配置方法であって、
前記ノード配置部が、前記ノード間情報が示すノードを仮想三次元空間に配置するノード配置ステップと、
前記ノード移動部が、前記仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、前記仮想三次元空間に配置された各ノードと前記仮想三次元空間に配置された他のノードとの配置関係と、前記仮想三次元空間に配置された各ノードと前記ノード間情報により対応づけられている前記仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動ステップと、
前記表示用情報生成部が、前記仮想三次元空間に配置されたノードを、平面に投影した画像であって、前記ノード間情報で対応づけられたノード間を接続した画像であるノード接続画像を表示するための表示用情報を生成する表示用情報生成ステップと、
前記出力部が、前記表示用情報生成ステップで生成した表示用情報を出力する出ステップとを備え、
前記ノード移動ステップは、前記各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返し、
前記表示用情報生成ステップは、前記ノード移動ステップにより移動を繰り返した後のノードについて前記表示用情報を生成するノード配置方法。
【請求項９】
複数のノード間の接続関係を示す情報であって、当該複数のノードの識別子であるノード識別子を有する情報であるノード間情報が格納されるノード間情報格納部にアクセス可能なコンピュータを、
前記ノード間情報が示すノードを仮想三次元空間に配置するノード配置部と、
前記仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、前記仮想三次元空間に配置された各ノードと前記仮想三次元空間に配置された他のノードとの配置関係と、前記仮想三次元空間に配置された各ノードと前記ノード間情報により対応づけられている前記仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動部と、
前記仮想三次元空間に配置されたノードを、平面に投影した画像であって、前記ノード間情報で対応づけられたノード間を接続した画像であるノード接続画像を表示するための表示用情報を生成する表示用情報生成部と、
前記表示用情報生成部が生成した表示用情報を出力する出力部として機能させ、
前記ノード移動部は、前記各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返し、
前記表示用情報生成部は、前記ノード移動部が移動を繰り返した後のノードについて前記表示用情報を生成するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノード間を接続した画像を表示するための情報を生成する装置等に関するものである。
【背景技術】
【０００２】
従来の技術として、第１項目及び第２項目のデータとこの第１項目及び第２項目のデータ間の二項関係の種類を示すデータとを有する二項関係データの集合を記憶した第１の記憶手段の中で第１項目若しくは第２項目のデータとして記憶された値ごとに、この値の前記第１の記憶手段における位置を位置データとして第２の記憶手段に記憶し、フローデータの始点となるデータを第１項目のデータとする第１の二項関係データを前記第１の記憶手段の二項関係データの集合から抽出し、この始点を親ノードとしてこの第１の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記第１の二項関係データの二項関係の種類を付加し、前記第２の記憶手段の位置データを参照して、前記第１の記憶手段の二項関係データの集合から、第２の二項関係データの第２項目のデータを第１項目のデータとして持つ第３の二項関係データを探索し、その結果抽出された第３の二項関係データの第１項目を親ノードとしてこの第３の二項関係データの第２項目のデータを子ノードとして関連付け、そのアークに前記抽出された二項関係データの二項関係の種類を付加するプロセスを繰り返すことで、前記第１の二項関係データの第２項目のデータをルートとする部分木を生成することを特徴とするフローデータ生成方法が知られていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２４６８７９号公報（第１頁、第１図等）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術においては、複数のノードを適切にかつ容易に配置することができない、という課題があった。
【０００５】
例えば、従来の技術においては、ノード数が増加したりノード間の接続関係が複雑化した場合、接続されているノードが広い範囲に分散して配置されてしまったり、ノード間を接続する線などが交差してしまい、ノード間の接続関係を見やすく示すことができない、という問題があった。また、親となるノードが特定できない場合、ノードが適切に配置できない場合があるという問題があった。
【０００６】
本発明は、上記のような課題を解消するためになされたものであり、複数のノードを適切にかつ容易に配置することができるノード配置装置等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のノード配置装置は、複数のノード間の接続関係を示す情報であって、複数のノードの識別子であるノード識別子を有する情報であるノード間情報が格納されるノード間情報格納部と、ノード間情報が示すノードを仮想三次元空間に配置するノード配置部と、仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、仮想三次元空間に配置された各ノードと仮想三次元空間に配置された他のノードとの配置関係と、仮想三次元空間に配置された各ノードとノード間情報により対応づけられている仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動部と、仮想三次元空間に配置されたノードを、平面に投影した画像であって、ノード間情報で対応づけられたノード間を接続した画像であるノード接続画像を表示するための表示用情報を生成する表示用情報生成部と、表示用情報生成部が生成した表示用情報を出力する出力部とを備え、ノード移動部は、各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返し、表示用情報生成部は、ノード移動部が移動を繰り返した後のノードについて表示用情報を生成するノード配置装置である。
【０００８】
かかる構成により、各ノードを、第一の面と、他のノードと、他の接続されたノードとの配置関係に応じて繰り返して移動させることができ、複数のノードを適切にかつ容易に配置することができる。
【０００９】
また、本発明のノード配置装置は、前記ノード配置装置において、ノード移動部は、仮想三次元空間に配置された各ノードについて、第一の面との距離の増加に応じて増加する大きさと、第一の面に近づく方向と、を有するパラメータであって、各ノードの移動量と移動方向とを取得するために用いられるパラメータである第一パラメータを取得する第一取得手段と、仮想三次元空間に配置された各ノードについて、仮想三次元空間に配置された他のノードとの距離及び方向に応じて決定される大きさ及び方向を有するパラメータであって、各ノードの移動量と移動方向とを取得するために用いられるパラメータである第二パラメータを取得する第二取得手段と、仮想三次元空間に配置された各ノードについて、ノード間情報により各ノードと対応づけられた１以上の他のノードとの距離及び方向に応じて決定される大きさ及び方向を有するパラメータであって、各ノードの移動量と移動方向とを取得するために用いられるパラメータである第三パラメータを取得する第三取得手段と、第一取得手段、第二取得手段、及び第三取得手段が各ノードについて取得した第一パラメータ、第二パラメータ、及び第三パラメータに応じて、各ノードの移動量と移動方向とを示す情報である移動情報を取得する移動情報取得手段と、移動情報を用いて各ノードを移動させる移動手段とを備えたノード配置装置である。
【００１０】
かかる構成により、予め指定された第一の面の近傍に配置されるように、各ノードを第一の面に近づくように移動させ、ノード間の距離が近いノードは、距離が離れるように移動させ、ノード間が接続されているノードについては、第一の距離に近づくまでは距離が近づくように移動させることができ、複数のノードを適切にかつ容易に配置することができる。
【００１１】
また、本発明のノード配置装置は、前記ノード配置装置において、第一取得手段は、第一の面に垂直であって、第一の面に近づく方向を有する第一パラメータを取得するノード配置装置である。
【００１２】
かかる構成により、各ノードを、第一の面に近づけながら、配置を変更することができ、各ノードを平面に近い状態で、ノード間の距離が適切となるように、複数のノードを配置することができる。
【００１３】
また、本発明のノード配置装置は、前記ノード配置装置において、第二取得手段は、仮想三次元空間に配置された各ノードについて、仮想三次元空間に配置された他のノード毎に、ノード間の距離の減少に応じて増加する大きさと、他のノードに向かう方向とは逆方向を示す方向と、を有するパラメータを取得し、他のノード毎に取得したパラメータを合成して各ノードについて第二パラメータを取得するノード配置装置である。
【００１４】
かかる構成により、他のノードとが近づき過ぎないように、各ノードを移動させることができる。
【００１５】
また、本発明のノード配置装置は、前記ノード配置装置において、第三取得手段は、仮想三次元空間に配置された各ノードについて、ノード間情報によりノードと対応づけられた他のノード毎に、ノード間の距離と予め指定された第一の距離との差の大きさの増加に応じて増加する大きさと、ノード間の距離と第一の距離との比較結果に応じた方向と、を有するパラメータを取得し、他のノード毎に取得したパラメータを合成して各ノードについて第三パラメータを取得し、比較結果に応じた方向は、比較結果がノード間の距離の方が第一の距離よりも大きいことを示す場合には、他のノードに向かう方向、比較結果がノード間の距離の方が第一の距離よりも小さいことを示す場合には、他のノードに向かう方向とは逆方向を示す方向であるノード配置装置である。
【００１６】
かかる構成により、対応しているノード同士、例えば接続されているノード同士が、第一の距離になるまでは、近づくように各ノードを移動させることができる。
【００１７】
また、本発明のノード配置装置は、前記ノード配置装置において、ノード配置部は、ノード間情報が示すノードであって、特定の条件に合致するノードだけを仮想三次元空間に配置するノード配置装置である。
【００１８】
かかる構成により、特定の条件に合致するノードだけを有するノード接続画像を表示することができる。例えば、接続されているノードが最も多いノードを除いたノードだけのノード接続画像を表示することができ、ノードの接続関係を認識しやすくすることができる。
【００１９】
また、本発明のノード配置装置は、前記ノード配置装置において、ノード移動部は、各ノードを移動させる処理を二回以上繰り返し、第一取得手段は、ノード移動部がノードを移動させる処理を繰り返す毎に、第一パラメータの大きさを増加させるノード配置装置である。
【００２０】
かかる構成により、ノードが初期の段階から急速に第一の面に近づかないようにすることができ、例えば、ノード間の交わり等の発生を抑えて、適切にノードを配置することができる。
【発明の効果】
【００２１】
本発明によるノード配置装置等によれば、複数のノードを適切にかつ容易に配置することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態におけるノード配置装置のブロック図
【図２】同ノード配置装置の動作について説明するフローチャート
【図３】同ノード配置装置の動作について説明するフローチャート
【図４】同ノード配置装置の動作について説明するフローチャート
【図５】同ノード配置装置のノード間情報を説明するための、ノードに対応する部品間の配置を示す平面模式図
【図６】同ノード配置装置のノード間情報管理表を示す図
【図７】同ノード配置装置のノード配置管理表を示す図
【図８】同ノード配置装置の、仮想三次元空間内に配置したノードを説明するための図
【図９】同ノード配置装置のノード配置管理表を示す図
【図１０】同ノード配置装置の表示例を示す図
【図１１】同ノード配置装置の表示例を示す図
【図１２】本発明の実施の形態におけるコンピュータシステムの外観の一例を示す図
【図１３】同コンピュータシステムの構成の一例を示す図
【図１４】本実施の形態におけるノードは位置装置の表示例を示す図（図１４（ａ）−図１４（ｅ））
【発明を実施するための形態】
【００２３】
以下、ノード配置装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２４】
（実施の形態）
図１は、本実施の形態におけるノード配置装置１のブロック図である。
【００２５】
ノード配置装置１は、ノード間情報格納部１０１、ノード配置部１０２、ノード移動部１０３、表示用情報生成部１０４、及び出力部１０５を備える。
【００２６】
ノード移動部１０３は、第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、及び移動手段１０３５を備える。
【００２７】
ノード間情報格納部１０１には、ノード間情報が格納される。ノード間情報は、複数のノード間の接続関係を示す情報であって、複数のノードの識別子である複数のノード識別子を有する情報である。ここでの複数は、例えば、３以上であることが好ましい。
【００２８】
ノードとは、部品や装置や、物や、人、事象、情報等の接続関係等を表すための節点や結節点を表すものである。ここでのノードは、ノードを表す図形やオブジェクト等と考えてもよい。
【００２９】
ノード間情報が有するノードは、例えば、部品や装置等と対応づけられている。ここでの部品や装置は、例えば、空気等の流体も含む概念である。また、ここでの部品や装置は、シミュレーション等に用いられる仮想の部品や装置も含む概念である。また、一のノードは部品や装置等のグループ等に対応づけられていてもよい。ここでの部品や装置は、ＣＡＤ等で作成された仮想三次元空間に配置される三次元モデルの部品や装置等の、仮想の部品や装置と考えてもよい。この仮想の部品や装置は、例えば、ＣＡＥ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｅｎｇｉｎｅｅｒｉｎｇ）において、物理量に関するシミュレーション等を行う際に利用される三次元モデルであってもよく、部品の設計データ等であってもよい。また、部品の体積等を考慮しなくてよい場合、ここでの部品は、仮想二次元空間に配置される二次元の部品のデータ等であってもよい。また、ここでの部品は、空気等の気体や、液体等の流体であってもよいまた、ノード間情報が有するノードは、物や、人、事象、情報等と対応づけられたものであってもよい。
【００３０】
ノード識別子とは、ノードを識別可能な情報である。例えば、ノード識別子は、ノードに割り当てられたコードや名称である。ノード識別子は、例えば、ノードに対応する部品や装置、もの、人、情報、事象等の名称や識別子であってもよい。また、ノード識別子は、ノードに対応する部品や装置、もの、人、情報、事象等の名称や識別子と対応づけられたものであってもよい。例えば、ノード間情報が、ノード識別子と、ノードに対応する部品や装置等の識別子とを対応づけて有していてもよい。
【００３１】
ノード間の接続関係とは、例えば、ノード間が接続されているか否かを意味する。ノード間の接続とは、ノード間のリンクと考えてもよい。
【００３２】
ノード間情報は、例えば、一のノードのノード識別子と、このノードに接続されている１または２以上のノードのノード識別子との組を１または２以上有する情報である。また、ノード間情報は、接続されている二つのノードのノード識別子を有する情報の集合であってもよい。
【００３３】
ノード間が接続されているということは、例えば、ノードに対応するノード識別子が示す部品や装置等が接続されていることを示すものと考えてもよいし、ノードが示す部品や装置、もの、人、情報、事象等に関連があることを示すものと考えてもよい。ここでの接続は、例えば、物理量が伝達可能な状態を示すものであり、電気的に接続されていることや、熱等の物理量が伝達可能に接触していることも含む概念である。物理量とは、例えば、熱や、電気、振動、音等である。
【００３４】
ノード間情報は、ノード間の接続の強さを示す情報を有していてもよい。接続の強さはノード間のリンクの強さと考えてもよい。接続の強さは、例えば、数値や指標等で表されれる。接続の強さは、接続されたノードに対応する部品や装置等の間で伝達される物理量や情報量の多さと考えてもよい。接続の強さを示す情報は、例えば、接続されている二つのノード識別子の組と対応づけられてノード間情報に格納される。
【００３５】
また、ノード間情報は、上述したようなノード間の接続関係を示す情報であって、接続されたノード間の接続方向をさらに示す情報であってもよい。ノード間の接続方向とは、ノード間におけるリンクの方向と考えてもよい。ノード間における接続方向とは、例えば、ノードに対応する部品や装置、もの、人、情報、事象間における物理量や情報等の伝達方向や移動方向と考えてもよい。ノード間における接続方向を示す情報は、ノード間の親子関係、従属関係等を示す情報と考えてもよい。
【００３６】
ノード間の接続方向をさらに示すノード間情報は、例えば、接続元である一のノードのノード識別子と、このノードの接続先である１または２以上のノードのノード識別子との組を１または２以上有する情報である。また、ノード間の接続方向をさらに示すノード間情報は、例えば、接続先である一のノードのノード識別子と、このノードの接続元である１または２以上のノードのノード識別子との組を１または２以上有する情報であってもよい。接続元であるノードのノード識別子とは、例えば、接続元であることを示す情報（例えば属性値等）と対応づけられたノード識別子である。また、接続先であるノードのノード識別子とは、例えば、接続先であることを示す情報（例えば属性値等）と対応づけられたノード識別子である。ここでの接続元は、例えば、親や従属元のノード、接続先は、子や従属先のノードと考えてもよい。また、ノード間情報が有している上述したような二つのリンク間の接続の強さ（言い換えればリンクの強さ）を示す情報の値の符号を、リンクの方向を示す情報と考えてもよい。ノード間の接続方向を示すノード間情報とは、有向グラフを示すためのデータであってもよい。
【００３７】
ここでの格納は、一時記憶も含む概念である。ノード間情報格納部１０１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。かかることは、以下においても同様である。
【００３８】
ノード配置部１０２は、ノード間情報格納部１０１に格納されているノード間情報が示すノードを仮想三次元空間に配置する。ノード配置部１０２は、好ましくは複数のノード、より好ましくは３以上のノードを配置する。ノード間情報が示すノードとは、ノード間情報が有するノード識別子が示すノードである。ノードを配置する仮想三次元空間は、例えば、直交するｘ軸、ｙ軸、ｚ軸等の三軸で表される空間である。ノードを配置するということは、ノードが配置される位置を示す情報、例えば、仮想三次元空間における座標や、位置ベクトルを、配置される各ノードについて取得することも含む概念である。例えば、ノード配置部１０２は、配置された各ノードの座標と、各ノードのノード識別子とを対応づけた情報を取得する。ノードが配置される位置とは、ノードに対応づけられた図形や記号、三次元モデル等のオブジェクトやノード識別子等の文字列が配置される位置と考えてもよい。
【００３９】
ノード配置部１０２が、ノードをどのように配置するかは問わない。例えば、ノードをランダムに仮想三次元空間に配置してもよい。例えば、配置の対象となる各ノードについて、ランダムな座標を取得してもよい。例えば、ノード配置部１０２は、予め指定されているアルゴリズム等に応じて、ノードをランダムに仮想三次元空間に配置する。例えば、ノード配置部１０２は、ノードを、仮想三次元空間内の予め指定された領域内にランダムに配置してもよい。ここでの領域は三次元の領域である。オブジェクト等や座標等を、仮想三次元空間にランダムに配置する技術については公知技術であるので、ここでは詳細な説明は省略する。また、ノード配置部１０２は、ノードを、三次元の格子の各節点や、予め指定された座標群に、ランダムあるいは予め指定された順番に配置していってもよい。予め指定された順番は、例えば、ノード識別子が有する番号順や、ノード識別子の先頭の文字の昇順や降順や、ノード識別子の格納されている順番等である。
【００４０】
ノード配置部１０２は、ノード間情報に格納されてるノード識別子が示す全てのノードを仮想三次元空間に配置してもよいし、その一部だけを配置してもよい。ノード配置部１０２は、例えば、ノード間情報が示すノードであって、特定の条件に合致するノードだけを仮想三次元空間に配置するようにしてもよい。ここで配置するノードも３以上のノードであることが好ましい。
【００４１】
ここでの特定の条件とは、例えば、ユーザが指定したノードであるという条件や、ユーザが指定したノード以外のノードであるという条件である。ユーザが指定するノードとは、例えば、図示しない受付部等を介してノード配置装置１が受け付けた１以上のノード識別子が示すノードである。これにより、ノード配置部１０２は、ユーザが指定したノードだけを配置したり、ユーザが指定したノードを除外したノードを配置することができる。
【００４２】
また、特定の条件は、接続の強さが閾値以上である２つのノードであるという条件である。接続の強さは、リンクの強さと考えてもよい。閾値は、例えば、図示しない格納部等に格納されていてもよいし、条件を満たすか否かの判断処理を行うためのアルゴリズム等が有していてもよい。これにより、ノード配置部１０２は、接続の強さが強いノードの組だけを配置することができる。
【００４３】
また、特定の条件は、ノード間情報が示す他のノードとの接続数が、予め指定された条件を満たす数であるノードという条件である。具体的には、接続されている他のノードの数が閾値未満であるノードという条件であってもよい。一のノードについての他のノードとの接続数とは、ノード間情報によって、一のノードに対する接続が示されている他のノードの数と考えてもよい。例えば、ノード配置部１０２は、ノード間情報に含まれるノードのうちの、配置候補となる各ノード識別子毎に、このノード識別子が示すノードと接続されている他のノードのノード識別子を、ノード間情報を用いて検出し、検出したノード識別子の数が閾値未満であれば、その配置候補のノードを条件を満たすノードであると判断する。
【００４４】
例えば、製品や試作品等を構成する複数の部品に対応するノードを配置する場合、部品が配置される基板や、筐体や、部品が配置される環境に存在する空気等の流体などは、多くの部品に接続されているため、部品の接続関係を画像として表示する場合においては、見やすさの妨げとなるとともに、これらは、ユーザが接続関係等を調べたい対象ではないことが多い。従って、上記のようにすることで、例えば、他のノードとの接続数が多いノード、例えば基板や空気等の流体のノードを配置しないようにして、重要な部品に対応するノードだけを配置して、ノード間の接続関係を見やすくすることが可能となる。
【００４５】
なお、特定の条件に合致するノードだけを配置するということは、配置しない対象を指定する条件に合致しないノードを配置しないことも含む概念と考えてもよい。
【００４６】
ノード配置部１０２は、通常、ＭＰＵやメモリ等から実現され得る。ノード配置部１０２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００４７】
ノード移動部１０３は、仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、仮想三次元空間に配置された各ノードと仮想三次元空間に配置された他のノードとの配置関係と、仮想三次元空間に配置された各ノードとノード間情報により対応づけられている仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させる。ノード移動部１０３は、この各ノードを移動させる処理を、１または２回以上、予め指定された条件を満たすまで繰り返す。
【００４８】
第一の面とは、ノードが配置される仮想三次元空間と同じ仮想三次元空間内の任意の平面である。第一の面としては、例えば、ｘｙ平面等が用いられる。第一の面は、通常、ノード移動部１０３により移動させた後のノードの位置を投影させる平面、あるいはこの平面に平行な平面である。
【００４９】
各ノードとノード間情報により対応づけられている他の１以上のノードとは、例えば、ノード間情報によって、接続されていることが示されている他の１または２以上のノードである。仮想三次元空間に配置された各ノードと仮想三次元空間に配置された他の１以上のノードとの配置関係とは、例えば、仮想三次元空間内に配置されたある一のノードと、同じ仮想三次元空間に配置されたそれ以外のノードとの配置関係を、仮想三次元空間内に配置されたノードの一部または全てについて取得したものと考えてもよい。かかることは、以下においても同様である。ノード間情報により対応づけられている仮想三次元空間に配置された他の１以上のノードとは、例えば、仮想三次元空間に配置されているノードのうちの、ノード間情報によって移動対象となっているノードと接続されていることが示されている他の１または２以上のノードである。移動対象となっているノードは、仮想三次元空間に配置されている各ノードである。
【００５０】
ノードの第一の面に対する配置関係とは、例えば、ノードの第一の面に対する配置関係を示す情報である。ノードの第一の面に対する配置関係とは、例えば、ノードの配置を示す情報と第一の面を示す情報等から取得可能な情報と考えてもよい。ノードと第一の面との配置関係とは、例えば、ノードの第一の面に対する距離や、ノードの第一の面に対する方向や、これらの組み合わせである。ノードの第一の面に対する方向とは、例えば、ノードから第一の面に垂線を下ろす場合の方向や、ノードから第一の面に垂直に向かう方向である。また、結果的にノードの第一の面に対する方向が判断可能であることを考えると、ノードが、第一の面で区切られる二つの空間のいずれの空間にあるか（例えば、正側にあるか負側にあるか）等の情報を、ノードの第一の面に対する方向の情報と考えてもよい。
【００５１】
上述したような仮想三次元空間に配置された各ノードと仮想三次元空間に配置された他の１以上のノードとの配置関係等の、ノード間の配置関係とは、例えば、ノード間の配置関係を示す情報である。ノード間の配置関係とは、例えば、ノード間の配置を示す情報等から取得可能な情報と考えてもよい。ノード間の配置関係とは例えば、ノード間の距離や、ノード間を結んだ方向、例えば、一方のノードを基準とした場合の他方のノードの方向や、これらの組み合わせである。例えば、ノード間の配置関係を示す情報は、一方のノードから他方のノードに向かうベクトルであってもよい。例えば、一方のノードの位置ベクトルから他方のノードの位置ベクトルを減算したベクトルをノード間の配置関係を示す情報と考えてもよい。このベクトルの大きさは、例えば、ノード間の距離を示し、このベクトルの向きは、例えば、一方のノードを基準とした場合の他方のノードの方向を示す。
【００５２】
ノードの移動量とは、仮想三次元空間内の移動量である。移動量は、移動する距離と考えてもよい。ノードの位置が座標で表される場合、ノードを移動させるということは、移動前のノードの座標を、ノードの移動量だけノードの移動方向に移動させた座標を取得することと考えてもよい。
【００５３】
また、ノードの移動量と移動方向とは、例えば、ノードの移動量と移動方向とを示すベクトルで表すことができる。ノードの位置が、位置ベクトルで表される場合、移動後のノードの位置ベクトルは、移動前のノードの位置ベクトルと、ノードの移動量と移動方向とを示すベクトルとの和で表すことができる。
【００５４】
なお、この具体例においては、ノード移動部１０３が、第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、及び移動手段１０３５を備えており、これらが、上記のような各ノードの移動量及び移動方向を決定して各ノードを移動させる処理を１または２回以上繰り返し行う場合について説明する。これらの手段によるこれらの処理の詳細については後述する。
【００５５】
上述した予め指定された条件とは、各ノードを移動させる処理を繰り返すか否かを判断するために用いられる条件である。この条件をここでは終了条件と呼ぶ。終了条件は、例えば、繰り返しの回数である。例えば、ノード移動部１０３は、上記の各ノードを移動させる処理を、繰り返し回数が予め指定された回数以上となるまで繰り返し行う。回数以上となった時点で繰り返しを終了する。また、この終了条件とは、例えば、複数のノード間の第一の面に対する高さ方向における距離の最大値が、予め指定された距離未満になるという条件である。また、第一の平面に平行な方向における複数のノードの位置のばらつきを示す値が、予め指定された値以上になるという条件であってもよい。ノード移動部１０３は、上記の各ノードを移動させる処理を行う毎に、第一の面に対する高さの最も高いノードと、最も低いノードとの間の距離を算出し、この距離が予め指定された距離未満となった時点で繰り返しを終了する。また、この終了条件は、ノードの移動量の最大値が、予め指定された値未満になるという条件であってもよい。この終了条件は、第一の面に投影させた各ノード間が、離れすぎず、かつ近づきすぎないよう配置されるような状態で、移動の繰り返しを終了可能な条件であればよい。
【００５６】
本願発明者の鋭意研究の結果得られた知見によれば、上述した各ノードを移動させる処理の繰り返しにおいては、一回あたりの繰り返しにおける各ノードの移動量は小さい方が好ましく、その繰り返し回数は多い方が好ましい。例えば、繰り返し回数は、２回以上が好ましく、例えば、千回以上が好ましい。なお、ノードの移動量の最大値が小さくなるほど、繰り返し回数を多くすることが好ましい。また、処理の開始からノード接続画像を出力するまでの時間を１秒程度に設定する場合、繰り返し回数は１００００回以下とすることが好ましく、４０００回から６０００回の範囲がより好ましい。また、ノードの移動量の最大値が、例えば、ノードの配置が発散しない大きさとなるように、移動量を算出する式の係数等を設定することが好ましい。例えば、ノードが最初にランダムに配置される空間の縦方向、横方向、及び高さ方向の距離を「１」とし、繰り返し回数を１０００回から１００００回までの範囲に設定した場合、ノードの移動量の最大値が、「０．０００５」から「０．０５」までの範囲となるようにすることが好ましい。このように、小さい移動量で、繰り返しノードを移動させることで、ノードのリンク間における交差の発生を抑えることができるとともに、連続して接続されている３以上のノードをねじれやひねりのすくない略曲線状や略直線状に配列させることが可能となる。また、各ノードの分散の度合いも好ましいものとなる。
【００５７】
ノード移動部１０３は、通常、ＭＰＵやメモリ等から実現され得る。ノード移動部１０３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５８】
第一取得手段１０３１は、仮想三次元空間に配置された各ノードについて、各ノードの第一の面に対する配置関係に応じたパラメータである第一パラメータを取得する。第一パラメータは大きさと方向とを有するパラメータである。第一パラメータは、各ノードの移動量及び移動方向を取得するために用いられるパラメータである。例えば、第一取得手段１０３１は、仮想三次元空間に配置された各ノードについて、各ノードの第一の面に対する距離及び方向に応じた第一パラメータを取得する。
【００５９】
第一のパラメータは、例えば、各ノードの移動量及び移動方向そのものを示すパラメータであってもよいし、物体等に与えられる速度や、力のような、予め指定された演算式等に引数として代入すること等によって、ノードの移動量を算出可能なパラメータであってもよい。かかることは、以下の第二パラメータ、及び第三パラメータにおいても同様である。
【００６０】
例えば、第一取得手段１０３１は、仮想三次元空間に配置された各ノードについて、第一の面との距離の増加に応じて増加する大きさと、第一の面に近づく方向と、を有する第一パラメータを取得する。距離の増加に応じて増加する、ということは、距離が増加した場合に、大きさが減少することはないことを意味しており、例えば、距離の増加に応じて連続的に、あるいは段階的に増加することである。例えば、第一取得手段１０３１は、予め用意された増加関数の引数に、第一の面との距離を代入することで、第一パラメータの大きさを取得する。第一の面が上述したようなｘｙ平面である場合、各ノードと第一の面との距離は、例えば、各ノードのｚ座標の絶対値と考えてもよい。
【００６１】
第一取得手段１０３１は、第一の面に垂直であって、第一の面に近づく方向を有する第一パラメータを取得する。つまり、第一パラメータが有する方向は、例えば、第一の面に対し垂直に向かう方向である。
【００６２】
第一取得手段１０３１は、ノード移動部１０３がノードを移動させる処理を２回以上繰り返す場合、ノード移動部１０３がノードを移動させる処理を繰り返す毎に、第一パラメータの大きさを増加させることが好ましい。第一の面に向かう方向へのノードの移動量を最初から大きくした場合、各ノードが他の方向への移動する前に、ノードが第一の面方向に移動してしまい、ノードのリンクが交差したり、連続した３以上のノードにねじれが発生しやすくなるからである。なお、ノード移動部１０３がノードを移動させる処理とは、例えば、第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、及び移動手段１０３５により、仮想三次元空間に配置された各ノードについて後述する移動情報を取得し、各ノードを移動させる一連の処理である。
【００６３】
第一取得手段１０３１は、通常、ＭＰＵやメモリ等から実現され得る。第一取得手段１０３１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６４】
第二取得手段１０３２は、仮想三次元空間に配置された各ノードについて、同じ仮想三次元空間に配置された他のノードとの配置関係に応じて決定されるパラメータである第二パラメータを取得する。第二パラメータは、大きさ及び方向を有するパラメータである。第二パラメータは、各ノードの移動量と移動方向とを取得するために用いられるパラメータである。第二取得手段１０３２は、仮想三次元空間に配置された各ノードについて、仮想三次元空間に配置された他のノードとの距離および方向に応じて決定されるパラメータである第二パラメータを取得する。
【００６５】
第二取得手段１０３２は、例えば、ノード配置部１０２により仮想三次元空間に配置された一のノードについて、同じ仮想三次元空間に配置された他のノードごとに、この他のノードとの距離及び位置とに応じた大きさ及び方向を取得する。そして、他のノード毎について取得したパラメータを合成して、一のノードについての、大きさ及び方向を有する第二パラメータを取得する。同じ処理を、仮想三次元空間に配置された各ノードについて行うことで、仮想三次元空間に配置された各ノードについて第二パラメータを取得する。ここでの合成とは、例えばベクトルの合成や、それと同等のものと考えてもよい。かかることは、以下の合成についても同様である。なお、他のノード毎について取得したパラメータの合成は、他の全てのノードについて移動量及び移動方向を取得してから、まとめて合成を行ってもよいし、一の他のノードについて大きさ及び方向を有するパラメータを取得する毎に、取得したパラメータを順次合成していくようにしてもよい。
【００６６】
第二取得手段１０３２は、例えば、仮想三次元空間に配置された各ノードについて、仮想三次元空間に配置された他のノード毎に、ノード間の距離の減少に応じて増加する大きさと、他のノードに向かう方向とは逆方向を示す方向と、を有するパラメータを取得する。そして、他のノード毎に取得したパラメータを合成して各ノードについて第二パラメータを取得する。ここでの他のノードとは、仮想三次元空間に配置されたノードのうちの、パラメータを取得しようとするノード以外のノードである。ノード間の距離の減少に応じて増加するとは、ノード間の距離が減少した場合に、大きさが減少しないことを意味しており、例えば、距離の減少に応じて連続的に増加、あるいは段階的に増加することである。、他のノードに向かう方向とは逆方向を示す方向とは、パラメータを取得しようとするノードの位置ベクトルから、他のノードの位置ベクトルを減算して得られるベクトルが示す方向である。また、ノード間の距離として、この減算して得られたベクトルの大きさを用いてもよい。
【００６７】
第二取得手段１０３２は、通常、ＭＰＵやメモリ等から実現され得る。第二取得手段１０３２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６８】
第三取得手段１０３３は、仮想三次元空間に配置された各ノードについて、ノード間情報により各ノードと対応づけられている同じ仮想三次元空間に配置された他の１以上のノードとの配置関係に応じて決定される第三パラメータを取得する。第三パラメータは、大きさ及び方向を有するパラメータである。第三パラメータは、各ノードの移動量と移動方向とを取得するために用いられるパラメータである。第三取得手段１０３３は、仮想三次元空間に配置された各ノードについて、ノード間情報によりこの各ノードと対応づけられている仮想三次元空間に配置された他の１以上のノードとの距離及び方向に応じて決定される第三パラメータを取得する。ここでの対応づけられているとは、上述したように、ノードが接続されていることと考えてよい。
【００６９】
第三取得手段１０３３は、例えば、仮想三次元空間に配置された一のノードについて、ノード間情報によりこの一のノードと対応づけられている仮想三次元空間に配置された他のノード毎に、他のノードとの距離及び位置とに応じた大きさ及び方向を有するパラメータを取得する。そして、他のノード毎に取得したパラメータを合成して、一のノードについての第三パラメータを取得する。同じ処理を、仮想三次元空間に配置された各ノードについて行うことで、仮想三次元空間に配置された各ノードについて第三パラメータを取得する。ここでのノード間情報により一のノードと対応づけられた他のノードとは、ノード間情報により、一のノードと対応づけられた仮想三次元空間に配置された他のノードを意味すると考えてよい。
【００７０】
第三取得手段１０３３は、例えば、仮想三次元空間に配置された各ノードについて、ノード間情報により対応づけられている仮想三次元空間に配置された他のノード毎に、ノード間の距離と予め指定された第一の距離との差の大きさの増加に応じて増加する大きさと、ノード間の距離と第一の距離との比較結果に応じた方向と、を有するパラメータを取得し、他のノード毎に取得したパラメータを合成して各ノードについて第三パラメータを取得する。ここでの比較結果に応じた方向とは、比較結果がノード間の距離の方が第一の距離よりも大きいことを示す場合には、他のノードに向かう方向であり、比較結果がノード間の距離の方が第一の距離よりも小さいことを示す場合には、他のノードに向かう方向とは逆方向を示す方向である。他のノードに向かう方向とは逆方向とは、他のノードから離れる方向と考えてもよい。例えば、ノード間の距離が第一の距離よりも長い場合、第三取得手段１０３３は、他のノードに向かう方向を有するパラメータを取得する。また、例えば、ノード間の距離が第一の距離より短い場合、第三取得手段１０３３は、他のノードに向かう方向と逆方向、即ち他のノードから離れる方向を有するパラメータを取得する。ここでの第一の距離は、閾値と考えてもよい。なお、ノード間の距離と第一の距離との比較結果に応じて方向を取得することは、ノード間の距離と第一の距離との差に応じた方向を取得することと考えてもよい。ここでの差に応じた方向とは、例えば、算出した差がノード間の距離の方が第一の距離よりも大きいことを示す場合には、他のノードに向かう方向であり、算出した差がノード間の距離の方が第一の距離よりも小さい場合には、他のノードに向かう方向とは逆方向を示す方向である。
【００７１】
第三取得手段１０３３は、通常、ＭＰＵやメモリ等から実現され得る。第三取得手段１０３３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７２】
移動情報取得手段１０３４は、第一取得手段１０３１、第二取得手段１０３２、及び第三取得手段１０３３が各ノードについて取得した第一パラメータ、第二パラメータ、及び第三パラメータに応じて、移動情報を取得する。移動情報は、各ノードの移動量と移動方向とを示す情報である。移動情報取得手段１０３４は、例えば、各ノードについて取得された第一パラメータ、第二パラメータ、及び第三パラメータを合成し、合成して得られたパラメータを用いて、移動情報を取得する。第一パラメータ、第二パラメータ、及び第三パラメータの合成は、例えば、第一パラメータ、第二パラメータ、及び第三パラメータをそれぞれベクトルと考えた場合のベクトルの合成であり、合成により得られたベクトルの大きさ及び方向が、合成されたパラメータの大きさ及び方向である。移動情報取得手段１０３４は、例えば、第一パラメータ、第二パラメータ、及び第三パラメータがいずれも、ノードに対する移動量及び移動方向を示すパラメータである場合、移動情報取得手段１０３４は、これらを合成したパラメータを、移動情報として取得する。また、第一パラメータ、第二パラメータ、及び第三パラメータがいずれも移動量及び移動方向を示すパラメータでない場合（例えば、上述したような物体に対して加えられる力や速度に相当するようなパラメータである場合等）においては、移動情報取得手段１０３４は、例えば、合成したパラメータの大きさを、予め用意された合成したパラメータを引数として移動量を算出する式に代入することで、移動情報の移動量を算出する。この場合、移動情報の移動方向としては、合成したパラメータの方向を用いる。なお、第一パラメータ、第二パラメータ、及び第三パラメータの少なくとも１以上が、移動量を示すパラメータでない場合、この移動量を示さない各パラメータを、予め用意された移動量を示さないパラメータを引数として移動量を算出する式にそれぞれ代入して、各パラメータに対応した移動量を算出し、この算出した移動量と、元々有していた方向とを、上記の移動量を示されない各パラメータの移動量と移動方向を示すパラメータとして用いて、第一パラメータ、第二パラメータ、及び第三パラメータを合成することで、合成により得られたパラメータが示す移動量及び移動方向を移動情報として取得してもよい。
【００７３】
移動情報取得手段１０３４は、通常、ＭＰＵやメモリ等から実現され得る。移動情報取得手段１０３４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７４】
移動手段１０３５は、移動情報取得手段１０３４が取得した移動情報を用いて各ノードを移動させる。ここでの移動とは、移動後の各ノードの座標や、各ノードの位置ベクトルを取得することと考えてもよい。例えば、移動手段１０３５は、一のノードの座標を、この一のノードについて取得された移動情報が示す方向に、この移動情報が示す移動量だけ移動させた座標を算出する。そして、移動前の座標を、移動後の座標で更新する。また、ノードの位置を位置ベクトル、移動情報をベクトルと考えて、一のノードの位置情報に、このノードについて取得した移動情報であるベクトルを加算することで、移動後のノードの位置を示す位置ベクトルを取得してもよい。そして、移動前の位置ベクトルを、移動後の位置ベクトルで更新する。
【００７５】
移動手段１０３５は、通常、ＭＰＵやメモリ等から実現され得る。移動手段１０３５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７６】
ノード配置部１０２が配置した各ノードを、上記の第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、及び移動手段１０３５を用いて移動させる処理を、一の移動処理と考えた場合、本実施の形態においては、例えば、この移動処理が、上述したような終了条件を満たすまで１または２回以上繰り返される。終了条件を満たすか否かの判断処理は、例えば、移動手段１０３５が行う。
【００７７】
なお、ノード配置部１０２がノードを配置してから、この移動処理が行われるまでの間や、上記の移動処理が繰り返されている途中に、上記の移動処理から、第一取得手段１０３１により第一パラメータを取得する処理を除いた処理を、１回以上、挿入するようにしてもよい。この場合の移動処理から第一パラメータを取得する処理を除いた処理においては、例えば、移動情報取得手段１０３４は、第二パラメータと第三パラメータとを用いて、移動情報を取得する。
【００７８】
また、上記において、移動情報取得手段１０３４が第一パラメータ、第二パラメータ、及び第三パラメータを用いて移動情報を取得する代わりに、移動情報取得手段１０３４が、第一パラメータ、第二パラメータ、及び第三パラメータのそれぞれを用いて、パラメータに対応する移動量と移動方向とを取得し、移動手段１０３５が、仮想三次元空間に配置された各ノードを、第一パラメータについて取得した移動量だけ第一パラメータについて取得した移動方向に移動させた後、第二パラメータについて取得した移動量だけ第二パラメータについて取得した移動方向に移動させ、その後、第三パラメータについて取得した移動量だけ第三パラメータについて取得した移動方向に移動させることで、各ノードを移動させるようにしてもよい。また、第一取得手段１０３１、第二取得手段１０３２、及び第三取得手段１０３３がノードの移動量と移動方向を示すパラメータである場合、移動情報取得手段１０３４は省略し、移動手段１０３５が、各ノードを、第一パラメータ、第二パラメータ、及び第三パラメータがそれぞれ示す移動方向に、それぞれが示す移動量だけ移動させるようにしてもよい。
【００７９】
なお、ノード移動部１０３を構成する各処理手段が、各ノードについて第一パラメータ、第二パラメータ、及び第三パラメータを取得して移動情報を取得し、取得した移動情報を用いて各ノードを移動させる処理の順番等は問わない。
【００８０】
例えば、一のノードについて行われる、第一取得手段１０３１が第一パラメータを取得する処理、第二取得手段１０３２が第二パラメータを取得する処理、及び第三取得手段１０３３が第三パラメータを取得する処理の処理順番を入れ替えてもよい。
【００８１】
また、一のノードについて、第一取得手段１０３１が第一パラメータを取得する処理、第二取得手段１０３２が第二パラメータを取得する処理、第三取得手段１０３３が第三パラメータを取得する処理、移動情報取得手段１０３４が移動情報を取得する処理、取得した移動情報で移動手段１０３５がノードを移動させる処理を連続的に行うようにし、この処理を各ノードについても行うようにすることで、各ノードを移動させるようにしてもよい。この場合、一のノードを移動させた後に、他のノードについて取得する第二パラメータ及び第三パラメータは、この一のノードの移動を反映させたものとしてもよいし、反映させないようにしてもよい。例えば、第二パラメータ及び第三パラメータを取得する際に利用する移動済みのノードの位置の情報としては、移動後の位置の情報を用いるようにしてもよいし、移動直前の位置の情報を用いるようにしてもよい。
【００８２】
表示用情報生成部１０４は、ノード接続画像を表示するための表示用情報を生成する。ノード接続画像とは、仮想三次元空間に配置されたノードを、平面に投影した画像であって、ノード間情報で対応づけられたノード間を接続した画像である。ノードを投影した画像とは、例えば、仮想三次元空間に配置された各ノードを平面に投影した場合における、この平面上における各ノードの位置の情報（例えば、座標等）を取得し、この位置の情報が示す位置に、各ノードに対応する画像や、文字列等を配置した画像である。あるいは、仮想三次元空間に配置された各ノードに、ノードを示す画像や文字列や三次元モデル等のオブジェクトを配置し、これらを平面に投影した画像である。仮想三次元空間に配置されたノードを平面に投影した画像は、例えば、レンダリングにより得られた画像である。
【００８３】
ここでの平面は、例えば、予め指定された平面である。予め指定された面は、例えば、投影した画像において、ノード間の接続関係が識別しやすい面である。例えば、予め指定された平面は、第一の面に平行な面であることが好ましいが、第一の面に平行な面に対して、予め指定された角度、例えば、４５度未満の角度で傾斜した面であってもよい。
【００８４】
予め指定された面に投影した画像は、例えば、予め指定された面に対して垂直な方向から各ノードを投影した画像である。ただし、予め指定された一点から、予め指定された方向に向かって、各ノードを予め指定された面に対して投影した画像であってもよい。予め指定された一点は、例えば、最終的に仮想三次元空間に配置された複数のノードの重心あるいは中心を通過する予め指定された面の垂線上の点である。また、予め指定された面は、上記の指定された方向に垂直な面である。予め指定された平面は、ユーザにより指定された平面であってもよい。
【００８５】
ノード間情報で対応づけられたノード間を接続した画像とは、ノード間情報が接続されていることを示している二つのノード間に、線等のノード間が接続されていること示す画像や文字列等のオブジェクトを配置した画像である。例えば、ノード間を接続した画像は、ノードを示す画像や文字等のオブジェクトを線で接続した画像である。ノード間情報が、ノード間の接続方向をさらに示すものである場合、ノード間を接続する線やノード間に配置される画像や文字列は、接続方向を示す矢印等を有していてもよい。また、ノード間を接続する線や、ノード間に配置される画像や文字列は、グラデーションや、色の変化等で方向を伝達する帯状の画像等であってもよい。例えば、ノード間を接続方向が示されるよう接続した画像は、有向グラフと考えてもよい。
【００８６】
表示用情報は、通常は、ノード接続画像である。ノード接続画像は、例えば、ラスタ画像や、ベクタ画像等の画像情報である。ただし、表示用情報は、上記のようなノード接続画像を表示可能な情報であれば、どのようなデータタイプやファイル形式の情報であってもよい。表示用情報は、例えば、ＷＥＢブラウザ等や、専用のビューア等の、特定のアプリケーションソフトウェアでレンダリングを行うことでノード接続画像を表示可能な、画像情報以外の情報であってもよい。例えば、表示用情報は、仮想三次元空間に配置された各ノードを平面に投影した場合の位置を示す情報（例えば座標等）と、ノード間を接続する画像等が配置される位置を示す情報（例えば、ノード間を接続する線分の両端の座標等）と、各ノードに対応するノード識別子やノードに対応する部品や装置等の名称を示す情報を有する情報であってもよい。例えば、後述する出力部１０５が、この表示用情報が有する各ノードの位置を示す位置に、予め指定された丸印や矩形等の所定の形状を有するオブジェクトと、ノード識別子等の情報と、を配置し、さらに、ノード間を接続する画像の配置される位置を示す情報が示す位置に、予め指定された線分や矢印等を配置することで、ノード接続画像を作成して表示することができる。
【００８７】
表示用情報生成部１０４は、例えば、ノード移動部１０３が移動を繰り返した後のノードについて表示用情報を生成する。具体的には、ノード移動部１０３が上述した予め指定された条件を満たすと判断した場合に、ノード移動部１０３が最終的に移動させた仮想三次元空間に配置されている複数ノードについて表示用情報を生成する。
【００８８】
表示用情報生成部１０４は、通常、ＭＰＵやメモリ等から実現され得る。表示用情報生成部１０４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００８９】
出力部１０５は、表示用情報生成部１０４が生成した表示用情報を出力する。ここでの表示用情報の出力とは、表示用情報の出力であってもよいし、表示用情報を用いたノード接続画像の出力、例えば表示等であってもよい。例えば、ここでの出力は、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【００９０】
出力部１０５は、ディスプレイや通信手段等の出力デバイスを含むと考えても含まないと考えても良い。出力部１０５は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００９１】
以下、ノード移動部１０３の第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、移動手段１０３５が、各ノードを１回移動させる移動処理の一例について説明する。
【００９２】
まず、第一取得手段１０３１が、第一パラメータを取得する処理について例を挙げて説明する。なお、ここでは、ノードについて取得される第一パラメータを、物質に対して加えられる外力にたとえられるようなパラメータとした場合を例に挙げて説明する。このため、説明の便宜上、ここでの第一パラメータを外力と呼ぶ。ただし、ここでの外力は、厳密な意味では力を示すものではなくてよい。あるいは、ノードに対して与えられる仮想的な力と考えてもよい。ここでは、外力、即ち第一パラメータをベクトルで表す場合について説明する。
【００９３】
ここでは、仮想三次元空間に配置されているノードのうちの移動対象となる一のノードのノード識別子がｍｙｉｄであるとし、このノードの座標を、（ｍｙｘ、ｍｙｙ、ｍｙｚ）とする。この一のノードを、ここでは、ノードｍｙｉｄと呼ぶ。この仮想三次元空間は、互いに直交するｘ軸、ｙ軸、及びｚ軸で構成されているものとする。
【００９４】
ノードｍｙｉｄに加えられる外力である（ｐＸ，ｐＹ、ｐＺ）は、
【数１】
0005427978.tif 000002
により取得される。ｔは、ｔ＝ｃａｌｃｃｏｕｎｔ／ＭＡＸＣＡＬＣＮＵＭであるとする。ｃａｌｃｃｏｕｎｔは、各ノードを移動させる処理の回数を示す値であり、初期値が１で、各ノードを移動させる処理が１回行われる毎に、値が１インクリメントされる。ＭＡＸＣＡＬＣＮＵＭは、移動処理の繰り返し回数を指定する値である。関数ｆ（ｔ）としては、ｔ＞０の範囲で、増加関数となる関数、好ましくは、下に凸となる増加関数が用いられる。ここでは、例えば、ｆ（ｔ）＝ｔ２を使用している。この外力は、例えば、ノードｍｙｉｄをｘｙ平面に近づけるために加えられる力に相当するものである。上記の式（１）により、第一取得手段１０３１は、一のノードについての外力、すなわち第一パラメータを取得する。
【００９５】
次に、第二取得手段１０３２が、第二パラメータを取得する処理について例を挙げて説明する。なお、ここでは、ノード間の配置関係に応じて取得される第二パラメータを、ノード間のクーロン力にたとえられるようなパラメータとした場合を例に挙げて説明する。このため、説明の便宜上、ここでの第二パラメータをクーロン力と呼ぶ。ただし、ここでのクーロン力は、厳密な意味でのクーロン力でなくてよく、また、厳密な意味での力を示すものでなくてよい。あるいは、ノード間に発生する仮想的なクーロン力と考えてもよい。ここでは、クーロン力、即ち第二パラメータをベクトルで表す場合について説明する。
【００９６】
ノードｍｙｉｄと同じ仮想三次元空間に配置されている他の一のノードを、ここではノードｙｏｕｒｉｄとし、ｙｏｕｒｉｄの座標を（ｙｏｕｒｘ、ｙｏｕｒｙ、ｙｏｕｒｚ）とする。
【００９７】
まず、第二取得手段１０３２は、ノードｍｙｉｄからノードｙｏｕｒｉｄに向かうベクトル（ｄｘ、ｄｙ、ｄｚ）を算出する。このベクトルは、
ｄｘ＝ｙｏｕｒｘ−ｍｙｘ
ｄｙ＝ｙｏｕｒｙ−ｍｙｙ
ｄｚ＝ｙｏｕｒｚ−ｍｙｚ
となる。
【００９８】
次に、第二取得手段１０３２は、このベクトルから、ノードｍｙｉｄとノードｙｏｕｒｉｄとの距離ｌｅｎを算出する。
【数２】
0005427978.tif 000003
となる。
【００９９】
次に、第二取得手段１０３２は、ノードｍｙｉｄにかかるクーロン力を算出する。ノードｙｏｕｒｉｄについてノードｍｙｉｄにかかるクーロン力（ｑｘ、ｑｙ、ｑｚ）は、
【数３】
0005427978.tif 000004
で算出する。ここで、ｆｏｒｃｅは、クーロン力の強さを調整するための、ユーザが任意に設定できる係数であり、例えば、その値として「０．１」等を利用する。
【０１００】
第二取得手段１０３２は、ノードｍｙｉｄについて、上記のような処理を、ノードｙｏｕｒｉｄ以外の他のノードについても順次行い、クーロン力（ｑｘ、ｑｙ、ｑｚ）を取得する毎に、取得したクーロン力を順次合成していくことで、ノードｍｙｉｄについてのクーロン力である第二パラメータを取得する。例えば、１からｋ番目（ｋは０以上の整数）までの他のノードについて取得したクーロン力を合成してえられたクーロン力を（ｑＸｋ、ｑＹｋ、ｑＺｋ）とし、ｋ＋１番目の他のノードについて上記のようにして取得したノードｍｙｉｄのクーロン力を（ｑｘｋ＋１、ｑｙｋ＋１、ｑｚｋ＋１）とすると、１からｋ＋１番目の他のノードについて取得したクーロン力を合成して得られたクーロン力（ｑＸｋ＋１、ｑＹｋ＋１、ｑＺｋ＋１）は、
【数４】
0005427978.tif 000005
で表される。ただし、ｑＸ０、ｑＹ０、ｑＺ０は０であるとする。
【０１０１】
次に、第三取得手段１０３３が、第三パラメータを取得する処理について例を挙げて説明する。なお、ここでは、接続されているノード間の配置関係に応じて取得される第三パラメータを、接続されているノード間に働く弾性力にたとえられるようなパラメータとした場合を例に挙げて説明する。ただし、ここでの弾性力は、他方のノードを固定した場合における一のノードにかかる力と考える。ここでの接続されたノード間に働く弾性力とは、ノード間の距離が、予め指定された第一の距離と異なる場合には、ノード間の距離を第一の距離に戻そうとする方向に、第一の距離との差の長さの絶対値に応じた強さでかかる力である。第一の距離は、例えば、ノード間を接続するバネ等の弾性体の自然な長さに相当する距離である。このため、説明の便宜上、ここでの第三パラメータを弾性力と呼ぶ。ただし、ここでの弾性力は、厳密な意味では弾性力ではなくてよく、また、厳密な意味での力を示すものでなくてよい。あるいは、ここでの弾性力は、ノード間に発生する仮想的な弾性力と考えてもよい。ここでは、弾性力、即ち第三パラメータをベクトルで表す場合について説明する。
【０１０２】
ノードｍｙｉｄと同じ仮想三次元空間に配置されている他の一のノードであって、ノードｍｙｉｄと接続されている他の一のノードを、ここではノードｃｐｉｄとし、ｃｐｉｄの座標を（ｃｐｘ、ｃｐｙ、ｃｐｚ）とする。
【０１０３】
まず、第三取得手段１０３３は、ノードｍｙｉｄからノードｃｐｉｄに向かうベクトル（ｄｘ、ｄｙ、ｄｚ）を算出する。このベクトルは、
ｄｘ＝ｃｐｘ−ｍｙｘ
ｄｙ＝ｃｐｙ−ｍｙｙ
ｄｚ＝ｃｐｚ−ｍｙｚ
となる。
【０１０４】
次に、第三取得手段１０３３は、このベクトルから、ノードｍｙｉｄとノードｃｐｉｄとの距離ｌｅｎを算出する。この算出式は、上記の式（２）と同様である。
【０１０５】
次に、第三取得手段１０３３は、ノードｍｙｉｄの弾性力を算出する。ノードｃｐｉｄについてノードｍｙｉｄにかかる弾性力（ｓｘ、ｓｙ、ｓｚ）は、
【数５】
0005427978.tif 000006
となる。ここで、ｆｏｒｃｅｃｐは、弾性係数に相当する係数であり、例えば、その値として「０．１」を使っている。
【０１０６】
また、ｌｅｎＢａｓｅは、第一の距離であり、ノードｍｙｉｄとノードｃｐｉｄとが引きつけあう力と反発しあう力との釣り合いがとれている距離であると考えてもよい。ここではｌｅｎＢａｓｅの値として「０．３」を使っている。この値は、ノードｍｙｉｄとノードｃｐｉｄとをバネ等の弾性体でつないだ場合の弾性体の自然な長さに相当する値と考えてもよい。
【０１０７】
第三取得手段１０３３は、ノードｍｙｉｄについて、上記のような処理を、仮想三次元空間に配置されたノードｃｐｉｄ以外のノードｍｙｉｄと接続された他のノードについても順次行い、個々のノード間の弾性力（ｓｘ、ｓｙ、ｓｚ）を取得する毎に、取得した弾性力を順次合成していくことで、ノードｍｙｉｄについての弾性力である第三パラメータを取得する。例えば、１からｋ番目（ｋは０以上の整数）までの他のノードについて取得した弾性力を合成して得られた弾性力を（ｓＸｋ、ｓＹｋ、ｓＺｋ）とし、ｋ＋１番目の他のノードについて上記のようにして取得したノードｍｙｉｄの弾性力を（ｓｘｋ＋１、ｓｙｋ＋１、ｓｚｋ＋１）とすると、１からｋ＋１番目の他のノードについて取得した弾性力を合成して得られた弾性力（ｓＸｋ＋１、ｓＹｋ＋１、ｓＺｋ＋１）は、
【数６】
0005427978.tif 000007
となる。ただし、ｓＸ０、ｓＹ０、ｓＺ０は０であるとする。
【０１０８】
次に、移動情報取得手段１０３４が、第一パラメータ、第二パラメータ、及び第三パラメータを用いて、移動情報を取得する処理について例を挙げて説明する。
【０１０９】
ここでは、まず、移動情報取得手段１０３４は、第一パラメータ、第二パラメータ、及び第三パラメータを合成したパラメータを取得する。例えば、上記の式（１）−（６）においては、第一パラメータを外力、第二パラメータをクーロン力、及び第三パラメータを弾性力に相当するものとして扱っていることから、ここでも、これらを合成したものを合成した力と考える。
【０１１０】
また、ここでは、式（４）を用いて、ノードｍｙｉｄについて全ての他のノードについて取得したクーロン力を順次合成して得られたクーロン力を、ここでは、（ｑＸ、ｑＹ、ｑＺ）とする。また、同様に式（６）を用いて、ノードノードｍｙｉｄについて全ての他のノードについて取得した弾性力を順次合成して得られた弾性力を、ここでは、（ｓＸ、ｓＹ、ｓＺ）とする。
【０１１１】
移動情報取得手段１０３４は、ノードｍｙｉｄについて取得した第一パラメータである外力と、第二パラメータであるクーロン力と、第三パラメータである弾性力とを合成して、以下のような合成した力（ｆＸ、ｆＹ、ｆＺ）を取得する。即ち、
【数７】
0005427978.tif 000008
を取得する。そして、この合成した力を用いて、以下のような移動量と移動方向とを示す移動情報（ｍｖＸ、ｍｖＹ、ｍｖＺ）を取得する。即ち、
【数８】
0005427978.tif 000009
を取得する。ｄｔは、上記の合成した力から移動情報を取得するために用いられる係数であり、ここでは、例えば「０．０５」が用いられる。
【０１１２】
次に、移動情報取得手段１０３４が取得した移動情報を用いて、ノードを移動させる処理について例を挙げて説明する。
【０１１３】
移動情報取得手段１０３４は、ノードｍｙｉｄの座標（ｍｙＸ、ｍｙＹ、ｍｙＺ）と、上記の式（４）で取得した移動情報（ｍｖＸ、ｍｖＹ、ｍｖＺ）を加算して、移動後のノードｍｙｉｄの座標（ｍｙＸａｆ、ｍｙＹａｆ、ｍｙＺａｆ）を取得する。即ち、
【数９】
0005427978.tif 000010
となる。
【０１１４】
以上のようにして、仮想三次元空間に配置した各ノードを１回移動させる移動処理が終了する。なお、移動処理を繰り返す場合には、次回の移動処理においては、移動後のノードｍｙｉｄの座標（ｍｙＸａｆ、ｍｙＹａｆ、ｍｙＺａｆ）を、移動対象のノードｍｙｉｄの座標として用いるようにすればよい。
【０１１５】
なお、上記の各式において、係数等は適宜変更するようにしてもよい。また、上記の各式の代わりに、上記の各式における引数との算出される値との関係が類似したものとなる式、例えば、増加傾向や減少傾向等が類似したものとなる式を用いるようにしてもよい。
【０１１６】
次に、ノード配置装置１の動作の一例について図２のフローチャートを用いて説明する。
【０１１７】
（ステップＳ１０１）ノード配置部１０２は、ノード間情報が有する複数のノード識別子がそれぞれ示すノードを仮想三次元空間に配置する。例えば、ノード配置部１０２は、ノードをランダムに配置する。なお、特定の条件に合致するノードだけを配置するようにしてもよい。
【０１１８】
（ステップＳ１０２）移動手段１０３５は、カウンターｋの値に１を代入する。
【０１１９】
（ステップＳ１０３）移動手段１０３５は、カウンターｍの値に１を代入する。
【０１２０】
（ステップＳ１０４）第一取得手段１０３１は、仮想三次元空間に配置されたノードに、ｍ番目のノードがあるか否かを判断する。ノードがある場合、ステップＳ１０５に進み、ない場合、ステップＳ１１２に進む。
【０１２１】
（ステップＳ１０５）第一取得手段１０３１は、第一の面に対するｍ番目のノードの距離と第一の面に対するノードの配置されている方向を示す情報を取得する。例えば、第一の面が、ｘｙ平面である場合、ｍ番目のノードのｚ座標の値を取得する。ｚ座標の値の絶対値が第一の面に対する距離を示し、ｚ座標の符号が、第一の面に対するノードが配置されている方向を示す。例えば、ｚ座標の符号が、正であれば、ノードが、第一の面よりも、ｚ軸の値が大きくなる方向に位置していることとなる。
【０１２２】
（ステップＳ１０６）第一取得手段１０３１は、ｍ番目のノードについて、ステップＳ１０５で取得した距離とカウンターｋの値に応じた第一パラメータを取得する。例えば、上述した式（１）を用いて、第一パラメータを取得する。
【０１２３】
（ステップＳ１０７）第二取得手段１０３２は、ｍ番目のノードについて、第二パラメータを取得する処理を行う。この処理の詳細については後述する。
【０１２４】
（ステップＳ１０８）第三取得手段１０３３は、ｍ番目のノードについて、第三パラメータを取得する処理を行う。この処理の詳細については後述する。
【０１２５】
（ステップＳ１０９）移動情報取得手段１０３４は、ステップＳ１０６からステップＳ１０８において取得した第一パラメータ、第二パラメータ、及び第三パラメータとを用いて、ｍ番目のノードについての移動情報を取得する。例えば、上述した式（７）、及び式（８）を用いて移動情報を取得する。
【０１２６】
（ステップＳ１１０）移動手段１０３５は、ステップＳ１０９で取得した移動情報を用いて、ｍ番目のノードを移動させる。例えば、移動手段１０３５は、上述した式（９）を用いて、移動後の座標を取得する。
【０１２７】
なお、カウンターｋの値がインクリメントされるまでは、ステップＳ１０７やステップＳ１０８で用いられるこのｍ番目のノードの座標等としては、移動前の座標等を用いてもよい。この場合、移動手段１０３５は、移動後の座標を、例えば、図示しない格納部等に一時記憶するようにし、カウンターｋの値がインクリメントされるタイミング等に、この移動後の座標を読み出して、移動前の座標を更新するようにしてもよい。ただし、ステップＳ１０７やステップＳ１０８で用いられるこのｍ番目のノードの座標等は、移動後の座標等であってもよい。
【０１２８】
（ステップＳ１１１）移動手段１０３５は、カウンターｍの値を１インクリメントする。そして、ステップＳ１０４に戻る。
【０１２９】
（ステップＳ１１２）移動手段１０３５は、終了条件を満たすか否かを判断する。例えば、移動手段１０３５は、カウンターｋの値が、予め指定された値以上になったか否かを判断し、値以上となった場合、終了条件を満たすと判断する。終了条件を満たす場合、ステップＳ１１３に進み、満たさない場合、ステップＳ１１５に進む。
【０１３０】
（ステップＳ１１３）表示用情報生成部１０４は、仮想三次元空間に配置されたノードについて、ノード接続画像を表示するための表示用情報を生成する。
【０１３１】
（ステップＳ１１４）出力部１０５は、ステップＳ１１３で生成された表示用情報を出力する。そして、処理を終了する。
【０１３２】
（ステップＳ１１５）移動手段１０３５は、カウンターｋの値を１インクリメントする。そして、ステップＳ１０３に戻る。
【０１３３】
次に、ノード配置装置１が第二パラメータを取得する処理の一例について図３のフローチャートを用いて説明する。この処理は、ステップＳ１０７に相当する処理である。
【０１３４】
（ステップＳ２０１）第二取得手段１０３２は、カウンターｐに１を代入する。
【０１３５】
（ステップＳ２０２）第二取得手段１０３２は、仮想三次元空間に配置されたｍ番目のノードと異なるノードの中に、ｐ番目のノードがあるか否かを判断する。ある場合、ステップＳ２０３に進み、ない場合、ステップＳ２０７に進む。
【０１３６】
（ステップＳ２０３）第二取得手段１０３２は、ｍ番目のノードと、ｐ番目のノードとの距離を算出する。例えば、第二取得手段１０３２は、ｐ番目のノードの位置ベクトルから、ｍ番目のノードの位置ベクトルを減算し、減算結果を用いて、上述した式（２）を利用して距離を算出する。
【０１３７】
（ステップＳ２０４）第二取得手段１０３２は、ステップＳ２０３で算出した距離を用いて、ｐ番目のノードとの距離の減少に応じて増加する大きさと、ｐ番目のノードに向かう方向とは逆方向を示す方向と、を有するパラメータを取得する。距離が大きくなると大きさが小さくなるパラメータを取得する。例えば、第２取得部１０３２は、式（３）を用いてパラメータを取得する。このパラメータは、第二パラメータを取得するために用いられるパラメータと考えてもよい。
【０１３８】
（ステップＳ２０５）第二取得手段１０３２は、ｐ−１番目のノードまでの各ノードについて順次取得したパラメータを合成した値と、ｐ番目のノードについてステップＳ２０４で取得したパラメータとを合成する。そして、合成したパラメータを、図示しない格納部等に一時記憶する。ここでの一時記憶は、例えば、更新である。なお、ｐ＝１の場合、単にステップＳ２０４で取得したパラメータを一時記憶すればよい。
【０１３９】
（ステップＳ２０６）第二取得手段１０３２は、カウンターｐの値を１インクリメントする。そして、ステップＳ２０２に戻る。
【０１４０】
（ステップＳ２０７）第二取得手段１０３２は、図示しない格納部等に一時記憶されている合成されたパラメータ、即ち、直前のステップＳ２０５において合成されて図示しない格納部等に一時記憶されているパラメータを第二パラメータとして取得し、図示しない格納部等に蓄積する。そして、上位の処理にリターンする。
【０１４１】
次に、ノード配置装置１が第三パラメータを取得する処理の一例について図４のフローチャートを用いて説明する。この処理は、ステップＳ１０８に相当する処理である。
【０１４２】
（ステップＳ３０１）第三取得手段１０３３は、カウンターｑの値に１を代入する。
【０１４３】
（ステップＳ３０２）第三取得手段１０３３は、仮想三次元空間に配置されたノードの中のｍ番目のノードを除いたノードの中に、ｍ番目のノードと接続されたｑ番目のノードがあるか否かを判断する。仮想三次元空間に配置されたノードがｍ番目のノードと接続されたノードであるか否かは、ノード間情報を用いて判断する。ｑ番目のノードがある場合、ステップＳ３０３に進み、ない場合、ステップＳ３０７に進む。
【０１４４】
（ステップＳ３０３）第三取得手段１０３３は、ｍ番目のノードと、ｑ番目のノードとの距離を算出する。例えば、第二取得手段１０３２は、ｑ番目のノードの位置ベクトルから、ｍ番目のノードの位置ベクトルを減算し、減算結果を用いて、上述した式（２）を利用して距離を算出する。
【０１４５】
（ステップＳ３０４）第三取得手段１０３３は、ステップＳ３０３で算出した距離を用いて、ｑ番目のノードとの間の距離と予め指定された第一の距離との差の大きさの増加に応じて増加する大きさと、ノード間の距離と第一の距離との比較結果に応じた方向と、を有するパラメータを取得する。例えば、上述した式（５）にステップＳ３０３で取得した距離を代入することで、パラメータを取得する。このパラメータは、第三パラメータを取得するために用いられるパラメータと考えてもよい。
【０１４６】
（ステップＳ３０５）第三取得手段１０３３は、ｑ−１番目のノードまでの各ノードについて順次取得したパラメータを合成した値と、ｑ番目のノードについてステップＳ２０４で取得したパラメータとを合成する。そして、合成したパラメータを、図示しない格納部等に一時記憶する。ここでの一時記憶は、例えば、更新である。なお、ｑ＝１の場合、単にステップＳ３０４で取得したパラメータを一時記憶すればよい。
【０１４７】
（ステップＳ３０６）第三取得手段１０３３は、カウンターｑの値を１インクリメントする。そして、ステップＳ３０２に戻る。
【０１４８】
（ステップＳ３０７）第三取得手段１０３３は、図示しない格納部等に一時記憶されている合成されたパラメータ、即ち、直前のステップＳ３０５において合成されて図示しない格納部等に一時記憶されているパラメータを第三パラメータとして取得し、図示しない格納部等に蓄積する。そして、上位の処理にリターンする。
【０１４９】
以下、本実施の形態におけるノード配置装置１の具体的な動作について一例を挙げて説明する。
【０１５０】
この具体例においては、ノード間情報格納部１０１には、一例として、熱伝達のシミュレーション対象となった複数の部品に対応するノードのノード識別子が格納されている場合を例に挙げて説明する。
【０１５１】
（具体例１）
図５は、熱伝達のシミュレーション対象となった部品間の配置を示す平面模式図である。ここでは１０個の部品１１−部品２０が、それぞれ、他の一以上の部品と接するよう配置されている。また、図中の「ａ」−「ｊ」は、部品名であるとする。部品名が「ｊ」である部品１１は、部品１２−部品２０の周囲に配置された流体であり、ここではこの流体も部品と考えている。
【０１５２】
図６は、ノード間情報格納部１０１に格納されているノード間情報を管理するノード間情報管理表である。このノード間情報は、図５に示した複数の部品に対応したノードについてのノード間情報であり、例えば、複数の部品間における熱伝達のシミュレーションにより得られた情報を有する情報である。
【０１５３】
ノード間情報は、「ノードＩＤ」、「部品名」「接触ノードＩＤ」、「伝達熱量」、という属性を有している。「ノードＩＤ」は、ノード識別子であり、例えば、部品に割り当てられた数字であるとする。ここでは、「ノードＩＤ」の「０１１」から「０２０」が、それぞれ、部品１１から部品２０のノード識別子であるとする。「部品名」は、ノードに対応する部品名であり、ここでは、上記の部品名「ａ」−「ｊ」のいずれか一つであるとする。「接触ノードＩＤ」は、「ノードＩＤ」が示す部品に接触している一の部品のノード識別子であり、ここでは、「ノードＩＤ」と同じノード識別子が用いられる。
【０１５４】
「伝達熱量」は、「ノードＩＤ」が示す部品から実質的に「接触ノードＩＤ」が示す部品に伝達される熱量であり、ここでは、一例として、「接触ノードＩＤ」が示す部品から「ノードＩＤ」が示す部品に伝達される熱量（即ち「ノードＩＤ」が示す部品が受け取る熱量）から、「ノードＩＤ」が示す部品から「接触ノードＩＤ」が示す部品に伝達される熱量を減算した値を示している。熱量の単位は、ここでは「Ｗ（ワット）」を用いている。ただし、単位等は問わない。なお、値が負であれば、「ノードＩＤ」が示す部品から結果的に「接触ノードＩＤ」が示す部品に熱量が伝達されていることを示し、値が正であれば、「接触ノードＩＤ」が示す部品から結果的に「ノードＩＤ」が示す部品に熱量が伝達されていることを示す。「伝達熱量」の値の大きさは、ノード間のリンクの強さを示す情報と考えてもよい。
【０１５５】
なお、ここでは、例えば、「ノードＩＤ」の属性値が「０１１」である場合、この属性値を、ノードＩＤ「０１１」と呼ぶ場合がある。かかることは、他の属性と属性値との組み合わせに関しても同様である。
【０１５６】
「伝達熱量」等の属性値は、例えば、熱伝達のシミュレーション等により取得された値であるとする。なお、このような熱伝達のシミュレーションについては、公知技術であるので、ここでは詳細な説明は省略する。
【０１５７】
まず、ユーザが、ノード間情報を用いてノード接続画像を作成する指示を、図示しない入力デバイス等を介してノード配置装置１に与えたとする。
【０１５８】
ノード配置部１０２は、図６に示したノード間情報管理表に格納されているノードを仮想三次元空間に配置する処理を行う。
【０１５９】
ここでは、例えば、ノードに対して接続されている他のノード数が最も多いノードを除いたノードを出力する特定の条件が予め指定されていたとすると、この特定の条件に合致するノードを検出する。即ち、ノードに対して接続されている他のノード数が最も多いノードを除いたノードを検出する。この特定の条件は、例えば、条件を設定する情報等として、図示しない格納部に格納されていてもよい。条件を設定する情報は、例えば、一以上の関数や、メソッド名や、「ｉｆ」、「ｔｈｅｎ」等で示される制御構文等で構成されている。また、この条件を設定する情報は、この条件に相当する判断処理等を行うためのアルゴリズムであっても良い。
【０１６０】
まず、ノード配置部１０２は、図６に示すノード間情報管理表の各ノード毎に、接続されている他のノード数をカウントする。ここでは、ノード配置部１０２は、例えば、図６に示すノード間情報管理表のついて、「ノードＩＤ」の値が一致するレコード（行）の数を、「ノードＩＤ」の値毎にカウントし、カウント値の最も多い「ノードＩＤ」の値を取得する。ノード間情報管理表の各レコードは、「ノードＩＤ」が示す一のノードと、「接続ノードＩＤ」が示す一のノードとが接続されていることを示すものであるため、「ノードＩＤ」毎にレコード数をカウントすることで、「ノードＩＤ」が示すノードについて接続されている他のノードの数を取得することができる。そして、ノード配置部１０２は、接続されているノード数の最も多い「ノードＩＤ」を取得する。ここでは、例えば、「ノードＩＤ」が「０１１」であるノードに接続されている他のノード数が「９」であり、他のノードよりも多いため、ノード配置部１０２はこのノードのノードＩＤ「０１１」を取得したとする。そして、ノード配置部１０２は、取得したノードＩＤ「０１１」が示すノードを除いたノードを上述した特定の条件を満たすノードと判断し、これらのノードを配置することを決定する。
【０１６１】
ノード配置部１０２は、図６に示したノード間情報管理表の「ノードＩＤ」が「０１１」であるレコード（行）以外のレコードから重複がないよう「ノードＩＤ」の値を取得し、取得した各「ノードＩＤ」に対応するノードを、仮想三次元空間にランダムに配置する。具体的には、「０１２」から「０２０」までの各「ノードＩＤ」について、ランダムな座標を取得する。ランダムな座標は、例えば、Ｃ言語のｒａｎｄ関数等を用いることで取得可能である。ここで取得する座標は、例えば、直交するｘ軸、ｙ軸、ｚ軸を備えた仮想三次元空間の原点から予め指定された範囲内に位置するランダムな座標であるとする。取得した座標は、ノード識別子と対応づけて図示しない格納部に蓄積する。
【０１６２】
図７は、ノード配置部１０２が各ノードについて取得した仮想三次元空間における座標を管理するためのノード配置管理表である。ノード配置管理表は、「ノードＩＤ」と、「座標」とを有する。「座標」は、対応する「ノードＩＤ」が示すノードが配置される位置を示す座標である。なお、「座標」のｘ１１１、ｙ１１１、ｚ１１１等の値は、任意の数値であるとする。
【０１６３】
図８は、ノード配置部１０２が仮想三次元空間に配置したノードを説明するための図であり、ノード配置管理表が示す各ノードを、仮想三次元空間内の各ノードに対応する座標に配置した状態を示す図である。図においては説明のため、座標軸を示している。また、各ノードを円形の図形で示している。円形の図形内の数字は、ノードが対応するノード識別子を示している。
【０１６４】
次にノード移動部１０３が、ノード配置部１０２が配置した各ノードを移動させる処理を１回以上、終了条件を満たすまで行う。ここでは、例えば、終了条件は、繰り返しを４０００回以上行うという条件であるとする。
【０１６５】
まず、移動手段１０３５は、各ノードを移動させる移動処理の回数をカウントするために、カウンターに初期値である「１」を代入する。
【０１６６】
次に、第一取得手段１０３１は、図９に示したノード配置管理表から、１番目のノード識別子を取得する。ここでは、例えば、上から１行目のレコードの「ノードＩＤ」の値である「０１２」を読み出す。
【０１６７】
第一取得手段１０３１は、ノードＩＤが「０１２」であるノードについて、第一の面に対する距離及び方向を示す情報を取得する。ここでは、第一の面は、ｘｙ平面に予め指定されているとすると、第一取得手段１０３１は、第一の面に対する距離及び方向を示す情報として、ノードＩＤが「０１２」であるノードのｚ座標の値「ｚ１１２」を、図７に示したノード配置管理表から取得する。なお、ノードＩＤが「０１２」であるノードを、ここではノード「０１２」と呼ぶ場合がある。かかることは他のノードについても同様である。
【０１６８】
第一取得手段１０３１は、取得したｚ座標の値「ｚ１１２」と、上述した移動処理の回数をカウントするカウンターの値「１」と終了条件の値「４０００」とを取得し、上述した式（１）に代入して、第一パラメータ（ｐＸ，ｐＹ，ｐＺ）を取得する。ｐＸ及びｐＹは「０」である。また、式（１）においてｆ（ｔ）＝ｔ２であるとすると、ｐＺは、−ｚ１１２＊（１／４０００）２となる。ｚ１１２が正の値であれば、ｐＺは負の値になり、ｚ１１２が負の値であれば、ｐＺは正の値になるため、第一パラメータの方向は、常に、第一の面であるｘｙ平面に垂直に近づく方向となる。
【０１６９】
次に、第二取得手段１０３２は、図７に示したノード配置管理表から、ノード識別子「０１２」以外の一番目のノード識別子を取得する。ここでは、図７に示したノード配置管理表の二行目のノード識別子「０１３」を取得する。
【０１７０】
第二取得手段１０３２は、ノード「０１３」の「座標」である（ｘ１１３，ｙ１１３，ｚ１１３）と、ノード「０１２」の「座標」である（ｘ１１２，ｙ１１２，ｚ１１２）とを取得する。そして、取得した座標を、各ノードの位置ベクトルと考えて、ノード「０１３」の位置ベクトルである座標から、ノード「０１２」の位置ベクトルである座標を減算する。そして、減算により得られたベクトル（ｘ１１３−ｘ１１２，ｙ１１３−ｙ１１２，ｚ１１３−ｚ１１２）の成分を、上述した式（２）に代入して、ノード「０１３」とノード「０１２」との間の距離ｌｅｎを算出する。そして、算出したｌｅｎと上記で算出したベクトルを式（３）に代入してパラメータ（ｑｘ、ｑｙ、ｑｚ）を取得する。このパラメータは、第二パラメータを取得するためのパラメータと考えてもよい。そして、ここで取得したパラメータが、ノード識別子「０１２」以外の一番目のノードについて取得したパラメータであるから、第二取得手段１０３２は、取得したパラメータを図示しない格納部に一時記憶する。
【０１７１】
更に、第二取得手段１０３２は、図７に示したノード配置管理表から、ノード識別子「０１２」以外の二番目のノード識別子を取得する。ここでは、図７に示したノード配置管理表の三行目のノード識別子「０１４」を取得する。そして、第二取得手段１０３２は、上記と同様に、このノード「０１４」とノード「０１２」との距離等を用いて、ノード「０１２」のパラメータ（ｑｘ、ｑｙ、ｑｚ）を算出する。そして、取得したパラメータを、上述した式（４）に示すように、上記でノード「０１２」に関して取得したパラメータと合成し、図示しない格納部に蓄積する。
【０１７２】
同様に、第二取得手段１０３２は、ノード識別子「０１２」以外の３番目以降の各ノード識別子についても、上記と同様のパラメータを順次算出し、算出したパラメータを、直前に合成したパラメータに順次合成していく。そして、図７に示したノード配置管理表のノード識別子「０１２」以外の全てノードについて、パラメータを取得して合成する処理を終えた時点で格納されている合成されたパラメータ（ｑＸ、ｑＹ、ｑＺ）が、第二パラメータとなる。
【０１７３】
次に、第三取得手段１０３３は、図７に示したノード配置管理表から、ノード識別子「０１２」以外の一番目のノード識別子を取得する。ここでは、図７に示したノード配置管理表の二行目のノード識別子「０１３」を取得する。
【０１７４】
さらに、第三取得手段１０３３は、このノード「０１３」が、ノード「０１２」と接続されているノードであるか否かを判断するために、図６に示したノード間情報管理表において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が「０１３」であるレコード（行）があるか否かを判断する。
【０１７５】
ここでは、このようなレコードが検出されなかったとすると、このノード「０１３」に関しては、第三パラメータを取得するために用いられるパラメータの取得は行なわない。
【０１７６】
次に、第三取得手段１０３３は、図７に示したノード配置管理表から、ノード識別子「０１２」以外の二番目のノード識別子を取得する。ここでは、図７に示したノード配置管理表の三行目のノード識別子「０１４」を取得する。そして、上記と同様に、図６に示したノード間情報管理表において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が「０１４」であるレコード（行）があるか否かを判断する。
【０１７７】
ここでは、図６に示したノード間情報管理表において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が「０１４」であるレコード（行）が存在したとすると、第三取得手段１０３３は、ノード「０１４」の「座標」である（ｘ１１４，ｙ１１４，ｚ１１４）と、ノード「０１２」の「座標」である（ｘ１１２，ｙ１１２，ｚ１１２）とを取得する。そして、取得した座標を、各ノードの位置ベクトルと考えて、ノード「０１４」の位置ベクトルである座標から、ノード「０１２」の位置ベクトルである座標を減算する。そして、減算により得られたベクトルの成分を、上述した式（２）に代入して、ノード「０１４」とノード「０１２」との間の距離ｌｅｎを算出する。そして、算出したｌｅｎと上記で算出したベクトルを式（５）に代入してパラメータ（ｓｘ、ｓｙ、ｓｚ）を取得する。このパラメータは、第三パラメータを取得するためのパラメータと考えてもよい。そして、ここで取得したパラメータが、ノード識別子「０１２」以外のノードについて一番目に取得したパラメータであるから、第三取得手段１０３３は、取得したパラメータを図示しない格納部に一時記憶する。
【０１７８】
更に、第三取得手段１０３３は、図７に示したノード配置管理表から、ノード識別子「０１２」以外の三番目のノード識別子を取得する。ここでは、図７に示したノード配置管理表の四行目のノード識別子「０１５」を取得する。そして、第二取得手段１０３２は、上記と同様に、図８に示したノード間情報において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が「０１５」であるレコード（行）があるか否かを判断する。ここでは、このようなレコードが検出されなかったとすると、このノード「０１５」に関しては、第三パラメータを取得するために用いられるパラメータの取得は行なわない。
【０１７９】
次に、第三取得手段１０３３は、ノード識別子「０１２」以外の４番目のノード識別子「０１６」について、同様の判断処理を行う。ここでは、図６に示したノード間情報管理表において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が「０１６」であるレコード（行）が存在したとすると、第三取得手段１０３３は、上記と同様に、第三パラメータを取得するために用いられるパラメータを取得する。そして、取得したパラメータを、上述した式（６）に示すように、上記でノード「０１２」に関して取得したパラメータと合成し、図示しない格納部に蓄積する。
【０１８０】
同様に、第三取得手段１０３３は、ノード識別子「０１２」以外の５番目以降の各ノード識別子についても、図６に示したノード間情報において、「ノードＩＤ」が「０１２」であり、「接続ノードＩＤ」が取得したノード識別子であるレコード（行）が存在するか否かを判断し、存在するものについては、上記と同様のパラメータを順次算出し、算出したパラメータを、直前に合成したパラメータに順次合成していく。そして、図７に示したノード配置管理表のノード識別子「０１２」以外の全てノードについて、パラメータを取得して合成する処理を終えた時点で格納されている合成されたパラメータ（ｓＸ、ｓＹ、ｓＺ）が、第三パラメータとなる。
【０１８１】
移動情報取得手段１０３４は、第一取得手段１０３１、第二取得手段１０３２、及び第三取得手段１０３３が各ノードについて取得した第一パラメータ、第二パラメータ、及び第三パラメータを、上述した式（７）に代入して、合成したパラメータ（ｆＸ、ｆＹ、ｆＺ）を取得し、更に、この合成したパラメータを、上記の式（８）に代入することで、移動情報（ｍｖＸ、ｍｖＹ、ｍｖＺ）を取得する。
【０１８２】
移動手段１０３５は、この移動情報と、ノード「０１２」の座標とを用いて、仮想三次元空間には位置されたノード「０１２」の位置を移動させる。具体的には、上記の式（９）に、移動情報と、現在のノード「０１２」の座標とを代入して、移動後のノード「０１２」の座標を取得する。取得した移動後の座標が（ｘ２１２，ｙ２１２，ｚ２１２）であったとすると、移動手段１０３５は、取得した移動後の座標を、ノードＩＤ「０１２」と対応づけて、図示しない格納部等に一時記憶する。
【０１８３】
第一取得手段１０３１、第二取得手段１０３２、第三取得手段１０３３、移動情報取得手段１０３４、及び移動手段１０３５は、上記と同様の処理を、図７に示したノード配置管理表の二番目以降のノードについても順次行って、各ノードについて移動後の座標を取得し、ノード識別子と対応づけて図示しない格納部に一時記憶していく。そして、図７に示したノード配置管理表の全てのノードについて移動後の座標を取得した時点で、図７に示したノード配置管理表の全てのノードの「座標」の値を移動後の座標で更新する。例えば、上書きする。
【０１８４】
図９は、更新後のノード配置管理表を示す図である。
【０１８５】
そして、移動手段１０３５は、予め指定された終了条件を満たすか否かを判断する。ここでは、上述したカウンターの値が「４０００」以上となったか否かを判断する。ここでは、カウンターの値が「１」であり、「４０００」を超えていないため、終了条件を満たさないと判断する。そして、カウンターの値を１インクメントして上記の移動処理を繰り返す。
【０１８６】
ここで、上記の移動処理を繰り返し行ったことにより、カウンターの値が「４０００」になったとすると、移動手段１０３５は、終了条件を満たすと判断する。この時点で、各ノードの座標は、ｘｙ平面に近い位置に分布している。また、接続されているノード同士は近くに配置され、接続されていないノード同士は離れて配置される。
【０１８７】
このため、表示用情報生成部１０４は、最終的に得られたノード配置管理表の各ノードの座標を、ｚ軸に平行にｘｙ平面に投影して、各ノードに対応するｘｙ平面の座標を取得し、各ノードに対応する座標に、予め指定された円形の図形と、図６のノード間情報管理情報から取得した各ノードのノード識別子に対応づけられた「部品名」とを配置したノード接続画像の画像データを表示用情報として生成する。このノード接続画像は、接続されているノード間、即ち、図６のノード間情報管理情報において、同じレコードの「ノードＩＤ」と「接続ノードＩＤ」とがそれぞれ示すノード間を、矢印を有する線で接続した画像であるとする。その矢印の向きは、図６のノード間情報管理情報の「伝達熱量」の符号で決定され、符号が正であれば、熱が、「ノードＩＤ」が示すノードに対応する部品に向けて伝達されていることを示すことから、矢印の矢じりが、「ノードＩＤ」が示すノード側に設けられ、符号が負であれば、矢印の矢じりが、「接続ノードＩＤ」が示すノード側に設けられる。また、線の太さは、伝達熱量の値の絶対値に比例した太さに設定される。
【０１８８】
出力部１０５は、表示用情報生成部１０４が生成した表示用情報を出力する。ここでは、出力部１０５は、図示しないモニタを用いて、表示用情報生成部１０４が生成した表示用情報が示すノード接続画像を表示する。
【０１８９】
図１０は、出力部１０５によるノード接続画像の表示例を示す図である。
【０１９０】
なお、この具体例においては、他のノードとの接続数が最も多い「ノードＩＤ」が「０１１」であるノードだけをノード配置部１０２が仮想三次元空間に配置しないようにしたが、例えば、接続されているノード数が、閾値以上であるノードを配置しないようにしてもよい。また、例えば、ユーザが指定したノード以外のノードだけを仮想三次元空間に配置するようにしてもよい。そして、配置されたノードだけで上記のような処理を行ってノード接続画像の表示用情報を生成するようにしてもよい。
【０１９１】
例えば、ユーザが図示しない入力デバイス等を用いて「ノードＩＤ」が「０１７」であるノードを、ノード接続画像に配置するノードの対象から除外する指示を与えたとすると、このノード「０１７」を除いたノードについて、上記のようなノードを配置する処理や、ノードを移動させる処理の繰り返しが行われることによって作成されたノード接続画像が出力されることとなる。
【０１９２】
図１１は、「ノードＩＤ」が「０１７」であるノードを仮想三次元空間に配置せずに作成されたノード接続画像の表示例を示す図である。図に示すように「ノードＩＤ」が「０１７」であるノードに対応するノード、即ち「部品名」が「ｇ」であるノードが配置されていないノード接続画像が表示されていることがわかる。
【０１９３】
（具体例２）
図１４は、上述した式（８）の係数ｄｔの値を異なる値に設定して、ノードに対して上述した具体例と同様の移動の処理をそれぞれ行った場合における、出力部１０５が出力するノード接続画像を示す図（図１４（ａ）−図１４（ｅ））である。図１４（ａ）−図１４（ｅ）は、それぞれ、係数ｄｔの値を、「０．００００５」、「０．０００５」、「０．００５」、「０．０５」、「０．５」として、その他の条件を同じとした場合に得られるノード接続画像である。ここでは、上述した移動処理の繰り返し回数は、５０００回としている。また、ここで用いたノードは、具体例１のノードとは異なるノードであるとする。なお、ここでは、係数ｄｔを「５．０」とした場合にいても同様の処理を行ったが、この場合においては、各ノードの移動量の差が大きくなり、移動によってノードが仮想三次元空間内に発散してしまい、ノード接続画像が得られなかったため、この場合の図は図示していない。
【０１９４】
図１４からは、ノードが重ならず、なおかつノード間の接続関係が明確に判断できるようなノード接続画像を得るためには、係数ｄｔが、「０．００５」から「０．５」までの範囲、好ましくは、「０．０５」とすればよいことがわかる。ただし、これは、処理の繰り返し回数が５０００回である場合の例であり、処理の繰り返し回数をこれよりも多くする場合、「０．０００５」未満の値でも利用可能である。
【０１９５】
以上、本実施の形態によれば、仮想三次元空間に配置した各ノード間の配置関係と、接続されている各ノード間の配置関係と、予め指定された第一の面と各ノード間の配置関係とに応じて、各ノードを移動させる処理を、１または２回以上繰り返すことによって決定した位置にノードを配置するようにしたことにより、複数のノードを適切にかつ容易に配置することができる。
【０１９６】
例えば、本実施の形態においては、仮想三次元空間にランダムに配置したノードについて、予め指定された第一の面の近傍に配置されるように、各ノードを第一の面に近づくように移動させ、ノード間の距離が近いノードは、距離が離れるように移動させ、ノード間が接続されているノードについては、第一の距離に近づくまでは距離が近づくように移動させることにより、接続されたノード間は、互いに近い位置に配置され、接続されていないノード間は、互いに離れた位置に配置されるようにするとともに、各ノードを平面に近い位置に配置することが可能となり、ノードをノード間の関係が把握しやすくなるよう配置することができる。
【０１９７】
さらに、これらの処理を複数回、繰り返すようにして、ノードを段階的に少しずつ移動させることにより、例えば、ノード間のリンク、即ち接続部分が交差することを防ぐことや、ノードが第一の面に平行な方向において、極端に分散して配置されることを防ぐことができる。
【０１９８】
なお、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１９９】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりする情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
【０２００】
また、上記各実施の形態では、ノード配置装置がスタンドアロンである場合について説明したが、ノード配置装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
【０２０１】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部（例えば、ハードディスクやメモリ等の記録媒体）にアクセスしながらプログラムを実行してもよい。
【０２０２】
なお、上記各実施の形態におけるノード配置装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、複数のノード間の接続関係を示す情報であって、複数のノードの識別子であるノード識別子を有する情報であるノード間情報が格納されるノード間情報格納部にアクセス可能なコンピュータを、ノード間情報が示すノードを仮想三次元空間に配置するノード配置部と、仮想三次元空間に配置された各ノードの予め指定された第一の面に対する配置関係と、仮想三次元空間に配置された各ノードと仮想三次元空間に配置された他のノードとの配置関係と、仮想三次元空間に配置された各ノードとノード間情報により対応づけられている仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動部と、仮想三次元空間に配置されたノードを、平面に投影した画像であって、ノード間情報で対応づけられたノード間を接続した画像であるノード接続画像を表示するための表示用情報を生成する表示用情報生成部と、表示用情報生成部が生成した表示用情報を出力する出力部として機能させ、ノード移動部は、各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返し、表示用情報生成部は、ノード移動部が移動を繰り返した後のノードについて表示用情報を生成するプログラムである。
【０２０３】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
【０２０４】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０２０５】
図１２は、上記プログラムを実行して、上記実施の形態によるノード配置装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０２０６】
図１２において、コンピュータシステム９００は、光学ドライブ９０５を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０２０７】
図１３は、コンピュータシステム９００の内部構成を示す図である。図１３において、コンピュータ９０１は、光学ドライブ９０５に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮへの接続を提供する図示しないネットワークカードを含んでいてもよい。
【０２０８】
コンピュータシステム９００に、上記実施の形態によるノード配置装置等の機能を実行させるプログラムは、光ディスク９２１に記憶されて、光学ドライブ９０５に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、光ディスク９２１、またはネットワークから直接、ロードされてもよい。
【０２０９】
プログラムは、コンピュータ９０１に、上記実施の形態によるノード配置装置の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【０２１０】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０２１１】
以上のように、本発明にかかるノード配置装置等は、複数ノードを配置する装置等として適しており、特に、複数のノード間を接続した画像を表示するための情報を生成する装置等として有用である。
【符号の説明】
【０２１２】
１  ノード配置装置
１０１  ノード間情報格納部
１０２  ノード配置部
１０３  ノード移動部
１０４  表示用情報生成部
１０５  出力部
１０３１  第一取得手段
１０３２  第二取得手段
１０３３  第三取得手段
１０３４  移動情報取得手段
１０３５  移動手段
【要約】
【課題】複数のノードを適切にかつ容易に配置できるノード配置装置を提供する。
【解決手段】ノード間情報格納部１０１に格納されたノード間情報が示すノードを仮想三次元空間に配置するノード配置部１０２と、配置された各ノードと第一の面に対する配置関係と、仮想三次元空間に配置された他のノードとの配置関係と、ノード間情報により対応づけられている仮想三次元空間に配置された他の１以上のノードとの配置関係と、により決定される各ノードの移動量及び移動方向を用いて、各ノードを移動させるノード移動部１０３と、ノードを投影したノード間を接続したノード接続画像の表示用情報を生成する表示用情報生成部１０４と、表示用情報を出力する出力部１０５とを備え、ノード移動部１０３は、各ノードを移動させる処理を予め指定された条件を満たすまで１回以上繰り返すようにした。
【選択図】図１【図１】
0005427978.tif 000011
【図２】
0005427978.tif 000012
【図３】
0005427978.tif 000013
【図４】
0005427978.tif 000014
【図５】
0005427978.tif 000015
【図６】
0005427978.tif 000016
【図７】
0005427978.tif 000017
【図８】
0005427978.tif 000018
【図９】
0005427978.tif 000019
【図１０】
0005427978.tif 000020
【図１１】
0005427978.tif 000021
【図１２】
0005427978.tif 000022
【図１３】
0005427978.tif 000023
【図１４】
0005427978.tif 000024