diff --git a/html/force.js b/html/force.js index daec041..c742780 100644 --- a/html/force.js +++ b/html/force.js @@ -176,12 +176,6 @@ vis.append("g").attr("class", "links") vis.append("g").attr("class", "nodes") -var pm = vis.append("path") - .style("fill", "#ff0") - .style("stroke", "#000") - .style("stroke-width", 2.5) - .style("stroke-linejoin", "round") - var linkedByIndex var force = d3.layout.force() @@ -208,9 +202,6 @@ var force = d3.layout.force() var angle = d3.scale.linear() .domain([0, 1, 2, 3]) .range([0.01, Math.PI/4, 0.01, Math.PI/4]) -var a = 0 - -var p = {x: 0, y: 0} force.on("tick", function() { var size = force.size() @@ -239,44 +230,6 @@ force.on("tick", function() { vis.selectAll(".node").attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }) - - a = (a + 0.10)%2 - - pm.attr("d", d3.svg.arc().innerRadius(0) - .outerRadius(24).endAngle(-angle(a) + Math.PI/2 + 2*Math.PI).startAngle(angle(a) + Math.PI/2)) - - var closest = null - var dd = Infinity; - for (i = 0; i < n; i++) { - var o = nodes[i] - if (o.dead) - continue - - var d = Math.pow((o.x - p.x),2) + Math.pow( o.y - p.y, 2) - if (d < dd) { - dd = d - closest = o - } - } - - var dx = closest.x - p.x - var dy = closest.y - p.y - - var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)) - - dx = dx/d - dy = dy/d - - if (d>1) { - - p.x += dx - p.y += dy - } else { - closest.dead = true - } - - pm.attr("transform", "matrix(" + [dx, dy, -dy, dx, p.x, p.y].join(",") + ")") - }) var data diff --git a/html/nodes2.html b/html/nodes2.html new file mode 100644 index 0000000..9a17574 --- /dev/null +++ b/html/nodes2.html @@ -0,0 +1,27 @@ + + + + + Freifunk Lübeck - Knotengraph + + + + + + + + + + +
+

luebeck.freifunk.net

+ +
+
+ + + + diff --git a/html/pacman.js b/html/pacman.js new file mode 100644 index 0000000..fec907d --- /dev/null +++ b/html/pacman.js @@ -0,0 +1,68 @@ +d3.timer(pacman) +var a = 0 + +var p = {x: 0, y: 0} +var pm = vis.append("path") + .style("fill", "#ff0") + .style("stroke", "#000") + .style("stroke-width", 2.5) + .style("stroke-linejoin", "round") + +function pacman() { + var size = force.size() + var nodes = force.nodes() + var n = nodes.length + if (n == 0) + return + + a = (a + 0.10)%2 + + pm.attr("d", d3.svg.arc().innerRadius(0) + .outerRadius(24).endAngle(-angle(a) + Math.PI/2 + 2*Math.PI).startAngle(angle(a) + Math.PI/2)) + + var closest = null + var dd = Infinity; + for (i = 0; i < n; i++) { + var o = nodes[i] + + var d = Math.pow((o.x - p.x),2) + Math.pow( o.y - p.y, 2) + if (d < dd) { + dd = d + closest = o + } + } + + var dx = closest.x - p.x + var dy = closest.y - p.y + + var d = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)) + + dx = dx/d + dy = dy/d + + if (d>1) { + + p.x += dx + p.y += dy + } else { + var snd; + if (closest.flags.client) { + snd = new Audio("pacman_eatfruit.wav") + } else { + snd = new Audio("pacman_eatghost.wav") + } + snd.play() + + data.nodes = data.nodes.filter(function (d) { + return d.id != closest.id + }) + + data.links = data.links.filter(function (d) { + return d.target.id != closest.id && d.source.id != closest.id + }) + update() + } + + pm.attr("transform", "matrix(" + [dx, dy, -dy, dx, p.x, p.y].join(",") + ")") +} + diff --git a/html/pacman_chomp.wav b/html/pacman_chomp.wav new file mode 100644 index 0000000..993b08e Binary files /dev/null and b/html/pacman_chomp.wav differ diff --git a/html/pacman_eatfruit.wav b/html/pacman_eatfruit.wav new file mode 100644 index 0000000..420c02b Binary files /dev/null and b/html/pacman_eatfruit.wav differ diff --git a/html/pacman_eatghost.wav b/html/pacman_eatghost.wav new file mode 100644 index 0000000..7ba6b2d Binary files /dev/null and b/html/pacman_eatghost.wav differ