simple_histogram.ghuser 修正版を使ってください。 ヒストグラムを描画するPythonオブジェクトです。GHのワークスペースにドロップすればインストールされます。使い方はオブジェクト内のpythonスクリプトのコメントを読んでください。詳しくはミーティング中に説明します。
Author: 管理人
CA 近傍チェックモジュール 注意点
CA_neighbourは3Dで記述してありますので、高さ1のマトリックス(結果的に2Dのマトリックス)を組むときにはFront,BackをUp,Downと取り違えないように気をつけてください。 id = チェックするid w=セルマトリックス幅 d=セルマトリックス奥行 h=セルマトリックス高さ 左__ cn.Left(id, w, d, h) 右__ cn.Right(id, w, d, h) 前__ cn.Front(id, w, d, h) 後__ cn.Back(id, w, d, h) 前左_ cn.FrontLeft(id, w, d, h) 前右_ cn.FrontRight(id, w, d, h) 後左_ cn.BackLeft(id, w, d, h) 後右_ cn.BackRight(id, w, d, h) 上__ cn.Up(id, w, d, h) 上左_ cn.UpLeft(id, w, d, h) 上右_ cn.UpRight(id, w, d, h) 上前_ cn.UpFront(id, w, d, h) 上後_ cn.UpBack(id, w, d, h) 上前左 cn.UpFrontLeft(id, w, d, h) 上前右 cn.UpFrontRight(id, w, d, h) 上後左 cn.UpBackLeft(id, w, d, h) 上後右 cn.UpBackRight(id, w, d, h) 下__ cn.Down(id, w, d, h) 下左_ cn.DownLeft(id, w, d, h) 下右_ cn.DownRight(id, w, d, h) 下前_ cn.DownFront(id, w, d, h) 下後_ cn.DownBack(id, w, d, h) 下前左 cn.DownFrontLeft(id, w, d, h) 下前右 cn.DownFrontRight(id, w, d, h) 下後左 cn.DownBackLeft(id, w, d, h) 下後右 cn.DownBackRight(id, w, d,Read More »
次回までTODO
FireFlyのモデル: agentの総数をスライダーで設定できるように agentの移動軌跡も表示できるといいです randomeシードの範囲をw,d,h 3種類スライダーで設定できるように 3Dで動かしてみるz軸にも数値を与えればそのままmove 光同調、全て3Dで動作するはずですので試してください。 moveのルールをもうすこし研究すること(全部が中心に移動して収束しない方法を考える) インターバルが拡散平均していく様子が数値(グラフなど)で示せるとすばらしいです。 MASクラスのupdateで として、コンソールに出た結果をエクセルか何かに貼り付けてみてはどうでしょうか? Boidsのモデル: バウンダリーの設定: Brep入力 複数の群れ現象の実現: Agentのscan範囲、近傍リストを agentとの距離 < Sep[] < Ali[] < Coh[] (Coherent)と3種類のリストにし、群れ全体の中心点に向かうのではなく、Coh リスト内の群れの中心に行くように、ルールを変更する。 agent.posの初期値の設定方法: twistLouverなどを参考にして、agentをカーブ上に等分割して配置して初期シードを試す →円弧配置などを手軽に試す。 CAスパイラルのモデル: 特異点の配置研究 diffusionもプロセスにいれてみた結果をみてみたい。 たとえばMASクラスで こんな計算を入れる 3Dでも実験。セル高さを2とか3にして走らせてみる(CA_neighbourモジュールは3Dの近傍チェックも出来ます)。 西崎さん同様、統計的なこと(ヒストグラムなど)が示せるとなおいいですね。 Duneモデル: 風の方向を変えるスライダーを実現する 障害物を配置できるようにしてみてはどうでしょう?障害物となるセルの設定のやり方はこちらのポストを参考に。Agentのメンバーに 例えばAgent.isStaticというフラグを作って、そのagentは絶対にホップされることなくまた常に風下のセルはshadowになるようにプロセスを考えてみれば実現できそうです。障害物によって明らかな風紋の違いがでたら面白いですね。その辺りにこの現象を操作するヒントがあるかもしれません。 トーラス空間、境界空間 を切り替えられるようにしてみる セルの高さを2とか3にして走らせてみる セルの配置を円筒状、その他の形状にしてみる こちらもセルの統計的なこと(ヒストグラムなど)が示せるとなおいいですね。
ライノオブジェクトを初期シードの設定に影響させる
setByPoints.zip
Brepを入力にセットするときの注意
BrepなどのRhinoモデルをGhPythonコンポーネントの入力にセットする場合、入力ポートのプロパティから(右クリックでリスト表示)Type hint→Brep と入力のオブジェクトタイプを明示しないと、スクリプト実行(何故か1ステップ目は問題が出ない)時にエラーが出ます。 追記: No Type Hint でも動きますね。
シミュレーション Reaction-diffusion system 反応拡散系モデル
Reaction-diffusion system 反応拡散系モデル Reaction-diffusion.gh CA_neighbour module required イマイチダイレクトに論文の係数どおりにならないので、モデルの実装が正確かどうか怪しいですが、なんとなく現象は再現できているようです。係数の研究はこちら↓ http://mrob.com/pub/comp/xmorphia/pde-uc-classes.html http://www.aliensaint.com/uo/java/rd/ 「反応拡散」のうち「拡散 diffusion」 はよく使われる考え方なので、他のモデルにも応用できるかもしれません。この辺りを参考に ラプラス方程式
シミュレーション Werner’s Model
Werner’s Model 砂風紋モデル Weiner.gh CA_neighbour module required
CA 近傍チェックモジュール
おそらく佐伯さんと蒔苗さんの扱うモデルはCAになります。となるとセルの近傍をidチェックするユーティリティが便利だと思われますので、群ユニット用にCA_neighbourというモジュールを作りました。セルをリニアーに格納した場合の近傍チェックです(多元配列では使えません)。 c:\MASunit というフォルダを作る ↓をDLしフォルダ内にコピーする CA_neighbour.py Rhinoceros を起動→Rhino の コマンドラインで “EditPythonScript” リターン すると Rhino Python Editorが起動するのでTool メニューから optionsを選択→Module Search Pathsの窓の下の + ボタンから 上で作った c:\MASunitフォルダを指定する→ ok →Rhino Python Editorを閉じる→Rhinocerosを再起動→Grasshopperを起動 <使い方> :セル id 0 における セル全体数 幅 5 セル 奥行 5 セル 高さ 5 セル での ノイマン近傍のリストを返しprintします :セル id 0 における セル全体数 幅 5 セル 奥行 5 セル 高さ 5 セル での ムーア近傍のリストを返しprintします :セル全体数 幅 5 セル 奥行 5 セル 高さ 5 セル の全てのセルにおける近傍(ノイマン近傍、ムーア近傍 両方)のリストのリストを表示します。 :セル空間をトーラス(無境界)に設定します。デフォルトはFalse(各辺 境界有り)。
MAS基本形
ようやくMASの超基本形です。 MAS_00.gh 授業中慌てて書いてしまって正しくない部分がありました。agentがscanを実行して各自の状態が全て更新された後に、次の動作に移行しなければならないので、以下のようになります。2者違いはとても重要でMASの考え方の大前提でもありますので、この辺りは次回説明します。 def proc(self): for agent in self.agents: agent.move() agent.scan(self.agents) def proc(self): for agent in self.agents: agent.move() for agent in self.agents: agent.scan(self.agents)
クラス、rhino geometry curve, point のコンポーネントへの入力
point_crv_twistLouver Louverのセット数をスライダーで変更できるようにし、さらにLouver幅をcurve上の分割にあわせてインスタンス化されるように、クラスのコンストラクタ(__init__(self, xx, xx, xx ….) )を改造してみてください。





