今日はProcessingのソースコードを読み始めた。
プログラミング初心者が質問できるサイト「teratail」を最近よく利用しているのだが、そのサイトで紹介してもらったソースコードだ。
プログラムそのものはすごく簡単だが、動作結果はすごく面白い。
https://gist.github.com/p5info/5351768
(上のコードは、processingのIDEを使って実行してください)
簡単に言うと、たくさんの結び目をクラス「Node」として定義し、この「Node」同士の相互作用を計算するプログラムを組んでやるわけだ。
int numberOfNodes = 200; Node[] nodes = new Node[numberOfNodes];
において、200個の要素を持つ配列を定義している。ここにクラス「Node」のインスタンスを200個分代入し、それぞれの「Node」 について自分以外の全ての「Node」たちから受ける作用を計算する。
void update() { this.updateBoid(); this.updateVelocity(); this.updatePosition(); }
注目すべきはこのアップデート関数の部分だ。 このアップデート関数も「Node」クラスの中に組み込まれており、updateBoid()において、Nodeにかかる力を計算し(fx,fy)、updateVelocity()において速度を計算(vx,vy) 、updatePosition()において、位置情報を更新する(x,y)。 物体同士の相互作用はこんな風に三段階に分けて更新してやると、より精密に記述できるということが今日は理解できた。