MarchingSquare.js issue
progressCallback function never called
HTML
<div id="container"></div>
<script>
/*
@license GNU Affero General Public License.
Copyright (c) 2015, 2015 Ronny Lorenz <[email protected]>
v. 1.2.2
https://github.com/RaumZeit/MarchingSquares.js
*/
(function(x,B){"function"===typeof define&&define.amd?define([],function(){return{isoBands:B()}}):"object"===typeof module&&module.exports?module.exports={isoBands:B()}:x.MarchingSquaresJS={isoBands:B(),isoContours:x.MarchingSquaresJS?x.MarchingSquaresJS.isoContours:null}})(this,function(){function x(d,b,c,g,h,a){d=(g+c+b+d)/4;return d>a?2:d<h?0:1}function B(d,b,c,g){0===c?(d+=1,b+=g[0][1]):1===c?d+=g[0][0]:2===c?b+=g[0][1]:3===c&&(d+=g[0][0],b+=1);return[d,b]}function H(d,b,c){0===c?d++:1!==c&&(2===
c?b++:3===c&&(d++,b++));return[d,b]}function I(d){for(var b=d.rows,c=d.cols,g=[],h=0;h<b;h++)for(var a=0;a<c;a++)if("undefined"!==typeof d.cells[h][a]){var f=d.cells[h][a];0!==f.cval&&170!==f.cval&&f.polygons.forEach(function(b){b.forEach(function(b){b[0]+=a;b[1]+=h});g.push(b)})}return g}var E={successCallback:null,verbose:!1,polygons:!1,polygons_full:!1,interpolate:function(d,b,c,g){return d<b?d<c?(c-d)/(b-d):(g-d)/(b-d):d>g?(d-g)/(d-b):(d-c)/(d-b)},interpolate_a:function(d,b,c,g){return d<b?(c-
d)/(b-d):(d-g)/(d-b)},interpolate_b:function(d,b,c,g){return...
JavaScript
function drawMarchingSquaresContours(divId) {
// var zs = [0, 3];
var zs = [3, 5];
// var zs = [5, 7];
// var zs = [7, 10];
// var zs = [10, 15];
var data = [
[ 1, 1, 1, 1, 1, 1, 1],
[ 1, 5, 5, 5, 5, 5, 1],
[ 1, 5, 15, 15, 15, 5, 1],
[ 1, 5, 10, 10, 10, 5, 1],
[ 1, 5, 5, 5, 5, 5, 1],
[ 1, 1, 1, 1, 1, 1, 1]
];
// data = d3.transpose(data);
var xs = d3.range(0, data[0].length);
var ys = d3.range(0, data.length);
var marginBottomLabel = 0;
var width = 150;
var height = width * (ys.length / xs.length);
var xScale = d3.scale.linear()
.range([0, width])
.domain([Math.min.apply(null, xs), Math.max.apply(null, xs)]);
var yScale = d3.scale.linear()
.range([0, height])
.domain([Math.min.apply(null, ys), Math.max.apply(null, ys)]);
var colours = d3.scale.linear().domain([zs[0], zs[zs.length - 1]])
.range([d3.rgb(0, 0, 0),
d3.rgb(200, 200, 200)]);
var isoBands = [];
for (var i = 1; i < zs.length; i++) {
var lowerBand = zs[i - 1];
var upperBand = zs[i];
var band = MarchingSquaresJS.isoBands(data, lowerBand, upperBand - lowerBand, {
successCallback: function(band) {
// console.log('band', JSON.stringify(band));
},
progressCallback: function () {
// console.log('progress callback:', arguments, i)
},
verbose: false,
polygons: false
});
isoBands.push({"coords": band, "level": i, "val": zs[i]});
}
var svg = d3.select(divId)
.append("svg")
.attr("width", width)
.attr("height", height + marginBottomLabel);
/*
...