d3.layout.triangle = function(){ "use strict"; var exports = {}; var d3 = window.d3; var pts = []; var width = 100, height = 100, offsetX = 0, offsetY = 0; function triangle(data) { return triangle.points(data); } triangle.points = function(data) { if (!arguments.length) return pts; var qty = data.length, i = -1; var halfW = width / 2; var sx = d3.scale.linear().domain([0, qty]).range([0, halfW]); var sy = d3.scale.linear().domain([0, qty]).range([0, height]); while (++i < qty) { var d = data[i]; // if not object, make it so var level = [ [width-sx(i), sy(i)], [sx(i), sy(i-1)], [(sx(i+1) * 2), 0] ]; var pt = level[i % 3]; d.x = pt[0] + offsetX; d.y = pt[1] + offsetY; d.transform = "translate(" + d.x + " " + d.y + ")"; data[i] = d; } return data; }; triangle.width = function(number) { if (!arguments.length) return width; width = number; return triangle; }; triangle.height = function(number) { if (!arguments.length) return height; height = number; return triangle; }; triangle.offsetX = function(number) { if (!arguments.length) return offsetX; offsetX = number; return triangle; }; triangle.offsetY = function(number) { if (!arguments.length) return offsetY; offsetY = number; return triangle; }; // transform: function(d) { return "translate(" + d.x + " " + d.y + ") rotate(" + d.r + ")"; } // --------------------- // Public Interface // --------------------- return triangle; };