/// <summary> /// call this method to initialize the swarm /// </summary> public void Setup() { AbsoluteDrift = 0; particles = new Particle[initialParticles]; float mean = Random.Range(initialMeanRange.x, initialMeanRange.y); float stdDev = Random.Range(initialStandardDeviationRange.x, initialStandardDeviationRange.y); for (int i = 0; i < initialParticles; i++) { float normalDistributedRandomNumber = MarsagliaGenerator.Next() * stdDev + mean; particles[i] = new Particle(normalDistributedRandomNumber); } }
/// <summary> /// this is the prime differential equation for particle movement /// </summary> /// <param name="particle"></param> public void ApplyDrift(Particle particle) { particle.X += (particle.X * RelativeDrift * relativeDriftWeight + AbsoluteDrift * absoluteDriftWeight) * Time.deltaTime + diffuse * MarsagliaGenerator.Next() * Time.deltaTime; }