Пример #1
0
    void UpdateSwarm()
    {
        List<Point> vectors = new List<Point>();
        for (int i = 0; i < swarm.Count; i++)
        {
            Bug b = swarm[i];

            Point v1 = b.FlyTowardsCenter().multiply(M1);
            Point v2 = b.KeepDistance().multiply(M2);
            Point v3 = b.MatchVelocity().multiply(M3);
            Point v4 = b.TendToPlace(locus).multiply(M4);

            vectors.Add(v1.add(v2.add(v3.add(v4)));
        }
        for (int i = 0; i < swarm.Count; i++)
        {
            swarm[i].velocity = swarm[i].velocity.add(vectors[i]);
            swarm[i].LimitVelocity();
        }
        foreach (Bug b in swarm)
        {
            b.p = b.p.add(b.velocity);
        }
    }