//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; // } //}