// https://d3js.org/d3-tile/ Version 0.0.3. Copyright 2016 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : (factory((global.d3 = global.d3 || {}),global.d3)); }(this, function (exports,d3Array) { 'use strict'; function tile() { var x0 = 0, y0 = 0, x1 = 960, y1 = 500, tx = (x0 + x1) / 2, ty = (y0 + y1) / 2, scale = 256, zoomDelta = 0, wrap = true; function tile() { var z = Math.max(Math.log(scale) / Math.LN2 - 8, 0), z0 = Math.round(z + zoomDelta), j = 1 << z0, k = Math.pow(2, z - z0 + 8), x = tx - scale / 2, y = ty - scale / 2, tiles = [], cols = d3Array.range( Math.max(wrap ? -Infinity : 0, Math.floor((x0 - x) / k)), Math.min(Math.ceil((x1 - x) / k), wrap ? Infinity : j) ), rows = d3Array.range( Math.max(0, Math.floor((y0 - y) / k)), Math.min(Math.ceil((y1 - y) / k), j) ); rows.forEach(function(y) { cols.forEach(function(x) { var d = [(x % j + j) % j, y, z0]; d.x = x * 256; d.y = y * 256; tiles.push(d); }); }); tiles.translate = [x / k, y / k]; tiles.scale = k; return tiles; } tile.size = function(_) { return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], tile) : [x1, y1]; }; tile.extent = function(_) { return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], tile) : [[x0, y0], [x1, y1]]; }; tile.scale = function(_) { return arguments.length ? (scale = +_, tile) : scale; }; tile.translate = function(_) { return arguments.length ? (tx = +_[0], ty = +_[1], tile) : [tx, ty]; }; tile.zoomDelta = function(_) { return arguments.length ? (zoomDelta = +_, tile) : zoomDelta; }; tile.wrap = function(_) { return arguments.length ? (wrap = _, tile) : wrap; }; return tile; } exports.tile = tile; Object.defineProperty(exports, '__esModule', { value: true }); }));