棒フィルター

棒フィルターは粒子間をつなぐ棒を表示します。分子動力学のようなデータの表示に向いた機能です。


Type / 線幅 / 半径

線として表示するか、円筒として表示するか選択します。線の表示は高速ですが、幅はピクセルとして考えるので、カメラが近づいたり遠ざかったりしても幅が変化しません。 円筒だとポリゴンで円筒を描画します。(描画速度は遅くなります)

ファイルを読む

粒子間のボンド情報をファイルから読み込みます。そのほか、粒子間距離から計算をすることもできます。
ファイルフォーマットは次のようになっています。(現在仮のフォーマットになっていて、将来変更される可能性が高いです)

アスキーの場合は、1行に1つのペアの情報を書き込みます。

0 1 0 1.000
0 2 0 1.000
0 3 0 0.500
1 2 0 1.000
1 3 0 1.000
...and so on...
最初の列と2つ目の列がそれぞれつなぐぐ粒子のインデックスになります。
この例だと、0-1, 0-2, 0-3, 1-2, 1-3 …の粒子がつながれます

3つ目の列は、周期境界条件のときのためにとってあります。(境界をはさんだボンドなどを示せるようにするための予備です)

最後の列は不透明度(α)です。つながっているかいないか、だけではなく連続的に表示をさせることができます。例えば30%や60%のボンドなどでは、値を0.3や0.6にします。

バイナリーデータは、まず先頭に13バイトのヘッダ情報が必要になります。
最初の5バイトは文字列"bond\0"となっていて、その後の4バイトは予備として予約しています。次の4バイトに、粒子ペアの数が整数型として記述されます。
最初の5バイトは、アスキーデータかバイナリーデータかを判定するのに使っています。

ヘッダのあとは、本体のデータの羅列が続きます。

index0(integer)
index1(integer)
...以下粒子数だけ繰り返し。
総ファイルサイズは 8 * particle_number + 13 バイトになるはずです。
(Note: このフォーマットは仮のものです。境界条件用の情報やα値も省略されています。)

printf で使われる形式の "%0nd" をファイル名に含めると、連番ファイルの読み込みができます。%0nd の部分には時間のインデックスが入ります。
例えば data%03d.txt となっている場合には、時間0のときは data000.txt のデータを読み、時間10では data010.txt を読み込みます。
これにより、分子動力学的なデータのアニメーションを作成することができます。

計算で出す

Zindaiji3では、ファイルから読み込む代わりに粒子間の距離からボンドを判定することができます。
今のところアルゴリズムは総当りO(N^2)なので遅いです。あまり多粒子のデータには使えません。

ステップ

閾値Aよりも小さい距離のペアをボンドとします。(アルファ値は1).

AからBへ連続的に

閾値Aより小さい粒子をボンドとして、閾値Bより大きい粒子はボンドではないとします。
その間の距離のペアは、アルファ値を連続的に変化させます。

A以上B以下をつなぐ

ステップに似ていますが、閾値Aから閾値Bの間の距離のペアをボンドとします。(アルファ値は1).

まだ実装していません。

戻る
inserted by FC2 system