/// <summary> /// Move the particle. /// </summary> /// <param name="timeEclipse">s</param> public void Move(Vector acc, double timeEclipse) { double magnitude = acc.GetXYMagnitude(); double theta = ParseAzimuth(acc[3]) / 180.0 * Math.PI + ContinuousUniform.Sample(-ParticleFilter.ANG_EPS, ParticleFilter.ANG_EPS); double rand_magitude = magnitude + magnitude * ContinuousUniform.Sample(-ParticleFilter.ACC_EPS, ParticleFilter.ACC_EPS); double ax = Math.Cos(theta) * rand_magitude; double ay = Math.Sin(theta) * rand_magitude; X += (2 * Vx + ax) * timeEclipse / 2.0; Y += (2 * Vy + ay) * timeEclipse / 2.0; Vx += ax * timeEclipse; Vy += ay * timeEclipse; }