/** * This file is mostly for handling UI controls of the system. **/ // === CONTROLS === var play = function() { timer = d3.interval(() => { next(); }, DT); } var pause = function() { timer.stop(); } // parameters function updateR_r(value,i) { R_r[i] = value; d3.selectAll(".R_r-"+i).transition(t) .attr("r", (d) => { return show_radius(d, R_r[i]); }); } function updateR_o(value,i) { R_o[i] = value; d3.selectAll(".R_o-"+i).transition(t) .attr("r", (d) => { return show_radius(d, R_o[i]); }); } function updateR_a(value,i) { R_a[i] = value; d3.selectAll(".R_a-"+i).transition(t) .attr("r", (d) => { return show_radius(d, R_a[i]); }); } function updateK(value,i) { K[i] = value; console.log(K); } function updateSpeed(value,i) { TRAVEL_LENGTH[i] = value; console.log(TRAVEL_LENGTH); } function updateTurnRate(value,i) { TURN_RATE[i] = value; console.log(TURN_RATE); } function updateNumAgents(value) { NUM_AGENTS = value; d3.select("#reset").classed("btn-warning", true); } function updateSparsity(value) { INIT_SPARSITY = value; d3.select("#reset").classed("btn-warning", true); } function updateDistribution(value) { var d2 = 100-value; GROUP_DISTRIBUTION = d2/100; console.log(GROUP_DISTRIBUTION) d3.select("#d-g1").text(d2 + "%"); d3.select("#d-g2").text(value + "%"); d3.select("#reset").classed("btn-warning", true); } function changeMetric(value,i) { var j = i+1; console.log("metric", i, value); METRICS[i] = getMetric(value); if (value) { //distance d3.select("#ak-box_" + j + "k").attr("hidden", "hidden"); d3.select("#ak-box_" + j + "a").attr("hidden", null); } else { //knn d3.select("#ak-box_" + j + "a").attr("hidden", "hidden"); d3.select("#ak-box_" + j + "k").attr("hidden", null); } d3.select("#reset").classed("btn-warning", true); } //reset function reset() { d3.select("#reset").classed("btn-warning", null); svg.selectAll(".point").remove(); svg.selectAll(".r").remove(); points = d3.range(NUM_AGENTS).map(phyllotaxis(INIT_SPARSITY)); start(); svg.transition().duration(750).call(zoom.transform, d3.zoomIdentity); } //eigenvalues function printEigenvalues() { var L = getLaplacian(); var eigs = getEigenvalues(L); console.info("Eigenvalues", eigs); var fiedler = getFiedler(eigs); var components = getNumComponents(eigs); d3.select("#eigs").text(fiedler); d3.select("#num_coms").text(components); }