/// <summary> /// Layout the nodes in the network. /// </summary> /// <param name="config">The configuration to use.</param> /// <param name="maxIterations">The maximum amount of iterations after which the physics simulation ends.</param> public void Layout(Configuration config, int maxIterations) { var engine = new Engine(); var state = new BufferedState(); int deltaT = (int)Math.Ceiling(10.0 / (double)config.UpdatesPerIteration); for (int i = 0; i < maxIterations * config.UpdatesPerIteration; i++) { engine.Update(deltaT, state, config); } foreach (var newNodePosition in state.NodePositions) { newNodePosition.Key.Position = new Point(newNodePosition.Value.X, newNodePosition.Value.Y); } }
/// <summary> /// Layout the nodes in the network. /// </summary> /// <param name="config">The configuration to use.</param> /// <param name="maxIterations">The maximum amount of iterations after which the physics simulation ends.</param> public void Layout(Configuration config, int maxIterations) { var engine = new Engine(); var state = new BufferedState(); // Move each node so no two nodes have the exact same position. engine.ApplyRandomShift(config.Network); int deltaT = (int)Math.Ceiling(10.0 / (double)config.UpdatesPerIteration); for (int i = 0; i < maxIterations * config.UpdatesPerIteration; i++) { engine.Update(deltaT, state, config); } foreach (var newNodePosition in state.NodePositions) { newNodePosition.Key.Position = new Point(newNodePosition.Value.X, newNodePosition.Value.Y); } }