Public feed
#377989
for (i in nodes)
{
var dx = 0;
var dy = 0;
for (j in nodes)
{
if (i == j)
continue;
var vx = nodes[i].x - nodes[j].x;
var vy = nodes[i].y - nodes[j].y;
var len = vx * vx + vy * vy;
if (nodelink[i][j] != null)
{
var nlen = Math.sqrt(len);
nlen = (nlen == 0) ? .0001 : nlen;
var f = (edges[(nodelink[i][j] - 1)].len - nlen) / (nlen * 3);
var ndx = f * vx;
var ndy = f * vy;
nodes[i].dx += ndx;
nodes[i].dy += ndy;
nodes[j].dx -= ndx;
nodes[j].dy -= ndy;
edges[(nodelink[i][j] - 1)].graphics.clear();
edges[(nodelink[i][j] - 1)].graphics.lineStyle(1, 0xFFFFFF, 100);
edges[(nodelink[i][j] - 1)].graphics.moveTo(nodes[j].x, nodes[j].y);
edges[(nodelink[i][j] - 1)].graphics.lineTo(nodes[i].x, nodes[i].y);
}
if (len == 0)
{
dx += Math.random();
dy += Math.random();
}
else if (len < 100*100)
{
dx += vx / len;
dy += vy / len;
}
}
var dlen = dx * dx + dy * dy;
if (dlen > 0)
{
dlen = Math.sqrt(dlen) / 2;
nodes[i].dx += dx / dlen;
nodes[i].dy += dy / dlen;
}
var movx = Math.max(-5, Math.min(5, nodes[i].dx));
var movy = Math.max(-5, Math.min(5, nodes[i].dy));
if(nodes[i].isDragging == false) // dragging
{
if(Math.abs(movx) > 1)
nodes[i].x += movx;
if(Math.abs(movy) > 1)
nodes[i].y += movy;
}
if (nodes[i].x < 0)
{
nodes[i].x = 0;
}
else if (nodes[i].x > stage.stageWidth)
{
nodes[i].x = stage.stageWidth;
}
if (nodes[i].y < 0)
{
nodes[i].y = 0;
}
else if (nodes[i].y > stage.stageHeight)
{
nodes[i].y = stage.stageHeight;
}
nodes[i].dx /= 2;
nodes[i].dy /= 2;
}