FineKernelToolKit 4.2.13
|
パーティクル集合を制御するクラス [詳解]
#include <CLI/FK_CLI/include/ParticleSet_CLI.h>
公開メンバ関数 | |
delegate void | ParticleMethod1 (void) |
delegate void | ParticleMethod2 (fk_Particle^) |
fk_ParticleSet () | |
コンストラクタ | |
~fk_ParticleSet () | |
デストラクタ | |
!fk_ParticleSet () | |
ファイナライザ | |
void | Handle (void) |
実行メソッド | |
fk_Particle ^ | NewParticle (void) |
パーティクル生成メソッド1 | |
fk_Particle ^ | NewParticle (fk_Vector^ pos) |
パーティクル生成メソッド2 | |
fk_Particle ^ | NewParticle (double x, double y, double z) |
パーティクル生成メソッド3 | |
bool | RemoveParticle (fk_Particle ^ p) |
パーティクル削除メソッド1 | |
bool | RemoveParticle (int ID) |
パーティクル削除メソッド2 | |
fk_Particle ^ | GetParticle (int ID) |
パーティクルインスタンス参照メソッド | |
fk_Particle ^ | GetNextParticle (fk_Particle^ p) |
パーティクルインスタンス順次取得取得 | |
公開変数類 | |
ParticleMethod2 ^ | GenMethod |
個別初期化用抽象メソッド | |
ParticleMethod1 ^ | AllMethod |
全体動作用抽象メソッド | |
ParticleMethod2 ^ | IndivMethod |
個別動作用抽象メソッド | |
プロパティ | |
fk_Shape^ | Shape [get] |
モデル設定用プロパティ | |
unsigned int | Count [get] |
年齢プロパティ | |
unsigned int | ParticleNum [get] |
パーティクル個数プロパティ | |
unsigned int | MaxSize [get, set] |
パーティクル最大個数プロパティ | |
bool | AllMode [get, set] |
全体動作モードプロパティ | |
bool | IndivMode [get, set] |
個別動作モードプロパティ | |
パーティクル集合を制御するクラス
このクラスは、パーティクル集合を制御する機能を提供します。
「パーティクル」とは粒子のことで、流体表現などに利用します。 本クラスは、そのままインスタンスを生成して利用するのではなく、 このクラスの継承クラスに対して抽象メソッドを上書きして利用することを想定しています。 具体的には、以下のような手順となります。
// fk_ParticleSet を継承した MyParticleSet クラスを事前に準備 MyParticleSet pSet = new MyParticleSet(); fk_Model mode = new fk_Model(); model.Shape = pSet.Shape;もちろん、そのモデルはシーンに登録しておく必要があります。
このクラスと同様に点群を扱うクラスとして、 fk_Point があります。 fk_Particle や fk_ParticleSet が法則を記述することが主であることに対し、 fk_Point では点の制御をより直接的に行います。
FK_CLI::fk_ParticleSet::fk_ParticleSet | ( | ) |
コンストラクタ
FK_CLI::fk_ParticleSet::~fk_ParticleSet | ( | ) |
デストラクタ
FK_CLI::fk_ParticleSet::!fk_ParticleSet | ( | ) |
ファイナライザ
delegate void FK_CLI::fk_ParticleSet::ParticleMethod1 | ( | void | ) |
delegate void FK_CLI::fk_ParticleSet::ParticleMethod2 | ( | fk_Particle^ | ) |
void FK_CLI::fk_ParticleSet::Handle | ( | void | ) |
実行メソッド
パーティクル集合および各パーティクルに対し、時間経過処理を実行します。 具体的には、以下の処理が行われます。
fk_Particle ^ FK_CLI::fk_ParticleSet::NewParticle | ( | void | ) |
パーティクル生成メソッド1
パーティクルを原点上に新たに生成します。 ただし、既にパーティクル数が設定した最大値に達していた場合は、 生成を行いません。
fk_Particle ^ FK_CLI::fk_ParticleSet::NewParticle | ( | fk_Vector^ | pos | ) |
パーティクル生成メソッド2
パーティクルを指定した位置ベクトルの場所に新たに生成します。 ただし、既にパーティクル数が設定した最大値に達していた場合は、 生成を行いません。
[in] | pos | 生成場所の位置ベクトル |
fk_Particle ^ FK_CLI::fk_ParticleSet::NewParticle | ( | double | x, |
double | y, | ||
double | z | ||
) |
パーティクル生成メソッド3
パーティクルを指定した位置ベクトルの場所に新たに生成します。 ただし、既にパーティクル数が設定した最大値に達していた場合は、 生成を行いません。
[in] | x | 生成場所の位置ベクトルのx成分 |
[in] | y | 生成場所の位置ベクトルのy成分 |
[in] | z | 生成場所の位置ベクトルのz成分 |
bool FK_CLI::fk_ParticleSet::RemoveParticle | ( | fk_Particle ^ | p | ) |
パーティクル削除メソッド1
指定したパーティクルを削除します。 削除したパーティクルが持っていた ID は、 新たに生成したパーティクルで再利用します。
[in] | p | 削除パーティクル |
bool FK_CLI::fk_ParticleSet::RemoveParticle | ( | int | ID | ) |
パーティクル削除メソッド2
指定した ID を持つパーティクルを削除します。 削除したパーティクルが持っていた ID は、 新たに生成したパーティクルで再利用します。
[in] | ID | 削除パーティクル ID |
fk_Particle ^ FK_CLI::fk_ParticleSet::GetParticle | ( | int | ID | ) |
パーティクルインスタンス参照メソッド
指定した ID を持つパーティクルインスタンスを返します。
[in] | ID | パーティクルID |
fk_Particle ^ FK_CLI::fk_ParticleSet::GetNextParticle | ( | fk_Particle^ | p | ) |
パーティクルインスタンス順次取得取得
存在しているパーティクルを順次取得するのに利用していきます。 引数と返値は、以下のような関係を持ちます。
以下のソースコードは、 AllMethod() の中で全てのパーティクルの総和平均座標を求めているものです。 ここで、「MyPaticleSet」は fk_ParticleSet クラスを派生したものとします。
void MyParticleSet::AllMethod(void) { fk_Particle p; fk_Vector vec = new fk_Vector(); p = GetNextParticle(null); while(p != null) { vec += p->GetPosition(); p = GetNextParticle(p); } vec /= double(getParticleNum()); }
[in] | p | パーティクルインスタンス |
ParticleMethod2 ^ FK_CLI::fk_ParticleSet::GenMethod |
個別初期化用抽象メソッド
このメソッドは、 NewParticle() によってパーティクルが生成されたときに、 自動的に実行されます。 初期状態としては特に何も行いませんが、 このメソッドを上書き定義することによって、 パーティクル生成時にそのパーティクルに対して様々な制御を行うことができます。
[in] | p | 新たに生成されたパーティクルインスタンス |
ParticleMethod1 ^ FK_CLI::fk_ParticleSet::AllMethod |
全体動作用抽象メソッド
このメソッドは、 Handle() が呼び出された時点で自動的に実行されます。 (ただし、 fk_ParticleSet::AllMode プロパティで false が設定されている場合は呼び出されません。) 初期状態としては何も行いませんが、 このメソッドを上書き定義することによって、 パーティクル集合に対して様々な制御を行うことができます。
ParticleMethod2 ^ FK_CLI::fk_ParticleSet::IndivMethod |
個別動作用抽象メソッド
このメソッドは、 Handle() が呼び出された時点で、 各パーティクル個別に自動的に実行されます。 (ただし、 fk_ParticleSet::IndivMode プロパティで false が設定されている場合は呼び出されません。) 初期状態としては何も行いませんが、 このメソッドを上書き定義することによって、 各パーティクルに対して様々な制御を行うことができます。
[in] | p | 個別パーティクルインスタンス |
|
get |
|
get |
年齢プロパティ
パーティクル集合の年齢を参照します。 年齢とは、パーティクル集合が生成されてから Handle() が呼ばれた回数のことです。
|
get |
パーティクル個数プロパティ
現在生存しているパーティクルの個数を参照します。
|
getset |
パーティクル最大個数プロパティ
パーティクル集合における、パーティクル個数の最大値の参照・設定を行います。 もし生存数がこの個数に達した場合、 NewParticle() を呼び出しても生成を行いません。 0 の場合無制限となります。デフォルトは 0 です。
|
getset |
全体動作モードプロパティ
Handle() 呼び出し時の、 AllMethod() の自動実行を制御します。 true の場合は AllMethod() の自動実行を行います。 false の場合は行いません。 デフォルトでは true となっています。
|
getset |
個別動作モードプロパティ
handle() 呼び出し時の、 IndivMethod() の自動実行を制御します。 true の場合は IndivMethod() の自動実行を行います。 false の場合は行いません。 デフォルトでは true となっています。