public void Reset() { _compabilitiyMap = new Dictionary <long, Dictionary <long, double> >(); _originalSprings = new SpringSet(); _currentSprings = new SpringSet(); Prepare(); }
private void PrepareSprings() { foreach (var edge in _edgeSet.Edges) { _originalSprings.Add(PrepareSegmentPoint(edge)); } _currentSprings = new SpringSet(_originalSprings); }
public FDEBLayout(EdgeSet es) { _edgeSet = es; _computator = new FDEBCompatibilityComputator(); _compabilitiyMap = new Dictionary <long, Dictionary <long, double> >(); _originalSprings = new SpringSet(); _currentSprings = new SpringSet(); this.StepCount = DefaultStepCount; this.K = _K; this.DividedCount = _DividedCount; this.StepSize = _StepSize; this.EPS = _EPS; this.MEV = _MEV; this.NMEV = _NMEV; }
public SpringSet(SpringSet springs) : base(springs as List <List <Point> >) { }
public void Step() { var edges = _edgeSet.Edges; for (int moveIndex = 0; moveIndex < edges.Count; moveIndex++) { SpringSet E = new SpringSet(_currentSprings); int takeIndex = (moveIndex == 0) ? edges.Count - 1 : moveIndex - 1; E.RemoveAt(takeIndex); var line = edges[takeIndex]; var springs = _currentSprings[takeIndex]; if (springs == null) { continue; } List <Point> newSprings = new List <Point> { springs.First() }; double minFpi = 100; for (int i = 1; i < (springs.Count - 1); i++) { double kp = Calc.Calc_kp(K, line, springs, DividedCount); if (Math.Abs(kp) < EPS) { continue; } var Fpi = Calc.Calc_Fpi(kp, springs, E, i, _compabilitiyMap[moveIndex][takeIndex], StepSize); if (Math.Abs(Fpi.X) < minFpi) { minFpi = Fpi.X; } if (Math.Abs(Fpi.Y) < minFpi) { minFpi = Fpi.Y; } var dx = Math.Abs(Fpi.X); var dy = Math.Abs(Fpi.Y); if ((dx > EPS || dy > EPS) && ((dx < NMEV) && (dy < NMEV))) { newSprings.Add(new Point(springs[i].X + StepSize * Fpi.X, springs[i].Y + StepSize * Fpi.Y)); } else { newSprings.Add(springs[i]); } } newSprings.Add(springs.Last()); _currentSprings[takeIndex] = newSprings; } }