Си диез / Говнокод #28639 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
namespace ParticleAccelSim
{
    public class Particle
    {
        public double X { get; set; } // координата частицы по оси x
        public double Y { get; set; } // координата частицы по оси y
        public double VX { get; set; } // скорость частицы по оси x
        public double VY { get; set; } // скорость частицы по оси y
        public double Mass { get; set; } // масса частицы
        public double Charge { get; set; } // заряд частицы

        public Particle(double x, double y, double vx, double vy, double mass, double charge)
        {
            X = x;
            Y = y;
            VX = vx;
            VY = vy;
            Mass = mass;
            Charge = charge;
        }
    }
	
    public class ParticleAccelerator
    {
        private List<Particle> particles = new List<Particle>(); // список всех частиц
        private double timeStep = 0.01; // размер шага при моделировании

        public void AddParticle(Particle p)
        {
            particles.Add(p);
        }

        public void RunSimulation(int numSteps)
        {
            for (int i = 0; i < numSteps; i++)
            {
                foreach (Particle p in particles)
                {
                    // вычисляем силы, действующие на частицу
                    double ax = 0;
                    double ay = 0;

                    foreach (Particle other in particles)
                    {
                        if (other != p)
                        {
                            double dx = other.X - p.X;
                            double dy = other.Y - p.Y;
                            double r = Math.Sqrt(dx * dx + dy * dy);
                            double f = (p.Charge * other.Charge) / (r * r); // закон Кулона

                            ax += f * dx / r;
                            ay += f * dy / r;
                        }
                    }

                    // вычисляем новое положение и скорость частицы
                    p.VX += ax * timeStep / p.Mass;
                    p.VY += ay * timeStep / p.Mass;
                    p.X += p.VX * timeStep;
                    p.Y += p.VY * timeStep;
                }
            }
        }
    }
}

Исходный код симулятора ускорителя частиц, например "Большой адронный коллайдер". Просьба не запускать этот код, т.к. я уже пару дней назад запустил, а сегодня уже не могу понять правильно говорить "Возможность этого резиста крайне мала" или "Вероятность этого резиста крайне мала"... ТАК ЧТО БУДЬТЕ ОСТОРОЖНЫ! Можно сломать нашу реальность!

Запостил: DartPower DartPower, (Updated )

Комментарии (2) RSS

  • Забыл самое главное

    ```
    static void Main(string[] args)
    {
    Particle p1 = new Particle(0, 0, 0, 0, 1, 1);
    Particle p2 = new Particle(1, 0, 0, 0, 1, -1);

    ParticleAccelerator accelerator = new ParticleAccelerator();
    accelerator.AddParticle(p1);
    accelerator.AddParticle(p2);
    accelerator.RunSimulation(100);

    Console.WriteLine("p1: ({0}, {1})", p1.X, p1.Y);
    Console.WriteLine("p2: ({0}, {1})", p2.X, p2.Y);

    Console.ReadKey();
    }
    ```
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8