Public feed #377989

Untitled

public text v1 · immutable
Raw Edit
·published 2007-03-02 05:12 UTC
rendered paste body
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;

}