Exemplo n.º 1
0
        public void Reset()
        {
            _compabilitiyMap = new Dictionary <long, Dictionary <long, double> >();
            _originalSprings = new SpringSet();
            _currentSprings  = new SpringSet();

            Prepare();
        }
Exemplo n.º 2
0
        private void PrepareSprings()
        {
            foreach (var edge in _edgeSet.Edges)
            {
                _originalSprings.Add(PrepareSegmentPoint(edge));
            }

            _currentSprings = new SpringSet(_originalSprings);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
 public SpringSet(SpringSet springs)
     : base(springs as List <List <Point> >)
 {
 }
Exemplo n.º 5
0
        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;
            }
        }