(57)【特許請求の範囲】
【請求項１】
拡散場における複数のパーティクルを可視化する可視化処理プログラムであって、
コンピュータに、
前記複数のパーティクルのうち、パーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルのグループ分けを行わせ、
前記グループ分けされたグループの各々について、グループに属するパーティクルの間を結ぶ線分を含むグループ表示のデータを生成させ、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成させる
ことを特徴とする可視化処理プログラム。
【請求項２】
前記グループ表示のデータを生成させる処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの位置のデータを用いて、第１の軸方向におけるグループの位置を特定させ、
前記グループの位置に応じて、グループ表示の色を決定させる
ことを特徴とする請求項１記載の可視化処理プログラム。
【請求項３】
前記可視化処理プログラムはさらに、
前記コンピュータに、
前記グループ分けされたグループの各々について、グループに属するパーティクルのうち、グループに属するパーティクルの位置の平均に最も近いパーティクルを特定させ、
前記特定されたパーティクルの位置から所定時間後の前記特定されたパーティクルの位置までの流線のデータを生成させ、前記生成された流線のデータを前記グループ表示のデータに付加させる
ことを特徴とする請求項１又は２記載の可視化処理プログラム。
【請求項４】
前記グループ表示のデータを生成させる処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの間を結ぶ線分を、ループを形成しないように、短い順に（Ｎ−１）（Ｎは当該グループに属するパーティクルの数）本接続させることにより、第１の構造のデータを生成させ、
前記第１の構造に含まれる線分の太さを太くさせ、前記第１の構造に含まれる凹み部分を平滑化させることにより、前記グループ表示のデータを生成させる
ことを特徴とする請求項１乃至３のいずれか１つ記載の可視化処理プログラム。
【請求項５】
前記グループ表示のデータを生成させる処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの位置のデータを用いて、最小二乗法に基づいた直線を特定させ、
前記特定された直線とグループに属するパーティクルとの位置関係に基づき、グループに属するパーティクルを第１のグループと第２のグループとにグループ分けさせ、
前記第１のグループに属する各パーティクルから前記直線に引いた垂線が前記直線と交わる点の位置を特定させ、
各々から引かれた垂線が前記直線と交わる点の位置が隣り合っているパーティクルの間を線分で接続させることにより、第２の構造のデータを生成させ、
前記第２のグループに属する各パーティクルから前記直線に引いた垂線が前記直線と交わる点の位置を特定させ、
各々から引かれた垂線が前記直線と交わる点の位置が隣り合っているパーティクルの間を線分で接続させることにより、第３の構造のデータを生成させ、
前記第２の構造における端と前記第３の構造における端との間を線分で接続させることにより、第４の構造のデータを生成させ、
前記第４の構造の凹み部分を平滑化させることにより、前記グループ表示のデータを生成させる
ことを特徴とする請求項１乃至３のいずれか１つ記載の可視化処理プログラム。
【請求項６】
拡散場における複数のパーティクルを可視化する可視化処理方法であって、
コンピュータが、
前記複数のパーティクルのうち、各パーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルをグループ分けし、
前記グループ分けされたグループの各々について、グループに属するパーティクルの間を結ぶ線分を含むグループ表示のデータを生成し、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成する
ことを特徴とする可視化処理方法。
【請求項７】
拡散場における複数のパーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルをグループ分けするグルーピング部と、
前記グループ分けされたグループの各々について、グループに属するパーティクルの間を結ぶ線分を含むグループ表示のデータを生成するグループ表示生成部と、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成する表示データ生成部と、
を有することを特徴とする可視化処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、可視化処理プログラム、可視化処理方法及び可視化処理装置に関する。
【背景技術】
【０００２】
流体等の物体の速度場を可視化する手法として、パーティクルや流線等のオブジェクトを用いて物体の流れを可視化する手法（以下、パーティクルフローと呼ぶ）が存在する。図１及び図２は、パーティクルフローによって可視化された流れの一例である。図１は、層流を表現するパーティクルを表した図であり、図２は、乱流を表現するパーティクルを表した図である。ここでは、パーティクルは拡散の影響を受けるものとし、点線で示されたパーティクルは１計算ステップ前におけるパーティクルの位置を表し、通常の線で示されたパーティクルは現計算ステップにおけるパーティクルの位置を表す。１計算ステップ前における各パーティクルには流線が付されているため、各パーティクルが動く方向を容易に把握できるようになっている。なお、図２は主要な流れの方向に近い方向に動くパーティクルのみ表示している。
【０００３】
ところで、近年では計算機の演算性能が向上しているため、多数のオブジェクトを表示することにより、流れを詳細に可視化することが可能になっている。しかし、オブジェクトを多数表示すると、特定の領域にオブジェクトが集中し、かえって流れの状況を把握しにくくなることがある。例えば図１のように単純な層流の場合であれば問題が無い場合もあるが、図２のように複雑な構造を有する乱流の場合には、オブジェクトが集中する領域におけるパーティクルの動きを把握することは非常に難しい。
【０００４】
特に、拡散場における煙や粉等の動きをシミュレーションしたり、工業製品の設計において空力特性をシミュレーションする場合には、流脈線（streak line）表示を用いて、時間の経過に伴って１対多で増加していく多数のパーティクルを表示することがある。このような場合には、オブジェクトを多数表示することによって、動きを追跡しているパーティクルに他のパーティクルが重なって見えにくくなったり、さらには見失ってしまうこともある。
【０００５】
従来、被混合物の流路内に仮想粒子を配置し、流れの速度場のデータである流速場データをもとに仮想粒子の位置における流速と微小単位時間後の変位とを繰り返し計算し、仮想粒子の流跡線のデータを求める技術が存在する。しかし、このような技術では、流れが複雑な構造を有する場合には、流跡線が重なってしまうこと等により、仮想粒子の動きを把握するのが難しいことがある。
【０００６】
また、楕円体や車等の物体の周りに発生する流れを、色付け等を行うことにより容易に把握できるようにする可視化手法が存在している。しかし、このような可視化によっても、流れの構造が複雑な場合には誤認識を起こしてしまうことがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２１１７４４号公報
【非特許文献】
【０００８】
【非特許文献１】Generation of Accurate Integral Surfaces in Time-Dependent Vector Fields, Christoph Garth et al., IEEE Trans. on visualization and computer graphics vol.14 No.6 2008
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本技術の目的は、一側面においては、拡散場におけるパーティクルの動きを容易に把握できるようにするための技術を提供することである。
【課題を解決するための手段】
【００１０】
本技術の一側面に係る可視化処理方法は、コンピュータが、（Ａ）複数のパーティクルのうち、各パーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つパーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、複数のパーティクルをグループ分けし、（Ｂ）グループ分けされたグループの各々について、グループに属するパーティクルについてのグループの表示データを生成し、（Ｃ）グループに属するパーティクルを表示するパーティクル表示データにグループ表示のデータを付加した表示データを生成することを特徴とする。
【発明の効果】
【００１１】
拡散場におけるパーティクルの動きを容易に把握できるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、パーティクルフローによって表示された流れの一例を示す図である。
【図２】図２は、パーティクルフローによって表示された流れの一例を示す図である。
【図３】図３は、本実施の形態における情報処理装置の機能ブロック図を示す図である。
【図４】図４は、メインの処理フローを示す図である。
【図５】図５は、速度データ格納部に格納されているデータの一例を示す図である。
【図６】図６は、メインの処理フローを示す図である。
【図７】図７は、パーティクルテーブル格納部に格納されているデータの一例を示す図である。
【図８】図８は、第１の実施の形態における群表示生成処理の処理フローを示す図である。
【図９】図９は、第１の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図１０】図１０は、第１の実施の形態における群表示生成処理の処理フローを示す図である。
【図１１】図１１は、第１の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図１２】図１２は、スケルトン構造の一例を示す図である。
【図１３】図１３は、スケルトン構造の生成手順を説明するための図である。
【図１４】図１４は、スケルトン構造の生成手順を説明するための図である。
【図１５】図１５は、スケルトン構造の生成手順を説明するための図である。
【図１６】図１６は、第１の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図１７】図１７は、スケルトン構造の生成手順を説明するための図である。
【図１８】図１８は、第１の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図１９】図１９は、第１の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図２０】図２０は、スケルトン構造について説明するための図である。
【図２１】図２１は、第１の実施の形態における群表示生成処理の処理フローを示す図である。
【図２２】図２２は、群表示の生成方法について説明するための図である。
【図２３】図２３は、群表示の生成方法について説明するための図である。
【図２４】図２４は、群表示の色付けについて説明するための図である。
【図２５】図２５は、群表示の色付けについて説明するための図である。
【図２６】図２６は、群表示の表示例を示す図である。
【図２７】図２７は、群表示の表示例を示す図である。
【図２８】図２８は、流線描画処理の処理フローを示す図である。
【図２９】図２９は、流線の表示例を示す図である。
【図３０】図３０は、流線の表示例を示す図である。
【図３１】図３１は、パーティクルフローによって表示された流れの一例を示す図である。
【図３２】図３２は、パーティクルフローによって表示された流れの一例を示す図である。
【図３３】図３３は、群表示が付された流れの一例を示す図である。
【図３４】図３４は、群表示が付された流れの一例を示す図である。
【図３５】図３５は、第２の実施の形態における群表示生成処理の処理フローを示す図である。
【図３６】図３６は、最小自乗法によって求められた直線を示す図である。
【図３７】図３７は、群表示の生成手順を説明するための図である。
【図３８】図３８は、第２の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図３９】図３９は、第２の実施の形態における群表示生成処理の処理フローを示す図である。
【図４０】図４０は、第２の実施の形態における群化テーブルに格納されているデータの一例を示す図である。
【図４１】図４１は、群表示の生成手順を説明するための図である。
【図４２】図４２は、群表示の生成手順を説明するための図である。
【図４３】図４３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
［実施の形態１］
図３に、第１の実施の形態に係る情報処理装置１の機能ブロック図を示す。情報処理装置１は、入力部１０１と、描画オブジェクト格納部１０２と、パーティクルフロー生成部１０３と、第１描画データ格納部１０４と、シミュレーション結果格納部１０５と、速度算出部１０６と、速度データ格納部１０７と、群表示生成部１０８と、第２描画データ格納部１１５と、描画処理部１１６と、第３描画データ格納部１１７と、グラフィックス処理部１１８と、表示部１１９とを含む。また、群表示生成部１０８は、群化処理部１０９と、オブジェクト生成部１１０と、流線生成部１１１と、色付け処理部１１２と、群化テーブル格納部１１３と、パーティクルテーブル格納部１１４とを含む。
【００１４】
入力部１０１は、情報処理装置１のユーザから可視化の指示を受け付けると、パーティクルフロー生成部１０３に可視化処理の要求を行う。速度算出部１０６は、シミュレーション結果格納部１０５に格納されているシミュレーションデータを用いて速度場データ（例えば、３次元におけるパーティクルの速度のデータ）を計算し、計算した速度場データを速度データ格納部１０７に格納する。パーティクルフロー生成部１０３は、シミュレーション結果格納部１０５に格納されているシミュレーションデータ、描画オブジェクト格納部１０２に格納されている描画オブジェクトデータ及び速度データ格納部１０７に格納されている速度場データを用いて、パーティクルフローによって流れを表示するための描画データを生成し、第１描画データ格納部１０４に格納する。群化処理部１０９は、速度データ格納部１０７に格納されている速度場データを用いてパーティクルの群化処理を行い、群化処理の結果である群化データを群化テーブル格納部１１３に格納する。オブジェクト生成部１１０は、群化テーブル格納部１１３に格納されている群化データ及びパーティクルテーブル格納部１１４に格納されているパーティクルテーブルのデータを用いて群表示のデータを生成する処理を行い、生成した群表示のデータを第２描画データ格納部１１５に格納する。流線生成部１１１は、オブジェクト生成部１１０によって生成された群表示の流線を生成する処理を行う。色付け処理部１１２は、オブジェクト生成部１１０によって生成された群表示に色付けする処理を行う。描画処理部１１６は、第１描画データ格納部１０４に格納されている描画データ及び第２描画データ格納部１１５に格納されている群表示の描画データを用いて処理を行い、処理結果である表示データを第３描画データ格納部１１７に格納する。グラフィックス処理部１１８は、第３描画データ格納部１１７に格納されているデータを表示するための周知の処理を行う。表示部１１９は、グラフィックス処理部１１８の処理結果を表示する。
【００１５】
次に、図４乃至図３４を用いて、図３に示した情報処理装置１の動作について説明する。なお、シミュレーション結果格納部１０５には、拡散方程式等を用いて計算された、拡散場におけるパーティクルの位置に関するシミュレーション結果が格納されているとする。本実施の形態では、時刻ｔ＝０から時刻ｔ＝Ｎ（Ｎは予め定められた自然数）までについてのシミュレーション結果が格納されているとする。また、計算はシミュレータ（図示しない）によって行われ、その結果がシミュレーション結果格納部１０５に格納されているとする。なお、以下ではｔ及びｇは０以上の整数、ｍ及びｎは自然数であるとする。
【００１６】
まず、速度算出部１０６は、例えばユーザからの指示に応じて、シミュレーション結果格納部１０５に格納されているデータを用いて速度場を計算し、計算結果である速度場データを速度データ格納部１０７に格納する（図４：ステップＳ１）。
【００１７】
図５に、速度データ格納部１０７に格納されている速度場データの一例を示す。図５の例では、パーティクル番号と、パーティクルのｘ軸方向の位置と、パーティクルのｙ軸方向の位置と、パーティクルのｚ軸方向の位置と、パーティクルのｘ軸方向の速度と、パーティクルのｙ軸方向の速度と、パーティクルのｚ軸方向の速度とが格納されている。このような、各パーティクルについての位置及び速度を含む速度場のデータが、各時刻（ｔ＝０乃至Ｎ）について格納されている。
【００１８】
そして、群表示生成部１０８における群化処理部１０９は、時刻ｔの初期値を０に設定し（ステップＳ３）、また群番号ｇの初期値を０に設定する（ステップＳ５）。
【００１９】
群化処理部１０９は、パーティクル番号ｎを１に設定する（ステップＳ７）。そして、ｍ≧２且つｍ＞ｎを満たす最小の自然数を特定し、特定された自然数をパーティクル番号ｍに設定する（ステップＳ９）。
【００２０】
そして、群化処理部１０９は、速度データ格納部１０７に格納されている位置のデータを用いて、時刻ｔにおける２つのパーティクル（ここでは、パーティクルｍとパーティクルｎ）の位置の差（すなわち距離）Δｐを計算し、メインメモリ等の記憶装置（図示しない）に格納する（ステップＳ１１）。
【００２１】
そして、群化処理部１０９は、ΔｐがΔｐ＜ｐｇを満たすか判断する（ステップＳ１３）。ここでｐｇは、予め設定された、距離についての基準値である。
【００２２】
Δｐ＜ｐｇを満たさないと判断された場合（ステップＳ１３：Ｎｏルート）、パーティクルｍはパーティクルｎと同じ群には属さないので、処理は端子Ａを介して図６のステップＳ２１に移行する。
【００２３】
一方、Δｐ＜ｐｇを満たすと判断された場合（ステップＳ１３：Ｙｅｓルート）、群化処理部１０９は、速度データ格納部１０７に格納されている速度のデータを用いて、時刻ｔにおけるパーティクルｍの速度ベクトルとパーティクルｎの速度ベクトルとの差ベクトルの絶対値Δｖを計算し、メインメモリ等の記憶装置（図示しない）に格納する（ステップＳ１５）。
【００２４】
そして、群化処理部１０９は、ΔｖがΔｖ＜ｖｇを満たすか判断する（ステップＳ１７）。ここでｖｇは、予め設定された、速度の大きさについての基準値である。なお、ステップＳ１５においては２つの速度ベクトルの差分の速度ベクトルを求め、求められた速度ベクトルの絶対値を計算している。そのため、２つの速度ベクトルの向きが大きく異なる場合には、２つの速度ベクトルの向きが近い場合と比べると、差分の速度ベクトルの絶対値が大きくなる。そのため、２つの速度ベクトルの向きが大きく異なる場合には、２つのパーティクルは異なる群に属すると判断される。
【００２５】
Δｖ＜ｖｇを満たさないと判断された場合（ステップＳ１７：Ｎｏルート）、パーティクルｍはパーティクルｎと同じ群には属さないので、処理は端子Ａを介して図６のステップＳ２１に移行する。
【００２６】
一方、Δｖ＜ｖｇを満たすと判断された場合（ステップＳ１７：Ｙｅｓルート）、パーティクルｍはパーティクルｎと同じ群に属するので、群化処理部１０９は、パーティクルテーブル格納部１１４に格納されているパーティクルテーブルにおいて、パーティクルｍ及びｎの群番号をｇに設定する（ステップＳ１９）。処理は端子Ａを介して図６のステップＳ２１に移行する。
【００２７】
図７に、パーティクルテーブル格納部１１４に格納されているパーティクルテーブルの一例を示す。図７の例では、パーティクル番号と、群番号と、流線フラグとが格納されている。流線フラグについては、後で説明する。
【００２８】
図６の説明に移行し、群化処理部１０９は、未処理のｍが有るか判断する（ステップＳ２１）。未処理のパーティクルｍが有ると判断された場合（ステップＳ２１：Ｙｅｓルート）、次のｍについて処理するため、群化処理部１０９は、ｍ＝ｍ＋１と設定する（ステップＳ２３）。そして処理は端子Ｂを介してステップＳ１１に戻る。
【００２９】
一方、未処理のｍが無いと判断された場合（ステップＳ２１：Ｎｏルート）、群化処理部１０９は、群を表す群番号ｇをｇ＝ｇ＋１と設定する（ステップＳ２５）。そして、未処理のｎが有るか判断する（ステップＳ２７）。
【００３０】
未処理のｎが有ると判断された場合（ステップＳ２７：Ｙｅｓルート）、次のｎについて処理するため、群化処理部１０９は、ｎ＝ｎ＋１と設定する（ステップＳ２９）。そして処理は端子Ｃを介してステップＳ９に戻る。
【００３１】
一方、未処理のｎが無いと判断された場合（ステップＳ２７：Ｎｏルート）、オブジェクト生成部１１０、流線生成部１１１及び色付け処理部１１２は、時刻ｔについて群表示生成処理を実施する（ステップＳ３１）。群表示生成処理については、図８乃至図３０を用いて説明する。
【００３２】
まず、オブジェクト生成部１１０は、群番号ｇを０に設定し（図８：ステップＳ４１）、またパーティクル番号ｎを１に設定する（ステップＳ４３）。そして、ｍ≧２且つｍ＞ｎを満たす最小の自然数を特定し、特定された自然数をパーティクル番号ｍに設定する（ステップＳ４５）。
【００３３】
そして、オブジェクト生成部１１０は、パーティクルテーブルをパーティクル番号ｍ及びｎで検索し、パーティクルｍ及びパーティクルｎの群番号がいずれもｇであるか判断する（ステップＳ４７）。すなわち、パーティクルｍ及びパーティクルｎが同じ群に属するかを判断する。
【００３４】
パーティクルｍ及びパーティクルｎの群番号のうちいずれかがｇではないと判断された場合（ステップＳ４７：Ｎｏルート）、ステップＳ５１の処理に移行する。
【００３５】
一方、パーティクルｍ及びパーティクルｎの群番号がいずれもｇであると判断された場合（ステップＳ４７：Ｙｅｓルート）、オブジェクト生成部１１０は、速度データ格納部１０７に格納されている位置のデータを用いて、時刻ｔにおけるパーティクルｍとパーティクルｎとを結ぶ線分の長さ、つまりパーティクル間の距離を算出し、群化テーブル格納部１１３に格納する（ステップＳ４９）。
【００３６】
図９に、群化テーブル格納部１１３に格納されている群化テーブルの一例を示す。図９の例では、パーティクルを結ぶ線分の識別子と、線分の両端にあるパーティクルの番号と、線分の長さと、通過フラグとが格納されている。通過フラグについては後で説明する。なお、このような群化テーブルは、各群について生成される。
【００３７】
そして、オブジェクト生成部１１０は、未処理のｍが有るか判断する（ステップＳ５１）。未処理のｍが有ると判断された場合（ステップＳ５１：Ｙｅｓルート）、次のｍについて処理するため、群化処理部１０９は、ｍ＝ｍ＋１と設定する（ステップＳ５３）。そしてステップＳ４７の処理に戻る。
【００３８】
一方、未処理のｍが無いと判断された場合（ステップＳ５１：Ｎｏルート）、オブジェクト生成部１１０は、未処理のｎが有るか判断する（ステップＳ５５）。未処理のｎが有ると判断された場合（ステップＳ５５：Ｙｅｓルート）、次のｎについて処理するため、オブジェクト生成部１１０は、ｎ＝ｎ＋１と設定する（ステップＳ５７）。そしてステップＳ４５の処理に戻る。
【００３９】
一方、未処理のｎが無いと判断された場合（ステップＳ５５：Ｎｏルート）、処理は端子Ｆを介して図１０のステップＳ５９に移行する。
【００４０】
図１０の説明に移行し、オブジェクト生成部１１０は、群番号ｇの群について、群化テーブルのデータを線分の長さでソートする（ステップＳ５９）。例えば図９に示した群化テーブルのデータをソートすると、図１１に示すような状態の群化テーブルとなる。
【００４１】
そして、オブジェクト生成部１１０は、スケルトン構造に利用するか判定する処理が未だ行われていない線分のうち、長さが最も短い線分を特定する（ステップＳ６１）。また、オブジェクト生成部１１０は、特定された線分を、生成途中のスケルトン構造（スケルトン構造については、後で詳細に説明する）に追加することによって当該構造内にループが形成されるか判断する（ステップＳ６３）。線分を追加することによってループが形成されるか否かの判断については後述する。
【００４２】
ループが形成されると判断された場合（ステップＳ６３：Ｙｅｓルート）、オブジェクト生成部１１０は、処理対象の線分のデータを群化テーブルから削除する（ステップＳ６４）。そして、次の線分について処理するため、ステップＳ６１の処理に戻る。
【００４３】
一方、ループが形成されないと判断された場合（ステップＳ６３：Ｎｏルート）、オブジェクト生成部１１０は、特定された線分の描画データを生成し、記憶装置（図示しない）に格納する（ステップＳ６５）。
【００４４】
そして、オブジェクト生成部１１０は、描画データを生成した線分の本数が（Ｐｎー１）に達したか判断する（ステップＳ６７）。ここで、Ｐｎは群番号ｇの群に属するパーティクルの数とする。描画データを生成した線分の本数が（Ｐｎー１）に達していないと判断された場合（ステップＳ６７：Ｎｏルート）、次の線分について処理するため、ステップＳ６１の処理に戻る。
【００４５】
ここで、ステップＳ６１乃至Ｓ６７において行われる処理について、具体例を用いて説明する。ステップＳ６１乃至Ｓ６７の処理は、パーティクル間に線分を引いて、図１２に示すような構造（以下、スケルトン構造と呼ぶ）のデータを生成する処理である。なお、図１２及びその他の図面においては、説明の便宜上、スケルトン構造にパーティクルが含まれているが、本実施の形態におけるスケルトン構造には本来、線分は含まれるがパーティクルは含まれないものとする。
【００４６】
図１３に示すような、７つのパーティクルを含む群についてスケルトン構造を生成することを考える。ステップＳ６１乃至Ｓ６７の処理によれば、長さが短い線分から順に線分の描画データが生成されるので、図１３に示した群に対して処理を行うと、途中の段階で図１４に示すような構造が生成される。
【００４７】
そして、群化テーブルに図１１に示すようなデータが格納されている場合には、次に処理対象となる線分は、パーティクル１とパーティクル４とを結ぶ線分Ｌ３である。ステップＳ６３においては、生成途中のスケルトン構造への線分の追加によってループが形成されるかを判断するが、ここではパーティクル１、２及び４を相互に接続する線分によりループが形成されると判断される。この判断は、具体的には以下の方法によって行われる。
【００４８】
まず、追加しようとする線分Ｌ３の両端のパーティクル（パーティクル１及びパーティクル４）のうちいずれかのパーティクルを選択する。ここでは、パーティクル１を選択するものとする。そして、パーティクル１から始まる探索経路を考える。具体的には、群化テーブルのデータを用いて、パーティクル１を根とするｎ分木構造を生成する。
【００４９】
はじめに、既に描画データが生成された、パーティクル１とパーティクル２とを結ぶ線分Ｌ１と、今回追加する線分Ｌ３とによって図１５に示すような木構造を生成する。この段階において、群化テーブルには、例えば図１６に示すようなデータが格納される。図１６の例では、線分Ｌ１及び線分Ｌ３に通過フラグ「１」が対応付けられている。なお、通過フラグは、ｎ分木構造に含まれる線分を特定するためのデータである。
【００５０】
次に、ｎ分木構造の末端であるパーティクル２及び４について、既に描画データが生成された線分であるＬ８及びＬ７を特定し、ｎ分木構造に追加する。線分Ｌ８は、図１４においてパーティクル２とパーティクル４とを結ぶ線分であり、線分Ｌ７は、図１４においてパーティクル２とパーティクル３とを結ぶ線分である。この処理によって、図１７に示すような構造が生成される。この段階において、群化テーブルには、例えば図１８に示すようなデータが格納される。図１８の例では、図１７のｎ分木構造に含まれる線分に、通過フラグ「１」が対応付けられている。ここでは、新たに線分Ｌ７及び線分Ｌ８に通過フラグ「１」が対応付けられている。
【００５１】
ここで、図１７に示したｎ分木構造には、パーティクル２が２つ含まれている。これは、スケルトン構造にループが形成されたことを示している。従って、この段階において、スケルトン構造に線分Ｌ３を追加することはできないと判断され、線分Ｌ３のデータは群化テーブルから削除される。なお、ステップＳ６３の処理が終了すると、群化テーブルにおける通過フラグの列は初期化され、図１９に示すような状態になる。図１９は、線分Ｌ３のデータが削除された状態の群化テーブルを示している。そして、最終的には、図２０のようなスケルトン構造が生成される。
【００５２】
以上のように、パーティクル間をつなぐ線分を、ループが形成されないように、短いものから順につないでいくことにより、スケルトン構造を生成する。
【００５３】
図１０の説明に戻り、描画データを生成した線分の本数が（Ｐｎー１）に達したと判断された場合（ステップＳ６７：Ｙｅｓルート）、オブジェクト生成部１１０は、未処理の群が有るか判断する（ステップＳ６９）。未処理の群が有ると判断された場合（ステップＳ６９：Ｙｅｓルート）、次の群について処理するため、オブジェクト生成部１１０は、群番号ｇをｇ＝ｇ＋１と設定する（ステップＳ７１）。そして処理は端子Ｅを介してステップＳ４３に戻る。
【００５４】
一方、未処理の群が無いと判断された場合（ステップＳ６９：Ｎｏルート）、処理は端子Ｇを介して図２１のステップＳ７３に移行する。
【００５５】
図２１の説明に移行し、オブジェクト生成部１１０は、時刻ｔについて生成されたスケルトン構造に対する肉付け処理を実施し、処理結果を記憶装置（図示しない）に格納する（ステップＳ７３）。ステップＳ７３においては、モルフォロジ（morphology）処理（例えば、ダイレーション（dilation）処理）を実施する。このモルフォロジ処理はよく知られた処理であるので、ここでは説明を省略する。
【００５６】
例えば図１２に示したスケルトン構造に対してステップＳ７３の処理を実施すると、図２２に示すような構造が生成される。
【００５７】
そして、オブジェクト生成部１１０は、ステップＳ７３の処理によって生成された構造に対して凹み部分の補正及び角を丸める処理を行うことにより、群表示のデータを生成し、記憶装置（図示しない）に格納する（ステップＳ７５）。凹み部分の補正とは、肉付け処理された部分における窪み部分を、さらに肉付け処理する等して平滑化する処理である。角を丸める処理とは、例えば線分の端点であった部分等、尖った部分の周りに肉付け処理を行うなどして、尖った部分を無くす処理である。ステップＳ７５の処理を行うと、群表示は楕円体又は球体に近い形状になる。
【００５８】
例えば図２２に示した構造に対してステップＳ７５の処理を実施すると、図２３に示すような群表示が生成される。
【００５９】
色付け処理部１１２は、速度データ格納部１０７に格納されている位置のデータを用いて、時刻ｔにおける各群のｚ軸方向の位置を特定する（ステップＳ７６）。ここでは、群に属するパーティクルのｚ軸方向の座標値の平均を、群のｚ軸方向の位置の座標値であるとする。
【００６０】
そして、色付け処理部１１２は、ｚ軸方向における群の位置に応じて、群表示に対して色付け処理を実施し、処理結果を記憶装置（図示しない）に格納する（ステップＳ７７）。例えば図２４に示すように、ｚ軸方向の群の位置とカラースケール上の色とを対応付けることにより、各群の色を決定する。図２４の例では、群表示２４１の色は赤であり、群表示２４２の色は黄緑色であり、群表示２４３の色は青である。図２５は、図２４に示した座標空間を、図２４の上部に示した、ｚ座標が正の位置から原点に向かう視線方向から観察したものである。このように色付け処理を行うことによって、流れの三次元的な構造をより容易に把握できるようになる。
【００６１】
そして、流線生成部１１１は、流線描画処理を実施する（ステップＳ７９）。流線描画処理については後で説明する。そして元の処理に戻る。
【００６２】
以上のようにして、同一の群に含まれるパーティクルを覆う群表示を生成する。このような表示を用いれば、単純にパーティクルのみを表示するよりも、流れの状況を容易に把握できるようになる。
【００６３】
図２６に、ここまで説明した処理によって生成される群表示の一例を示す。図２６の例では、同一の群に属するパーティクルを覆う群表示が単一色で示されている。なお、図を見やすくするため、生成された群表示のうち一部の群表示のみを示している。また、視線の方向はｚ軸方向であるとする。
【００６４】
また、図２６に示した群表示に、さらにｚ軸方向の位置に応じて色付け処理を行ったものを図２７に示す。このような色付け処理を行うことにより、例えばｚ軸方向に一様な流れになっている場合においても、流れの三次元的な構造を適切に把握することができるようになる。
【００６５】
次に、図２８を用いて、流線描画処理（ステップＳ７９）について説明する。まず、流線生成部１１１は、パーティクルテーブルから未処理の群（以下、処理対象の群と呼ぶ）を１つ特定する（図２８：ステップＳ８１）。また、流線生成部１１１は、処理対象の群に含まれるパーティクルの平均位置Ｐａを、速度データ格納部１０７に格納されている位置のデータを用いて算出し、算出結果をメインメモリ等の記憶装置（図示しない）に格納する（ステップＳ８３）。
【００６６】
そして、流線生成部１１１は、処理対象の群の中から未処理のパーティクルを１つ特定する（ステップＳ８５）。また、ステップＳ８５において特定されたパーティクルと、ステップＳ８３において算出されたＰａとの距離を算出し、メインメモリ等の記憶装置（図示しない）に格納する（ステップＳ８７）。
【００６７】
そして、流線生成部１１１は、未処理のパーティクルが有るか判断する（ステップＳ８９）。未処理のパーティクルが有ると判断された場合（ステップＳ８９：Ｙｅｓルート）、次のパーティクルについて処理するため、ステップＳ８５の処理に戻る。
【００６８】
一方、未処理のパーティクルが無いと判断された場合（ステップＳ８９：Ｎｏルート）、流線生成部１１１は、処理対象の群に属するパーティクルのうち、ステップＳ８７において算出された距離が最短であるパーティクルについて、パーティクルテーブルにおける流線フラグの列に「１」を設定する（ステップＳ９１）。
【００６９】
そして、流線生成部１１１は、未処理の群が有るか判断する（ステップＳ９３）。未処理の群が有ると判断された場合（ステップＳ９３：Ｙｅｓルート）、次の群について処理するため、ステップＳ８１の処理に戻る。
【００７０】
一方、未処理の群が無いと判断された場合（ステップＳ９３：Ｎｏルート）、流線生成部１１１は、時刻ｔにおける各パーティクルについて、速度データ格納部１０７に格納されているデータを用いて時刻ｔからΔｔ秒後の位置を特定する（ステップＳ９５）。そして、流線生成部１１１は、時刻ｔにおける各パーティクルについて、時刻ｔにおける位置からΔｔ秒後の位置までの流線のデータを生成して群表示のデータに付加し、第２描画データ格納部１１５に格納する（ステップＳ９７）。なお、パーティクルテーブルにおいて流線フラグが「１」に設定されている代表パーティクルについては、流線の色を他のパーティクルの流線の色とは異なる色にする。そして元の処理に戻る。
【００７１】
図２９に、群表示に流線を付加した場合の表示例を示す。図２９の例では、群に属するパーティクルの各々に流線が付されており、特に主要な流れの方向に近い方向に動く代表パーティクルには他の流線とは異なる色の流線が付されている。これによって、群の大まかな移動方向を直感的に把握しやすくなる。なお、説明をわかりやすくするためパーティクルを表示しているが、群表示生成処理によって生成されるデータには、パーティクルを表示するためのデータは含まれない。
【００７２】
また、上では時刻ｔにおける各パーティクルについて生成した流線を、時刻ｔにおける各パーティクルに付加する例を示したが、時刻ｔ＋Δｔにおける各パーティクルに付加するようにしてもよい。この場合の表示例を図３０に示す。図３０のような表示を、図２９に示した表示の後に示すことで、時間の経過に伴う群の位置の推移をより容易に把握できるようになる。
【００７３】
以上のような処理を実施することで、群表示及び流線のデータが生成され、第２描画データ格納部１１５に格納される。
【００７４】
一方で、パーティクルフロー生成部１０３は、シミュレーション結果格納部１０５、描画オブジェクト格納部１０２及び速度データ格納部１０７に格納されているデータを用いて、パーティクルフローによって流れを表示するためのデータを生成する。そして、パーティクルフロー生成部１０３は、生成したデータを第１描画データ格納部１０４に格納する。
【００７５】
例えば、まず図１及び図２に示すような表示を行うためのデータを生成する。パーティクルフローによって流れを表示するためのデータを生成する方法はよく知られているので、詳細な説明は省略する。そして、ｚ軸方向の位置に応じてパーティクル及び流線の色付けを行うことにより、図３１及び図３２に示すような表示を行うためのデータを生成する。なお、色付けのルールは、ステップＳ７７の処理の説明で述べたものと同様である。このようにして生成されたデータは、描画処理部１１６の処理に利用される。
【００７６】
図６の説明に戻り、群表示生成処理の後、群化処理部１０９は、未処理のｔが有るか判断する（ステップＳ３３）。未処理のｔが有ると判断された場合（ステップＳ３３：Ｙｅｓルート）、次の時刻について処理するため、群化処理部１０９は、ｔ＝ｔ＋１と設定する（ステップＳ３５）。そして処理は端子Ｄを介してステップＳ７の処理に戻る。
【００７７】
一方、未処理のｔが無いと判断された場合（ステップＳ３３：Ｎｏルート）、描画処理部１１６は、パーティクルフローによって流れを表示するためのデータを第１描画データ１０４から読み出し、また群表示のデータを第２描画データ格納部１１５から読み出す。そして、描画処理部１１６は、パーティクル及び流線と群表示とを重ね合わせて表示するための処理を行い、処理結果である表示データを第３描画データ格納部１１７に格納する（ステップＳ３７）。
【００７８】
ここまでの処理によって、例えば図３３及び図３４に示すような表示を行うための表示データが生成される。図３３の例では、同一の群に属するパーティクルに群表示が付されている。そして、図３４の例では、図３３の例における群表示にさらに色付け処理が行われている。なお、図３３及び図３４においては、図を見やすくするため、群表示生成部１０８によって生成された流線のデータは使用していない。
【００７９】
そして、グラフィックス処理部１１８は、第３描画データ格納部１１７に格納されている表示データを表示部１１９に表示させる処理を実施する（ステップＳ３９）。そして処理を終了する。
【００８０】
ステップＳ３９においては、例えば以下のような処理を行う。すなわち、図３３及び図３４に示すような表示を行うための表示データは各時刻ｔについて生成されているので、これらを連続的に表示する。また、第３描画データ格納部１１７に格納されている表示データのうち、パーティクルフローによって流れを表示するためのデータについては表示しないようにしてもよい。例えば、図２６及び図２７に示すような群表示に、ステップＳ７９（図２１）又はＳ１２７（図３９）において生成された流線のデータを付加し、連続的に表示するようにしてもよい。
【００８１】
以上のような処理を実施すれば、時間Δｔ前に同じ位置にあったと推定されるパーティクルが同じ群に属するようになるので、拡散場におけるパーティクルの動きを容易に把握できるようになる。
【００８２】
［実施の形態２］
次に、第２の実施の形態について説明する。第２の実施の形態においては、第１の実施の形態とは異なる群表示生成処理によって群表示を生成する。以下、第２の実施の形態における群表示生成処理について説明する。
【００８３】
まず、群表示生成部１０８におけるオブジェクト生成部１１０は、群番号ｇの初期値を０に設定する（図３５：ステップＳ１０１）。
【００８４】
そして、オブジェクト生成部１１０は、群番号ｇに属するパーティクルの位置のデータを速度データ格納部１０７から読み出し、各パーティクルからの距離の自乗の総和が最小となるような直線を最小自乗法によって決定し、決定された直線のデータを記憶装置（図示しない）に格納する（ステップＳ１０３）。ステップＳ１０３の処理によって、図３６に示すような直線のデータが生成される。
【００８５】
そして、オブジェクト生成部１１０は、群番号ｇに属するパーティクルのうち未処理のパーティクル（以下、処理対象のパーティクルと呼ぶ）を１つ特定する（ステップＳ１０５）。また、オブジェクト生成部１１０は、処理対象のパーティクルから直線へ垂線を引いた場合における垂線と直線との交点の位置を特定し、群化テーブルに格納する（ステップＳ１０７）。
【００８６】
また、オブジェクト生成部１１０は、直線上に設定された点（以下、端点と呼ぶ）から、垂線と直線との交点までの距離を算出し、群化テーブルに格納する（ステップＳ１０９）。端点は、例えば図３７における３７０のような位置に設定する。
【００８７】
そして、オブジェクト生成部１１０は、処理対象のパーティクルの位置のデータを用いて、処理対象のパーティクルが直線の右又は左のいずれに存在するかを判断し、判断結果を群化テーブルに格納する（ステップＳ１１１）。なお、本実施の形態においては、ｚ軸におけるｚ座標が正の位置から原点に向かう方向から座標空間を観察した場合を想定しており、観察者にとっての右を「右」とし、観察者にとっての左を「左」とする。例えば図３７の場合、パーティクル４、５及び１は直線の左であると判定し、パーティクル３及び２は直線の右であると判断する。
【００８８】
図３８に、第２の実施の形態における群化テーブルに格納されるデータの一例を示す。図３８の例では、パーティクル番号と、垂線と直線との交点の位置と、端点からの距離と、左右の判定結果とが格納されるようになっている。左右の判定結果が「０」である場合にはパーティクルは直線の左に位置し、左右の判定結果が「１」である場合にはパーティクルは直線の右に位置しているとする。なお、このようなテーブルは各群について生成される。
【００８９】
そして、オブジェクト生成部１１０は、未処理のパーティクルが有るか判断する（ステップＳ１１３）。未処理のパーティクルが有ると判断された場合（ステップＳ１１３：Ｙｅｓルート）、次のパーティクルについて処理するため、ステップＳ１０５の処理に戻る。
【００９０】
一方、未処理のパーティクルが無いと判断された場合（ステップＳ１１３：Ｎｏルート）、処理は端子Ｉを介して図３９のステップＳ１１５に移行する。
【００９１】
図３９の説明に移行し、オブジェクト生成部１１０は、群化テーブルのデータを、距離及び左右判定に基づきソートする（ステップＳ１１５）。例えば、図３８に示したデータをソートすると、図４０に示すようなデータになる。すなわち、第１行目乃至第３行目のパーティクルは直線の左に位置するパーティクルであり、パーティクル４、パーティクル５、パーティクル１の順に端点に近い位置にある。また、第４行目及び第５行目のパーティクルは直線の右に位置するパーティクルであり、パーティクル３の方がパーティクル２よりも端点に近い位置にある。
【００９２】
そして、オブジェクト生成部１１０は、パーティクル間を結ぶ線分の描画データを生成し、記憶装置（図示しない）に格納する（ステップＳ１１７）。例えば図４０の例では、まず直線の左側に位置するパーティクルについて、垂線と直線との交点が隣り合っているパーティクル４とパーティクル５との間の線分の描画データを生成し、また垂線と直線との交点が隣り合っているパーティクル５とパーティクル１との間の線分の描画データを生成する。また、直線の右側に位置するパーティクルについて、垂線と直線との交点が隣り合っているパーティクル３とパーティクル２との間の線分の描画データを生成する。さらに、直線の左側に生成された構造の一方の端であるパーティクル４と、直線の右側に生成された構造の端に位置するパーティクルのうちパーティクル４に近い方のパーティクルであるパーティクル３とを結ぶ線分の描画データを生成する。また、直線の左側に生成された構造のもう一方の端であるパーティクル１と、直線の右側に生成された構造のもう一方の端であるパーティクル２とを結ぶ線分の描画データを生成する。以上のようにして生成された構造に色を付すと、図４１に示すような構造が生成される。
【００９３】
そして、オブジェクト生成部１１０は、ステップＳ１１７の処理によって生成された構造に対して凹み部分の補正及び角を丸める処理を行い、群表示のデータを生成し、記憶装置（図示しない）に格納する（ステップＳ１１９）。これらの処理は、第１の実施の形態において説明したものと同様である。ステップＳ１１９までの処理によって、図４２に示すようなデータが生成される。
【００９４】
また、色付け処理部１１２は、速度データ格納部１０７に格納されている位置のデータを用いて、群番号ｇの群のｚ軸方向の位置を特定する（ステップＳ１２０）。ここでは、群に属するパーティクルの位置の平均を、群の位置であるとする。
【００９５】
そして、色付け処理部１１２は、ｚ軸方向における群の位置に応じて、群表示に対して色付け処理を実施し、処理結果を記憶装置（図示しない）に格納する（ステップＳ１２１）。色付け処理については、第１の実施の形態において説明したものと同様である。
【００９６】
そして、オブジェクト生成部１１０は、未処理の群が有るか判断する（ステップＳ１２３）。未処理の群が有ると判断された場合（ステップＳ１２３：Ｙｅｓルート）、次の群について処理するため、オブジェクト生成部１１０は、群番号ｇをｇ＝ｇ＋１と設定する（ステップＳ１２５）。そして処理は端子Ｈを介してステップＳ１０３に戻る。
【００９７】
一方、未処理の群が無いと判断された場合（ステップＳ１２３：Ｎｏルート）、流線生成部１１１は、流線描画処理を実施する（ステップＳ１２７）。流線描画処理については、第１の実施の形態において説明したとおりである。そして元の処理に戻る。
【００９８】
以上のような処理を実施すれば、適切な形状の群表示を生成することができるようになる。
【００９９】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック図は必ずしも実際のプログラムモジュール構成に対応するものではない。
【０１００】
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１０１】
なお、上で述べた例では、ｚ軸方向の位置に応じて群表示の色を設定しているが、色を設定する方向はｚ軸方向に限られるわけではない。座標空間における流れの特定に応じてｘ軸、ｙ軸又は任意の軸の方向を決定し、決定した軸の方向における位置に応じて色を変更するようにしてもよい。
【０１０２】
また、上で述べた例では、凹み部分を平滑化する処理及び角を丸める処理を実施しているが、処理時間を短縮する場合には、これらの処理を省略してもよい。
【０１０３】
また、第２の実施の形態では最小自乗法を利用する例を示したが、主成分分析の手法を利用するようにしてもよい。
【０１０４】
また、上で述べた例では一台のコンピュータによって処理を実行しているが、複数台のコンピュータによって処理を実行するようにしてもよい。
【０１０５】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図４３に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１０６】
なお、図３に示した各処理部は、図４３におけるＣＰＵ２５０３及びプログラムの組み合わせ、すなわち、ＣＰＵ２５０３がプログラムを実行することにより実現してもよい。また、図３に示した各データ格納部は、図４３におけるメモリ２５０１やＨＤＤ２５０５等として実現してもよい。
【０１０７】
以上述べた本技術の実施の形態をまとめると以下のようになる。
【０１０８】
本実施の形態に係る可視化処理は、（Ａ）拡散場におけるパーティクルの位置及び速度のデータに基づき、パーティクル間の距離と速度ベクトルの差の絶対値とがいずれも所定の基準値以下であるパーティクルが同じグループになるように、パーティクルのグループ分けを行い、（Ｂ）グループ分けにより得られたグループの各々について、当該グループに属するパーティクルを覆うグループ表示のデータを生成し、（Ｃ）パーティクルを表示するためのデータにグループ表示のデータを付加した表示データを生成する処理をコンピュータが実行する。
【０１０９】
このようにすれば、微小時間前に同じ位置にあったと推定されるパーティクルが同じグループに属するようになるので、拡散場におけるパーティクルの動きを容易に把握できるようになる。
【０１１０】
また、コンピュータが、（Ｄ）グループ分けにより得られたグループの各々について、当該グループに属するパーティクルの位置のデータを用いて、第１の軸方向における当該グループの位置を特定し、（Ｅ）特定された第１の軸方向におけるグループの位置に応じて、グループ表示の色を変更する処理をさらに実行するようにしてもよい。例えば、深さ方向に一様な流れになっている場合には、視線の方向によっては、流れの三次元的な構造を把握しにくい場合がある。このような場合に、深さ方向の位置に応じてグループ表示の色を変更すれば、流れの三次元的な構造がよりわかりやすくなる。
【０１１１】
また、コンピュータが、（Ｆ）グループ分けにより得られたグループの各々について、当該グループに属するパーティクルのうち、当該グループに属するパーティクルの位置の平均に最も近いパーティクルを特定し、（Ｇ）特定されたパーティクルの位置から所定時間後の当該パーティクルの位置までの流線のデータを生成し、当該流線のデータをグループ表示のデータに付加する処理をさらに実行するようにしてもよい。このように、各グループについての流線を表示できるようにすれば、大まかな流れの状況を把握することも容易になる。
【０１１２】
また、上記グループ表示を生成する処理において、（ｂ１）グループに属するパーティクルの間を結ぶ線分を、ループを形成しないように、短い順に（Ｎ−１）（Ｎは当該グループに属するパーティクルの数）本つなぐことにより、第１の構造のデータを生成し、（ｂ２）少なくとも第１の構造に含まれる線分の太さを太くする処理と第１の構造に含まれる凹み部分を平滑化する処理とを実行することにより、グループ表示のデータを生成するようにしてもよい。このようにすれば、グループ表示は球体又は楕円体に近い自然な形状になる。
【０１１３】
また、上記グループ表示を生成する処理において、（ｂ３）グループに属するパーティクルの位置のデータを用いて、最小自乗法によって直線を特定し、（ｂ４）特定された直線とグループに属するパーティクルとの位置関係に基づき、グループに属するパーティクルを第１のグループと第２のグループとにグループ分けし、（ｂ５）第１のグループに属する各パーティクルから直線に引いた垂線が直線と交わる点の位置を特定し、当該垂線が直線と交わる点の位置が隣り合っているという条件を満たすパーティクルの間を線分でつなぐことにより、第２の構造のデータを生成し、（ｂ６）第２のグループに属する各パーティクルから直線に引いた垂線が直線と交わる点の位置を特定し、当該垂線が直線と交わる点の位置が隣り合っているという条件を満たすパーティクルの間を線分でつなぐことにより、第３の構造のデータを生成し、（ｂ７）第２の構造における端と第３の構造における端との間を線分でつなぐことにより、第４の構造のデータを生成し、（ｂ８）少なくとも第４の構造の凹み部分を平滑化する処理を実行することにより、グループ表示のデータを生成するようにしてもよい。このような方法であっても、適切な形状のグループ表示になる。
【０１１４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置（図示しない）に一時保管される。
【０１１５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１６】
（付記１）
拡散場における複数のパーティクルを可視化する可視化処理プログラムであって、
コンピュータに、
前記複数のパーティクルのうち、パーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルのグループ分けを行わせ、
前記グループ分けされたグループの各々について、グループに属するパーティクルについてのグループ表示のデータを生成させ、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成させる
ことを特徴とする可視化処理プログラム。
【０１１７】
（付記２）
前記グループ表示のデータを生成する処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの位置のデータを用いて、第１の軸方向におけるグループの位置を特定させ、
前記グループの位置に応じて、グループ表示の色を決定させる
ことを特徴とする付記１記載の可視化処理プログラム。
【０１１８】
（付記３）
前記可視化処理プログラムはさらに、
前記コンピュータに、
前記グループ分けされたグループの各々について、グループに属するパーティクルのうち、グループに属するパーティクルの位置の平均に最も近いパーティクルを特定させ、
前記特定されたパーティクルの位置から所定時間後の前記特定されたパーティクルの位置までの流線のデータを生成させ、前記生成された流線のデータを前記グループ表示のデータに付加させる
ことを特徴とする付記１又は２記載の可視化処理プログラム。
【０１１９】
（付記４）
前記グループ表示のデータを生成する処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの間を結ぶ線分を、ループを形成しないように、短い順に（Ｎ−１）（Ｎは当該グループに属するパーティクルの数）本接続させることにより、第１の構造のデータを生成させ、
前記第１の構造に含まれる線分の太さを太くさせ、前記第１の構造に含まれる凹み部分を平滑化させることにより、前記グループ表示のデータを生成させる
ことを特徴とする付記１乃至３のいずれか１つ記載の可視化処理プログラム。
【０１２０】
（付記５）
前記グループ表示のデータを生成する処理において、
前記グループ分けされたグループの各々について、グループに属するパーティクルの位置のデータを用いて、最小二乗法に基づいた直線を特定させ、
前記特定された直線とグループに属するパーティクルとの位置関係に基づき、グループに属するパーティクルを第１のグループと第２のグループとにグループ分けさせ、
前記第１のグループに属する各パーティクルから前記直線に引いた垂線が前記直線と交わる点の位置を特定させ、
各々から引かれた垂線が前記直線と交わる点の位置が隣り合っているパーティクルの間を線分で接続させることにより、第２の構造のデータを生成させ、
前記第２のグループに属する各パーティクルから前記直線に引いた垂線が前記直線と交わる点の位置を特定させ、
各々から引かれた垂線が前記直線と交わる点の位置が隣り合っているパーティクルの間を線分で接続させることにより、第３の構造のデータを生成させ、
前記第２の構造における端と第３の構造における端との間を線分で接続させることにより、第４の構造のデータを生成させ、
前記第４の構造の凹み部分を平滑化させることにより、前記グループ表示のデータを生成させる
ことを特徴とする付記１乃至３のいずれか１つ記載の可視化処理プログラム。
【０１２１】
（付記６）
拡散場における複数のパーティクルを可視化する可視化処理方法であって、
コンピュータが、
前記複数のパーティクルのうち、各パーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルをグループ分けし、
前記グループ分けされたグループの各々について、グループに属するパーティクルについてのグループ表示のデータを生成し、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成する
ことを特徴とする可視化処理方法。
【０１２２】
（付記７）
拡散場における複数のパーティクルの位置及び速度のデータに基づき、パーティクル間の距離が所定距離以下且つ前記パーティクル間の速度ベクトルの差の絶対値が所定値以下であるパーティクルが同じグループになるように、前記複数のパーティクルをグループ分けするグルーピング部と、
前記グループ分けされたグループの各々について、グループに属するパーティクルについてのグループ表示のデータを生成するグループ表示生成部と、
前記グループに属するパーティクルを表示するパーティクル表示データに前記グループ表示のデータを付加した表示データを生成する表示データ生成部と、
を有することを特徴とする可視化処理装置。
【符号の説明】
【０１２３】
１  情報処理装置    １０１  入力部
１０２  描画オブジェクト格納部    １０３  パーティクルフロー生成部
１０４  第１描画データ格納部    １０５  シミュレーション結果格納部
１０６  速度算出部    １０７  速度データ格納部
１０８  群表示生成部    １０９  群化処理部
１１０  オブジェクト生成部    １１１  流線生成部
１１２  色付け処理部    １１３  群化テーブル格納部
１１４  パーティクルテーブル格納部    １１５  第２描画データ格納部
１１６  描画処理部    １１７  第３描画データ格納部
１１８  グラフィックス処理部    １１９  表示部
【図１】
0005810790.tif 000002
【図２】
0005810790.tif 000003
【図３】
0005810790.tif 000004
【図４】
0005810790.tif 000005
【図５】
0005810790.tif 000006
【図６】
0005810790.tif 000007
【図７】
0005810790.tif 000008
【図８】
0005810790.tif 000009
【図９】
0005810790.tif 000010
【図１０】
0005810790.tif 000011
【図１１】
0005810790.tif 000012
【図１２】
0005810790.tif 000013
【図１３】
0005810790.tif 000014
【図１４】
0005810790.tif 000015
【図１５】
0005810790.tif 000016
【図１６】
0005810790.tif 000017
【図１７】
0005810790.tif 000018
【図１８】
0005810790.tif 000019
【図１９】
0005810790.tif 000020
【図２０】
0005810790.tif 000021
【図２１】
0005810790.tif 000022
【図２２】
0005810790.tif 000023
【図２３】
0005810790.tif 000024
【図２４】
0005810790.tif 000025
【図２５】
0005810790.tif 000026
【図２６】
0005810790.tif 000027
【図２７】
0005810790.tif 000028
【図２８】
0005810790.tif 000029
【図２９】
0005810790.tif 000030
【図３０】
0005810790.tif 000031
【図３１】
0005810790.tif 000032
【図３２】
0005810790.tif 000033
【図３３】
0005810790.tif 000034
【図３４】
0005810790.tif 000035
【図３５】
0005810790.tif 000036
【図３６】
0005810790.tif 000037
【図３７】
0005810790.tif 000038
【図３８】
0005810790.tif 000039
【図３９】
0005810790.tif 000040
【図４０】
0005810790.tif 000041
【図４１】
0005810790.tif 000042
【図４２】
0005810790.tif 000043
【図４３】
0005810790.tif 000044