public Vertex GetCetnreGravity() { Vertex p = new Vertex(); for (int i = 0; i < g.vertexs.Length; i++) { p.Add(g.vertexs[i]); } p.Div(g.vertexs.Length*1.0); return p; }
public void getNextPosition() { Vertex[] shift; int length = g.n; shift = new Vertex[length]; for (int r = iterator; r < iterator + step; r++) { if (r > m) { optimumPosition = true; return; } for (int i = 0; i < length; i++) { Vertex f = new Vertex(0, 0); ; for (int j = 0; j < length; j++) { if (i != j) { f.Add(FRep(g.vertexs[i], g.vertexs[j])); if (g.edges[i, j] == 1) f.Add(FAttr(g.vertexs[i], g.vertexs[j])); } } shift[i] = f; double t = Delta(r); double d = Graph.Distance(shift[i]); t = Math.Min(d, t); shift[i].Mul(t / d); } if (isOptimumPosition(shift)) return; for (int i = 0; i < length; i++) { g.vertexs[i].Add(shift[i]); g.vertexs[i].x = Math.Min(w / 2, Math.Max(-w / 2, g.vertexs[i].x)); g.vertexs[i].y = Math.Min(h / 2, Math.Max(-h / 2, g.vertexs[i].y)); } } iterator+=step; }
public void getNextPosition() { Vertex[] shift; int length = g.vertexs.Length; shift = new Vertex[length]; for (int r = iterator; r < iterator + step; r++) { if (r > m) { optimumPosition = true; return; } for (int i = 0; i < length; i++) { Vertex f = new Vertex(0, 0); ; for (int j = 0; j < length; j++) { if (g.edges[i, j] == 1 && i != j) { f.Add(FSprings(g.vertexs[i], g.vertexs[j])); } else { if (i != j) f.Add(FRep(g.vertexs[i], g.vertexs[j])); } } shift[i] = f; } if (isOptimumPosition(shift)) return; for (int i = 0; i < length; i++) { shift[i].Mul(k); g.vertexs[i].Add(shift[i]); } } iterator += step; }
private void springEmbedder() { Vertex[] shift; int length = g.n; shift = new Vertex[length]; used = new bool[g.n]; List<int> random_vertex= new List<int>(); for (int r = 0; r < 100; r++) { toFalse(); random_vertex = GenNumberVertex(); for (int i = 0; i < length; i++) { Vertex f = new Vertex(0, 0); f.Add(FGravity(random_vertex[i])); for (int j = 0; j < length; j++) { if (g.edges[random_vertex[i], j] == 1 && random_vertex[i] != j) { f.Add(FAttr(random_vertex[i], j)); } else { if (i != j) f.Add(FRep(g.vertexs[random_vertex[i]], g.vertexs[j])); } } f.Mul(eps); g.vertexs[random_vertex[i]].Add(f); } } }