//using System;
//namespace AIStudio.Wpf.DiagramDesigner.Layout
//{
// public class Configuration
// {
// ///
// /// The network whose nodes are to be repositioned.
// ///
// public DiagramViewModel Network { get; set; }
// ///
// /// A time modifier that is used to speed up, or slow down, time during the simulation.
// /// A greater time modifier speeds up the physics simulation, at the cost of accuracy and stability.
// ///
// public float TimeModifier { get; set; } = 3.5f;
// ///
// /// Number of updates per iteration.
// /// Increasing this number increases the accuracy of the physics simulation at the cost of performance.
// ///
// public int UpdatesPerIteration { get; set; } = 1;
// ///
// /// How strongly should nodes push eachother away?
// /// A greater NodeRepulsionForce increases the distance between nodes.
// ///
// public float NodeRepulsionForce { get; set; } = 100;
// ///
// /// A function that maps each connection onto the equilibrium distance of its corresponding spring.
// /// A greater equilibrium distance increases the distance between the two connected endpoints.
// ///
// public Func EquilibriumDistance { get; set; } = conn => 100;
// ///
// /// A function that maps each connection onto the springiness/stiffness constant of its corresponding spring.
// /// (c.f. Hooke's law)
// ///
// public Func SpringConstant { get; set; } = conn => 1;
// ///
// /// A function that maps each connection onto the strength of its row force.
// /// Since inputs/outputs are on the left/right of a node, networks tend to be layed out horizontally.
// /// The row force is added onto the endpoints of the connection to make the nodes end up in a more horizontal layout.
// ///
// public Func RowForce { get; set; } = conn => 100;
// ///
// /// A function that maps each node onto its mass in the physics simulation.
// /// Greater mass makes the node harder to move.
// ///
// public Func NodeMass { get; set; } = node => 10;
// ///
// /// The friction coefficient is used to control friction forces in the simulation.
// /// Greater friction makes the simulation converge faster, as it slows nodes down when
// /// they are swinging around. If the friction is too high, the nodes will stop moving before
// /// they reach their optimal position or might not even move at all.
// ///
// public Func FrictionCoefficient { get; set; } = node => 2.5f;
// ///
// /// A predicate function that specifies whether or not a node is fixed.
// /// Fixed nodes do not get moved in the simulation.
// ///
// public Func IsFixedNode { get; set; } = node => false;
// }
//}