Algorithmic Efficiency bin-lattice spatial subdivision|Nature of Code

プログラムではloop処理が多数使われます。これまでTryしてきた事もフンダンにloop処理を書いてきました。前回のFlocking SystemでBoidオブジェクトの数が多くなるとフレームレートも伴って落ちて行きます。私が使っているMacBookPro15 2011 earyモデルでも110個くらいのBoidオブジェクトだと60fps近く出るのですが、それ以上になると途端に処理が重くなります。

この記事では幾つか処理を軽くする為のアルゴリズムの1つとして有名なbin-lattice spatial subdivisionをまとめてみようと思います。
続きを読む Algorithmic Efficiency bin-lattice spatial subdivision|Nature of Code

Group Behaviors|Nature of Code


グループ

これまでMoverクラスやVehicleクラスも配列でインスタンスを管理し扱ってきた。配列はある意味【グループ】と考えることが出来る。だが、これまで行ってきた事は各々オブジェクトがそれぞれの動作を個々で行うのみに過ぎなかった。ここではComplex Systemsのページで言述した”Compete”にあたるseparateを実装してみる。
続きを読む Group Behaviors|Nature of Code

Complex Systems|Nature of Code


これまで

– 個としてのオブジェクト(agent)に対し動きを与えてきた
– しかし環境内に存在する任意オブジェクトが他のオブジェクトに
 影響を与える事も出来る

– 例えば蟻は個として次の動きを決める事は可能だが
 【巣を作る】【餌を集める】【女王蟻を決める】事は出来ない。
 自然界では1個の蟻で出来ない事がある。

– このような個で出来ない事を達成する事をComplex Systemsと呼ぶ。
– Complex Systemsの定義を以下に3つ示す。
続きを読む Complex Systems|Nature of Code

Autonomous Agents – your own desired velocity|Nature of Code

前回の「ターゲット」は恒久的に動かない的でした。ただし自然界における「環境」は様々であると同様に「ターゲット」も必ずしも動かないとは限りません。ここでは”動く”ターゲットと”環境そのものがターゲット”の例を考察してみます。結論から言うと今回の考察の焦点はdesired velocityの算出方法のコンセプトを自分で考える事になります。自分もそうなんのですが本などで勉強していると、その他の手段が想像出来なかったりで応用力が身に付かない。こういった観点でも、この課題はイイと思います。最初に前回の復習をコードで示しておきますので、参考にして思い出してください。
続きを読む Autonomous Agents – your own desired velocity|Nature of Code