Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Ребята из BoneSoft выложили на CodeProject небольшую интересную программу моделирования некоторых физических законов на C#. Пример снабжен подробным описанием.
Вот их реализация общего цикла вычислений:
1: foreach (Particle p in particles) {
2: ...
3: if (particles.Count > 1) {
4: Vector a = new Vector();
5: foreach (Particle p2 in particles) {
6: if (object.ReferenceEquals(p, p2)) { continue; }
7: Vector unit = p2.Location - p.Location;
8: float magnitude = (float)Math.Sqrt(
9: (unit.X * unit.X)
10: + (unit.Y * unit.Y)
11: + (unit.Z * unit.Z));
12: float factor = (GravitationalConstant * (
13: (p.Mass * p2.Mass) / (magnitude * magnitude * magnitude)
14: )) / p.Mass;
15: unit *= factor;
16: a += unit;
17: }
18: p.Velocity += a;
19: }
20: ...
21: }
Беглого взгляда на программу достаточно, чтобы утверждать: с расширениями .Net для параллельного программирования (EN) она способна на большее.