粒子を使った伝搬モデル1

伝搬

はじめに

AからBへ信号を送る方法は無数にあります。これは電気・電子回路の基礎であり、長い時間をかけて学習した思い出があります。プラスマイナスを銅線でつなぐ直流や、同軸やマイクロストリップ線路といった二つの導体間を伝搬するTEMモード、空間を伝搬させる変位電流、導波管等の金属パイプの中を伝搬させるTE,TMモード、誘電体内を伝搬させるNRDガイド、そして生物の伝搬で学ぶ跳躍伝導、濃度差で伝える拡散電流等です。これらは電磁気学の理論として、また電気回路モデルとして、また微分方程式の例として再三登場します。このような実在の伝搬の仕方も相当に面白いですが、プログラムで伝搬を考えると、これらとは異なる伝搬のさせ方ができます。Monogokoroで行った例としては、2026.06.17の「映像による情報伝達モデルの基礎」、2026.06.24の「生物の「状態伝搬」の模倣:修正」等がそれにあたります。前者はある領域から粒子を放出し、粒子が別の領域に到達したことを検出して、次の場所から粒子を放出するモデルです。流れてきた量がある程度溜まった時に発火して次に伝える、という意味ではニューロンに似ています。また後者はストレンジアトラクターの変化を真似ることで、別のストレンジアトラクターが同じように変化するタイプです。これは他方を真似るという伝搬モデルで、ストレンジアトラクターを使った点でオリジナルでした。興味を持っていましたが、計算負荷が高く、何段も作ることはできませんでした。通常の伝搬は、一か所に発振器があってそこからの電位なりエネルギーが伝わるタイプですが、プログラムでは、場所場所に発振器、粒子発生器、ストレンジアトラクター等の機能デバイスが分布しており、状態を測定することで、次の機能デバイスを発動するタイプが扱い易いです。今回は粒子発生器があり、粒子の数を数えることで、次の粒子発生器が起動し、伝搬させるモデルを考えます。

粒子を使った伝搬モデルと発振器モデル

単純化して3つの粒子源がある場合を検討します。Aの粒子源からBへ粒子を送ります。Bへ入った粒子を数えて粒子の数が一定数を超えると、BからCに粒子を放出致します。Cに一定の数が到達するとCが粒子を放出します。それでは見て下さい。

次は、Cへ入る粒子が一定数になると、Aから粒子が放出するようにしました。これによって、この伝搬はループします。つまり発振状態を維持する場合です。このように状態を測定して次を動かすことで、発振状態を作る手法はプログラムの得意とするスタイルです。では次を見て下さい。

3つ目から放出した後、最初のboxから粒子が放出し、連環的な発振動作が続きます。
2つ目の映像の場合の方がより包括的ですので、こちらでプログラムを説明致します。TouchDesignerを使っています。次が全体画像です。

3ブランチあります。それぞれが粒子の発生源に対応しています。粒子源に応じてそれぞれにコントール部分があります。コントロールは2つの機能があります。一つは、自己の粒子が徐々に消す機能(自己粒子フェードアウト)。そしてもう一つは、次の粒子発生機能をオンにする働きです。次の画像は粒子発生部分です。

粒子を特定方向に放出したり、渦巻状に放出したり、様々な放出のさせ方ができる構成が、point generator POP -> particle POP -> force radial POP ->null POP, そしてnull POPのparticle POPへのフィードバックです。これは決まったやり方です。force radial POPのOperator Snippetsを見ていただければ例がでてきます。box POPは発振源の蔽いです。merge POPで重ねています。group POPは、次のboxの位置より右側にくる粒子を選択しています。つまり次のboxに到達した粒子です。これをpop to DATでデータ化し、info CHOPで表示、その中からselect CHOPでnum_rowsを選択することで数を求めています。これが状態検出に相当します。一方group POPの出力はdelete POPに入れ、入力されて粒子が次のboxから出る分をdeleteしています。次にコントロール部分について説明致します。

select CHOPで次のbox位置に到達する粒子の数を数えたところからの続きです。これをtrail CHOP -> speed CHOPで積算します。そして指定した数になると目的に達したとして0から1になる信号を出します。これを受けて、chop execute DATによって、次のparticle POPのstartをオンにして、次の粒子を放出開始します。これと同時に次のspeed POPをresetして0にし、積算する初期状態にもどします。もう一つの働きは自身の粒子を徐々にフェードアウトさせる機能です。filterと特定の値との差によって、徐々に小さくなる値を得ます。これをparticle POPのlifeパラメータにフィードバックしています。結局、自身の粒子をフェードアウトさせ、次の粒子を発生させることを行っています。3つ目のブランチを1つ目のブランチに返すと、2番目に示した動画のように、連続して放出を続ける、即ち発振させることができます。
chop execute DATはこのモデルをハードウエアで作ろうとした時、無線通信になる部分です。無線を使わないなら、信号をなんらかの別の方法(例えば色変化とか、数値の変化)で示し、その情報を読み取る必要があります。プログラムではその部分が簡単にかけるのが便利です。chop excute DATを使わないなら、受けてから一定時間たてば、次を放出する等のシーケンスコントロールになるでしょう。しかし一般的には数を数えて次の操作をする方が柔軟なシステムです。

まとめ

三つの粒子発生器があり、発生させた粒子が次の発生器の位置に特定の数が入ってきた時に、次の発生器から粒子を放出するとともに、自身の粒子発生器からの粒子をフェードアウトさせます。これによって、次々に粒子を伝搬させることができました。また、最後と最初を同様に処理することで、発振が続く状態が作れました。それぞれの位置に粒子発生器があり、それを制御する方法は、プログラムが得意とする伝搬の仕方です。そしてそれはニューロンの伝搬モデルに似ています。

コメント