09.06 BOIDSv0.00 ~整エル~

今回の皆様のご指摘は、こうだったのでは!

下のようにはならないぞ!

そうなんです! 


ならないんです! 


なぜか?


<問題点>
このサイトはGGEが「モノづくり」に直面した数々の「疑問やなぞ」を、そのまま体感していただくサイトなのです。

でも! なぜだろう?



【BOIDS MODEL V0 00 ~避ケル~】



<解決編>
実際動かしてみるとわかりますが、ポッドは他のポッドに遭遇すると急激な速度変化があります。つまり、プログラム上、他のポッドとの距離そのものが移動距離としているために、急激な速度変化をもたらしたことが原因です。このため、ポッド規則2が適応されます。

  「ボイド規則2」=「整列(Alignment)」


/************************************************************************
*  群れの平均速度に合わせる                      *
************************************************************************/
void rule3(int index)
{
  int   len;

  len = Iwashi_Count;
  pv.x = 0; /* 群れの平均速度 */
  pv.y = 0;
  for (int i = 0; i < len; i++)
  {
    if (i != index)
    {
      pv.x += iwashi[i].vx;
      pv.y += iwashi[i].vy;
    }
  }
  pv.x /= (len - 1); /* 全体vの平均値 */
  pv.y /= (len - 1);

  iwashi[index].vx += ((pv.x - iwashi[index].vx) / AVRG_V);
  iwashi[index].vy += ((pv.y - iwashi[index].vy) / AVRG_V);
}



どうでしょうか?