Skip to content

Commit af0f4fd

Browse files
alexcjohnsonetpinard
authored andcommitted
fix #2088 - with tests!
1 parent 75987d0 commit af0f4fd

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

src/traces/contour/find_all_paths.js

+1
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ function makePath(pi, loc, edgeflag, xtol, ytol) {
216216
pi.paths.push(pts.concat(edgepath2));
217217
}
218218
else {
219+
if(edgei2 > edgei) edgei2--;
219220
pi.edgepaths[edgei2] =
220221
pi.edgepaths[edgei2].concat(pts, edgepath2);
221222
}

test/jasmine/tests/contour_test.js

+77
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,83 @@ describe('contour calc', function() {
345345
});
346346
});
347347

348+
describe('contour edge cases', function() {
349+
var gd;
350+
351+
beforeEach(function() {
352+
gd = createGraphDiv();
353+
});
354+
afterEach(destroyGraphDiv);
355+
356+
it('handles all sorts of merged edge paths', function() {
357+
var z = [
358+
[2.38, 2.34, 2.36, 2.37, 2.36, 2.37, 2.36, 2.36, 2.34, 2.35, 2.34, 2.36, 2.38, 2.37, 2.35, 2.34, 2.35, 2.36, 2.36, 2.34, 2.33, 2.34, 2.33, 2.37],
359+
[2.38, 2.35, 2.37, 2.38, 2.35, 2.35, 2.36, 2.38, 2.34, 2.35, 2.35, 2.35, 2.38, 2.36, 2.35, 2.35, 2.34, 2.35, 2.35, 2.33, 2.34, 2.34, 2.33, 2.36],
360+
[2.36, 2.33, 2.32, 2.33, 2.34, 2.34, 2.35, 2.31, 2.31, 2.32, 2.30, 2.33, 2.35, 2.33, 2.32, 2.31, 2.35, 2.33, 2.33, 2.31, 2.32, 2.30, 2.31, 2.34],
361+
[2.36, 2.34, 2.32, 2.31, 2.32, 2.34, 2.35, 2.33, 2.31, 2.34, 2.33, 2.33, 2.35, 2.33, 2.32, 2.32, 2.35, 2.33, 2.33, 2.33, 2.33, 2.30, 2.32, 2.34],
362+
[2.35, 2.35, 2.32, 2.31, 2.30, 2.31, 2.32, 2.32, 2.31, 2.31, 2.32, 2.33, 2.32, 2.32, 2.32, 2.29, 2.32, 2.31, 2.31, 2.31, 2.30, 2.31, 2.30, 2.32],
363+
[2.34, 2.33, 2.31, 2.35, 2.31, 2.33, 2.34, 2.34, 2.32, 2.31, 2.32, 2.33, 2.33, 2.32, 2.33, 2.33, 2.33, 2.33, 2.32, 2.32, 2.32, 2.33, 2.33, 2.32],
364+
[2.33, 2.32, 2.32, 2.31, 2.31, 2.32, 2.33, 2.31, 2.32, 2.31, 2.30, 2.31, 2.34, 2.32, 2.32, 2.31, 2.32, 2.32, 2.32, 2.31, 2.31, 2.31, 2.30, 2.34],
365+
[2.34, 2.32, 2.33, 2.33, 2.32, 2.32, 2.32, 2.31, 2.32, 2.30, 2.32, 2.33, 2.33, 2.32, 2.32, 2.32, 2.32, 2.32, 2.33, 2.32, 2.32, 2.31, 2.32, 2.32],
366+
[2.32, 2.32, 2.31, 2.30, 2.31, 2.31, 2.31, 2.29, 2.31, 2.32, 2.30, 2.33, 2.33, 2.29, 2.31, 2.32, 2.31, 2.33, 2.32, 2.31, 2.31, 2.31, 2.30, 2.32],
367+
[2.33, 2.33, 2.32, 2.33, 2.33, 2.33, 2.32, 2.32, 2.32, 2.32, 2.30, 2.32, 2.31, 2.33, 2.32, 2.33, 2.32, 2.33, 2.34, 2.31, 2.32, 2.31, 2.31, 2.32],
368+
[2.33, 2.31, 2.31, 2.30, 2.30, 2.31, 2.32, 2.33, 2.29, 2.29, 2.30, 2.31, 2.32, 2.32, 2.32, 2.31, 2.32, 2.30, 2.32, 2.30, 2.31, 2.29, 2.29, 2.30],
369+
[2.32, 2.31, 2.32, 2.32, 2.31, 2.32, 2.33, 2.33, 2.31, 2.31, 2.32, 2.33, 2.33, 2.32, 2.33, 2.33, 2.30, 2.32, 2.31, 2.30, 2.30, 2.31, 2.31, 2.31],
370+
[2.33, 2.32, 2.32, 2.30, 2.30, 2.30, 2.30, 2.31, 2.30, 2.31, 2.31, 2.30, 2.32, 2.31, 2.29, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 2.30, 2.30, 2.32],
371+
[2.33, 2.33, 2.32, 2.32, 2.30, 2.33, 2.31, 2.31, 2.32, 2.32, 2.32, 2.32, 2.34, 2.31, 2.32, 2.32, 2.32, 2.33, 2.32, 2.31, 2.31, 2.31, 2.31, 2.32],
372+
[2.33, 2.33, 2.30, 2.33, 2.31, 2.32, 2.31, 2.31, 2.30, 2.31, 2.30, 2.32, 2.33, 2.32, 2.31, 2.30, 2.31, 2.33, 2.31, 2.32, 2.30, 2.31, 2.31, 2.32],
373+
[2.33, 2.33, 2.31, 2.32, 2.32, 2.33, 2.33, 2.32, 2.32, 2.34, 2.33, 2.33, 2.33, 2.34, 2.32, 2.31, 2.31, 2.32, 2.32, 2.32, 2.30, 2.32, 2.32, 2.32],
374+
[2.32, 2.31, 2.32, 2.33, 2.31, 2.33, 2.32, 2.32, 2.32, 2.31, 2.31, 2.37, 2.32, 2.31, 2.31, 2.30, 2.31, 2.32, 2.31, 2.31, 2.30, 2.31, 2.31, 2.35],
375+
[2.33, 2.32, 2.32, 2.31, 2.34, 2.35, 2.32, 2.33, 2.33, 2.32, 2.33, 2.34, 2.33, 2.33, 2.32, 2.32, 2.33, 2.34, 2.32, 2.32, 2.31, 2.31, 2.32, 2.33],
376+
[2.32, 2.34, 2.30, 2.33, 2.30, 2.32, 2.33, 2.33, 2.32, 2.31, 2.30, 2.31, 2.32, 2.30, 2.31, 2.29, 2.31, 2.31, 2.31, 2.31, 2.30, 2.32, 2.30, 2.31],
377+
[2.32, 2.32, 2.32, 2.32, 2.32, 2.33, 2.34, 2.34, 2.32, 2.32, 2.32, 2.32, 2.34, 2.30, 2.31, 2.34, 2.32, 2.33, 2.32, 2.30, 2.31, 2.34, 2.31, 2.32],
378+
[2.31, 2.30, 2.33, 2.30, 2.29, 2.30, 2.31, 2.32, 2.30, 2.30, 2.32, 2.31, 2.32, 2.32, 2.31, 2.31, 2.30, 2.32, 2.31, 2.31, 2.31, 2.31, 2.30, 2.29],
379+
[2.32, 2.32, 2.31, 2.31, 2.31, 2.34, 2.32, 2.32, 2.33, 2.30, 2.32, 2.33, 2.32, 2.32, 2.31, 2.31, 2.31, 2.32, 2.29, 2.32, 2.31, 2.31, 2.31, 2.32],
380+
[2.32, 2.30, 2.31, 2.31, 2.29, 2.32, 2.32, 2.33, 2.30, 2.31, 2.30, 2.30, 2.31, 2.32, 2.30, 2.30, 2.31, 2.31, 2.32, 2.31, 2.30, 2.31, 2.32, 2.31],
381+
[2.32, 2.31, 2.32, 2.34, 2.32, 2.32, 2.32, 2.32, 2.32, 2.32, 2.32, 2.34, 2.34, 2.32, 2.32, 2.34, 2.31, 2.30, 2.33, 2.31, 2.34, 2.31, 2.33, 2.31],
382+
[2.33, 2.31, 2.29, 2.31, 2.32, 2.30, 2.34, 2.31, 2.31, 2.32, 2.32, 2.31, 2.31, 2.30, 2.31, 2.29, 2.31, 2.31, 2.31, 2.29, 2.31, 2.31, 2.33, 2.30],
383+
[2.33, 2.30, 2.31, 2.31, 2.31, 2.32, 2.35, 2.33, 2.32, 2.31, 2.31, 2.31, 2.32, 2.32, 2.31, 2.32, 2.31, 2.33, 2.31, 2.33, 2.33, 2.33, 2.32, 2.33],
384+
[2.30, 2.30, 2.31, 2.33, 2.30, 2.31, 2.31, 2.31, 2.29, 2.32, 2.29, 2.31, 2.31, 2.31, 2.31, 2.30, 2.29, 2.32, 2.31, 2.31, 2.31, 2.32, 2.32, 2.30],
385+
[2.32, 2.31, 2.31, 2.31, 2.32, 2.33, 2.32, 2.34, 2.30, 2.32, 2.33, 2.31, 2.33, 2.32, 2.31, 2.32, 2.32, 2.32, 2.32, 2.30, 2.32, 2.32, 2.32, 2.32],
386+
[2.34, 2.33, 2.30, 2.30, 2.33, 2.30, 2.31, 2.31, 2.31, 2.30, 2.31, 2.31, 2.35, 2.31, 2.32, 2.32, 2.30, 2.31, 2.32, 2.32, 2.31, 2.31, 2.31, 2.31],
387+
[2.35, 2.32, 2.30, 2.32, 2.31, 2.32, 2.33, 2.34, 2.34, 2.31, 2.33, 2.32, 2.35, 2.36, 2.31, 2.34, 2.33, 2.33, 2.32, 2.33, 2.32, 2.32, 2.33, 2.34],
388+
[2.34, 2.31, 2.30, 2.31, 2.32, 2.34, 2.34, 2.29, 2.29, 2.30, 2.30, 2.32, 2.31, 2.32, 2.32, 2.31, 2.30, 2.31, 2.33, 2.32, 2.33, 2.32, 2.29, 2.32],
389+
[2.33, 2.34, 2.33, 2.33, 2.32, 2.34, 2.34, 2.33, 2.32, 2.33, 2.33, 2.33, 2.33, 2.32, 2.33, 2.33, 2.31, 2.33, 2.33, 2.32, 2.33, 2.34, 2.32, 2.31],
390+
[2.33, 2.32, 2.31, 2.30, 2.32, 2.31, 2.31, 2.32, 2.31, 2.30, 2.29, 2.32, 2.33, 2.31, 2.33, 2.30, 2.30, 2.31, 2.31, 2.31, 2.32, 2.32, 2.34, 2.32],
391+
[2.32, 2.32, 2.31, 2.32, 2.32, 2.32, 2.35, 2.33, 2.33, 2.31, 2.32, 2.34, 2.32, 2.32, 2.36, 2.33, 2.33, 2.33, 2.32, 2.34, 2.36, 2.32, 2.34, 2.32],
392+
[2.32, 2.30, 2.30, 2.32, 2.32, 2.32, 2.31, 2.31, 2.31, 2.29, 2.30, 2.34, 2.32, 2.32, 2.30, 2.31, 2.34, 2.32, 2.32, 2.32, 2.32, 2.30, 2.30, 2.30],
393+
[2.32, 2.30, 2.33, 2.33, 2.34, 2.32, 2.32, 2.31, 2.32, 2.31, 2.33, 2.32, 2.34, 2.33, 2.31, 2.33, 2.33, 2.32, 2.32, 2.31, 2.33, 2.31, 2.31, 2.32],
394+
[2.30, 2.33, 2.30, 2.31, 2.32, 2.30, 2.31, 2.31, 2.31, 2.30, 2.31, 2.33, 2.32, 2.30, 2.30, 2.32, 2.30, 2.31, 2.31, 2.31, 2.30, 2.30, 2.30, 2.31],
395+
[2.34, 2.32, 2.33, 2.34, 2.33, 2.33, 2.33, 2.32, 2.32, 2.32, 2.33, 2.34, 2.32, 2.32, 2.32, 2.31, 2.34, 2.32, 2.31, 2.31, 2.32, 2.31, 2.31, 2.33],
396+
[2.32, 2.32, 2.31, 2.30, 2.31, 2.30, 2.31, 2.30, 2.31, 2.31, 2.30, 2.32, 2.33, 2.31, 2.31, 2.30, 2.31, 2.32, 2.31, 2.31, 2.31, 2.30, 2.31, 2.32],
397+
[2.33, 2.32, 2.33, 2.32, 2.32, 2.33, 2.32, 2.32, 2.33, 2.31, 2.33, 2.32, 2.32, 2.32, 2.33, 2.31, 2.32, 2.34, 2.33, 2.31, 2.33, 2.31, 2.34, 2.34],
398+
[2.34, 2.31, 2.31, 2.32, 2.30, 2.34, 2.32, 2.31, 2.30, 2.30, 2.31, 2.32, 2.33, 2.31, 2.30, 2.32, 2.30, 2.32, 2.32, 2.32, 2.29, 2.32, 2.31, 2.31],
399+
[2.33, 2.33, 2.32, 2.34, 2.34, 2.33, 2.32, 2.31, 2.32, 2.33, 2.33, 2.31, 2.33, 2.32, 2.32, 2.36, 2.31, 2.33, 2.31, 2.32, 2.31, 2.32, 2.33, 2.31],
400+
[2.33, 2.31, 2.30, 2.31, 2.31, 2.31, 2.31, 2.31, 2.31, 2.29, 2.30, 2.31, 2.31, 2.30, 2.29, 2.30, 2.31, 2.31, 2.31, 2.30, 2.31, 2.30, 2.30, 2.33],
401+
[2.32, 2.31, 2.33, 2.29, 2.30, 2.32, 2.31, 2.32, 2.31, 2.30, 2.32, 2.33, 2.32, 2.32, 2.32, 2.33, 2.31, 2.32, 2.32, 2.32, 2.32, 2.32, 2.30, 2.32],
402+
[2.33, 2.32, 2.32, 2.32, 2.30, 2.33, 2.31, 2.32, 2.31, 2.30, 2.31, 2.33, 2.33, 2.32, 2.32, 2.31, 2.31, 2.31, 2.31, 2.31, 2.29, 2.31, 2.31, 2.31],
403+
[2.33, 2.33, 2.33, 2.32, 2.31, 2.33, 2.33, 2.32, 2.34, 2.33, 2.34, 2.34, 2.33, 2.33, 2.31, 2.32, 2.31, 2.33, 2.34, 2.31, 2.32, 2.32, 2.32, 2.33],
404+
[2.35, 2.33, 2.31, 2.32, 2.32, 2.34, 2.35, 2.31, 2.32, 2.30, 2.31, 2.33, 2.33, 2.32, 2.32, 2.32, 2.32, 2.40, 2.33, 2.32, 2.34, 2.31, 2.31, 2.34],
405+
[2.35, 2.33, 2.33, 2.32, 2.33, 2.34, 2.34, 2.32, 2.33, 2.32, 2.33, 2.34, 2.36, 2.33, 2.33, 2.34, 2.34, 2.34, 2.34, 2.34, 2.34, 2.32, 2.34, 2.35]
406+
];
407+
408+
var data = [{
409+
z: z,
410+
type: 'contour',
411+
showscale: true,
412+
contours: {
413+
start: 2.2,
414+
end: 2.4,
415+
size: 0.02
416+
}
417+
}];
418+
Plotly.newPlot(gd, data);
419+
420+
expect(document.querySelectorAll('.contour .openline').length).toBe(22);
421+
expect(document.querySelectorAll('.contour .closedline').length).toBe(122);
422+
});
423+
});
424+
348425
describe('contour edits', function() {
349426
var gd;
350427

0 commit comments

Comments
 (0)