Beispiel #1
0
        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);
            }
        }