Beispiel #1
0
 private void move(double timeDelta, Body b, double finalTime)
 {
     var force = Point3D.Zero;
     foreach (var c in bodies)
     {
         if (c == b) continue;
         var fac = World.forceFac * c.mass;
         var d = c.current - b.current;
         var dist = d.Length;
         if (dist < 0.0001) continue;
         force += d.Normalize() * (fac / (dist * dist));
     }
     b.SetCurrent(timeDelta, force, finalTime);
 }
Beispiel #2
0
 private void DrawBodyTrack(Graphics g, Body body,Pen trackPen)
 {
     var _track = body.track.Where((x, i) => i % 1 == 0).ToList();
     var _forces = body.forces.Where((x, i) => i % 1 == 0).ToList();
     var cv = _track.Select(x => x.toPF(mx)).ToArray();
     if (cv.Length > 1) g.DrawCurve(trackPen, cv);
     for (int i = 0; i < _track.Count - 1; ++i)
         if (_forces[i].Length > 0)
             g.DrawLine(forcePen, _track[i].toPF(mx), (_track[i] + _forces[i] * 500).toPF(mx));
        var cur = body.current.toPF(mx);
       // g.DrawLine(forcePen, cur, (body.current + body.currentF * 1000).toPF(mx));
        g.DrawEllipse(trackPen, cur.X-3, cur.Y-3, 6, 6);
 }