public void Add(PVector pv) { x += pv.x; y += pv.y; }
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; }