ホーム >> 左脳ActionScript3 >> アクションスクリプト3 >> boidデモを作る >> boidデモ作成 その7:応用編。遠すぎるものは無視する。
boidデモ作成 その7:応用編。遠すぎるものは無視する。
フラッシュで、「boids」デモを作ってみよう。第7回。応用編。

試験的に点の数を増やしてみたが、イマイチだった前回からの続き。コードも変更点しか示さないので、前回分を良くチェック。

好奇心で数を増やしてもイマイチだった。
どっかで見たけど、こっちのがイイな」と思わせるには、もっと手の込んだ?工夫が必要なようだ。



遠すぎるものは無視する

今までのコードは、「どんなに遠くに居ても、距離のあるものに近づく」というアルゴリズムだった。
しかし、現実的に考えると、「見えないほど(感知できないほど)遠くに居るものに近づこうとは思わない」のではないだろうか。

遠すぎるものを無視するよう修正してみる。

変更のあったコード回りのみ表示。
距離の近い順に判定をするよう、コードの順序を入れ替え、最後の遠い点の判別の条件を「else」から「else if( dis<50 )」にした。50より遠い点は、遠すぎて見えないと判断させる為である。

        var tb:one  =   objs[j];
        var d:Point;
        var dis:Number  =   distance[b + j];
        if (    dis< 10 )
        {   //  近すぎ
            d   =   t.p.subtract(tb.p);
            d.normalize(1.0);
            acp =   acp.add(d);
            ac++;
        }
        else if (   dis < 30    )
        {   //  近すぎず、遠すぎず、ほどほど
            d   =   tb.v.clone();
            d.normalize(1.0);
            vp  =   vp.add(d);
            vc++;
        }
        else if (   dis < 50    )
        {   //  遠い
            d   =   t.p.subtract(tb.p);
            d.normalize(1.0);
            atp =   atp.add(d);
            at++;
        }
        //  距離が50以上のものは遠すぎと判断し、なにもしない

Get Adobe Flash player

変化はあった。表示直後は「群れの数が複数」になる。しかし、群れ同士が近づくと融合し一つになってしまう。
一度融合すると、分裂する事は無いようだ。

画面が小さい為、群れが複数出来るようにコードを修正しても、すぐにひとつになってしまう。

これでは、生の boids理論 のままで、あまり代わり映えしない。
距離のパラメータをアレコレ弄って、面白くならないか探ってみる。


>> その8へ。

トラックバック(0)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/192

コメントする

ホーム >> 左脳ActionScript3 >> アクションスクリプト3 >> boidデモを作る >> boidデモ作成 その7:応用編。遠すぎるものは無視する。