private bool CheckCollision(Particle a, Particle b, bool isLogsOn = false) { { if (GetDistance(a, b) - a.Radius - b.Radius <= 0) { var idA = Particles.IndexOf(a) + 1; var idB = Particles.IndexOf(b) + 1; var collisionResult = "===============================================================================================================\r\n" + $"Particle {idA} has been collided with Particle {idB} \r\n" + $"Particle {idA}->> Vx: {a.Vx} Vy: {a.Vy} Mass: {a.Mass} Coordinates[{a.X}, {a.Y}]\r\n" + $"Particle {idB}->> Vx: {b.Vx} Vy: {b.Vy} Mass: {b.Mass} Coordinates[{b.X}, {b.Y}]\r\n" + $"====>>>\r\n"; CollisionProc(a, b); collisionResult += $"Particle {idA} has been collided with Particle {idB} \r\n" + $"Particle {idA}->> Vx: {a.Vx} Vy: {a.Vy} Mass: {a.Mass} Coordinates[{a.X}, {a.Y}]\r\n" + $"Particle {idB}->> Vx: {b.Vx} Vy: {b.Vy} Mass: {b.Mass} Coordinates[{b.X}, {b.Y}]\r\n" + $"====>>>\r\n"; Task.Factory.StartNew(() => ChangeColor(a, b)); if (isLogsOn) { using (var writer = new StreamWriter(new FileStream(Directory.GetCurrentDirectory() + "\\logs.txt", FileMode.Append))) { writer.Write(collisionResult); } } return(true); } return(false); } }