コード例 #1
0
ファイル: PVector.cs プロジェクト: 3c3/GRAPHical_learner
 public void Add(PVector pv)
 {
     x += pv.x;
     y += pv.y;
 }
コード例 #2
0
        public PVector CalculateVertexForce(Vertex v)
        {
            PVector resultF = new PVector();
            foreach (Edge e in v.edges)
            { // смятаме пружинните сили(на ребрата) - привличат
                Vertex other = e.source == v ? e.destination : e.source;

                if (float.IsNaN(other.x) || float.IsNaN(other.y) || float.IsNaN(v.x) || float.IsNaN(v.y)) continue;

                double dx = v.x - other.x;
                double dy = v.y - other.y;

                resultF.Add(GetAttractionForce(dx, dy));
            }

            foreach (Vertex vo in graph.vertices)
            { // електрични сили
                if (v == vo) continue;

                if (float.IsNaN(vo.x) || float.IsNaN(vo.y) || float.IsNaN(v.x) || float.IsNaN(v.y)) continue;

                double dx = v.x - vo.x;
                double dy = v.y - vo.y;

                resultF.Add(GetRepulsionForce(dx, dy));
            }
            return resultF;
        }