10000 pull out some pure functions from heatmap/plot for easier reasoning · jason-curtis/plotly.js@4060ec7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4060ec7

Browse files
committed
pull out some pure functions from heatmap/plot for easier reasoning
1 parent ec96873 commit 4060ec7

File tree

1 file changed

+61
-61
lines changed

1 file changed

+61
-61
lines changed

src/traces/heatmap/plot.js

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -196,60 +196,6 @@ function plotOne(gd, plotinfo, cd) {
196196
};
197197
}
198198

199-
// get interpolated bin value. Returns {bin0:closest bin, frac:fractional dist to next, bin1:next bin}
200-
function findInterp(pixel, pixArray) {
201-
var maxBin = pixArray.length - 2;
202-
var bin = Lib.constrain(Lib.findBin(pixel, pixArray), 0, maxBin);
203-
var pix0 = pixArray[bin];
204-
var pix1 = pixArray[bin + 1];
205-
var interp = Lib.constrain(bin + (pixel - pix0) / (pix1 - pix0) - 0.5, 0, maxBin);
206-
var bin0 = Math.round(interp);
207-
var frac = Math.abs(interp - bin0);
208-
209-
if(!interp || interp === maxBin || !frac) {
210-
return {
211-
bin0: bin0,
212-
bin1: bin0,
213-
frac: 0
214-
};
215-
}
216-
return {
217-
bin0: bin0,
218-
frac: frac,
219-
bin1: Math.round(bin0 + frac / (interp - bin0))
220-
};
221-
}
222-
223-
function findInterpFromCenters(pixel, centerPixArray) {
224-
// if(pixel <= centerPixArray[0]) return {bin0: 0, bin1: 0, frac: 0};
225-
10000 var maxBin = centerPixArray.length - 1;
226-
// if(pixel >= centerPixArray[lastCenter]) return {bin0: lastCenter, bin1: lastCenter, frac: 0};
227-
228-
var bin = Lib.constrain(Lib.findBin(pixel, centerPixArray), 0, maxBin);
229-
var pix0 = centerPixArray[bin];
230-
var pix1 = centerPixArray[bin + 1];
231-
var frac = ((pixel - pix0) / (pix1 - pix0)) || 0;
232-
if(frac <= 0) {
233-
return {
234-
bin0: bin,
235-
bin1: bin,
236-
frac: 0
237-
};
238-
}
239-
if(frac < 0.5) {
240-
return {
241-
bin0: bin,
242-
bin1: bin + 1,
243-
frac: frac
244-
};
245-
}
246-
return {
247-
bin0: bin + 1,
248-
bin1: bin,
249-
frac: 1 - frac
250-
};
251-
}
252-
253199
// build the pixel map brick-by-brick
254200
// cruise through z-matrix row-by-row
255201
// build a brick at each z-matrix value
@@ -281,13 +227,6 @@ function plotOne(gd, plotinfo, cd) {
281227
return [0, 0, 0, 0];
282228
}
283229

284-
function putColor(pixels, pxIndex, c) {
285-
pixels[pxIndex] = c[0];
286-
pixels[pxIndex + 1] = c[1];
287-
pixels[pxIndex + 2] = c[2];
288-
pixels[pxIndex + 3] = Math.round(c[3] * 255);
289-
}
290-
291230
function interpColor(r0, r1, xinterp, yinterp) {
292231
var z00 = r0[xinterp.bin0];
293232
if(z00 === undefined) return setColor(undefined, 1);
@@ -444,3 +383,64 @@ function plotOne(gd, plotinfo, cd) {
444383

445384
image3.exit().remove();
446385
}
386+
387+
// get interpolated bin value. Returns {bin0:closest bin, frac:fractional dist to next, bin1:next bin}
388+
function findInterp(pixel, pixArray) {
389+
var maxBin = pixArray.length - 2;
390+
var bin = Lib.constrain(Lib.findBin(pixel, pixArray), 0, maxBin);
391+
var pix0 = pixArray[bin];
392+
var pix1 = pixArray[bin + 1];
393+
var interp = Lib.constrain(bin + (pixel - pix0) / (pix1 - pix0) - 0.5, 0, maxBin);
394+
var bin0 = Math.round(interp);
395+
var frac = Math.abs(interp - bin0);
396+
397+
if(!interp || interp === maxBin || !frac) {
398+
return {
399+
bin0: bin0,
400+
bin1: bin0,
401+
frac: 0
402+
};
403+
}
404+
return {
405+
bin0: bin0,
406+
frac: frac,
407+
bin1: Math.round(bin0 + frac / (interp - bin0))
408+
};
409+
}
410+
411+
function findInterpFromCenters(pixel, centerPixArray) {
412+
// if(pixel <= centerPixArray[0]) return {bin0: 0, bin1: 0, frac: 0};
413+
var maxBin = centerPixArray.length - 1;
414+
// if(pixel >= centerPixArray[lastCenter]) return {bin0: lastCenter, bin1: lastCenter, frac: 0};
415+
416+
var bin = Lib.constrain(Lib.findBin(pixel, centerPixArray), 0, maxBin);
417+
var pix0 = centerPixArray[bin];
418+
var pix1 = centerPixArray[bin + 1];
419+
var frac = ((pixel - pix0) / (pix1 - pix0)) || 0;
420+
if(frac <= 0) {
421+
return {
422+
bin0: bin,
423+
bin1: bin,
424+
frac: 0
425+
};
426+
}
427+
if(frac < 0.5) {
428+
return {
429+
bin0: bin,
430+
bin1: bin + 1,
431+
frac: frac
432+
};
433+
}
434+
return {
435+
bin0: bin + 1,
436+
bin1: bin,
437+
frac: 1 - frac
438+
};
439+
}
440+
441+
function putColor(pixels, pxIndex, c) {
442+
pixels[pxIndex] = c[0];
443+
pixels[pxIndex + 1] = c[1];
444+
pixels[pxIndex + 2] = c[2];
445+
pixels[pxIndex + 3] = Math.round(c[3] * 255);
446+
}

0 commit comments

Comments
 (0)
0