Skip to content

Commit 151954c

Browse files
Interpolate contours in linear space
1 parent 9eca1fd commit 151954c

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/traces/contour/find_all_paths.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,16 +269,25 @@ function getInterpPx(pi, loc, step) {
269269
var xa = pi.xaxis;
270270
var ya = pi.yaxis;
271271

272+
// Interpolate in linear space, then convert to pixel
272273
if(step[1]) {
273274
var dx = (pi.level - zxy) / (pi.z[locy][locx + 1] - zxy);
275+
// Interpolate, but protect against NaN linear values for log axis (dx will equal 1 or 0)
276+
var dxl =
277+
(dx !== 1 ? (1 - dx) * xa.c2l(pi.x[locx]) : 0)
278+
+ (dx !== 0 ? dx * xa.c2l(pi.x[locx + 1]) : 0);
274279

275-
return [xa.c2p((1 - dx) * pi.x[locx] + dx * pi.x[locx + 1], true),
280+
return [xa.l2p(dxl, true),
276281
ya.c2p(pi.y[locy], true),
277282
locx + dx, locy];
278283
} else {
279284
var dy = (pi.level - zxy) / (pi.z[locy + 1][locx] - zxy);
285+
var dyl =
286+
(dy !== 1 ? (1 - dy) * ya.c2l(pi.y[locy]) : 0)
287+
+ (dy !== 0 ? dy * ya.c2l(pi.y[locy + 1]) : 0);
288+
280289
return [xa.c2p(pi.x[locx], true),
281-
ya.c2p((1 - dy) * pi.y[locy] + dy * pi.y[locy + 1], true),
290+
ya.l2p(dyl, true),
282291
locx, locy + dy];
283292
}
284293
}

0 commit comments

Comments
 (0)