【重要】サービス終了のお知らせ

N group boids algorithm with D3

skzy

License: MIT License

Fork
0
Fav
9
View
7462
  • Play

Fullscreen

Smart Phone

  • Readme
  • JavaScript 185 lines
  • HTML 19 lines
  • CSS 10 lines

boids algorithm(flocking)の実装

単にboids algorithmだけでは面白くないので、N個のグループを設定できて、 グループごとにboidのパラメータを設定できるようにした。

boidsアルゴリズムとは、

  • 分離(Separation)オブジェクトが他のオブジェクトとぶつからないように距離をとる。
  • 整列(Alignment) オブジェクトが他のオブジェクトと概ね同じ方向に飛ぶように合わせる。
  • 結合(Cohesion) オブジェクトが他のオブジェクトが集まっている群れの中心方向へ向かうように方向を変える。

の三つのルールで動作して、魚や鳥の群れをシミュレーションするマルチエージェントなプログラム。 複雑系とか自己組織化に深くかかわる。

ここでの実装は、すべてのオブジェクトはスピード一定で、進む角度(進行角度)を上記3つのルールで更新していく実装。

とりあえず、"initialize" ボタンを押して、"start_simulate"すると、boidsが見られるはず。

見れたら"stop/continue simulate"ボタンでシミュレーションを止めて、 今度は、表の中の数字を変えたり、"group_add"ボタンでグループを追加したり"DELETE"したりして、 設定を変更してからまた、"start_simulate"する。


各パラメータの説明:

index ... グループのindex。色は自動的につけられる。その色の楕円がオブジェクト。

group_name ... 適当な名前をつけてください。動作自体には関係ないです。

number ... グループのオブジェクトの数。

vision ... あるオブジェクトが影響を受ける他のオブジェクトとの近さ。例えば10なら 半径10の近さにある他のオブジェクトの進行角度や位置から上記3つのルールで動作が決まる。

minimum-separation
... "分離(Separation)"が発生する距離。この距離の範囲に別のオブジェクトが入ると "分離"のルールに従って対象のオブジェクトから離れようとする。

max-separate-turn
... "分離(Separation)"が発生したときの変更される進行角度の最大値。これが大きいと"分離"しやすくなる。

max-align-turn
... "整列(Alignment)"ルールで変更される進行角度の最大値。これが大きいと"整列"しやすくなる。

max-cohere-turn ... "結合(Cohesion)"ルールで変更される進行角度の最大値。これが大きいと"結合"しやすくなる。


2014/6/24

無駄なコードを省く

boids algorithm 実装方法についての簡単なメモ

  • N group boids algorithm with D3
  • N group boids algorithm with D3

play

Complete!

Description What kind of game?

Control Device

jsdo.it websocket controller

Mouse

keyboard

smartphone

Fullscreen

Default Panel

Size

  • Width: px
  • Height: px

code

QR Code

Discussion

Questions on this code?

Tags

Favorite by