diff --git a/src/deficiency.js b/src/deficiency.js index be66bd09..ec02051e 100644 --- a/src/deficiency.js +++ b/src/deficiency.js @@ -155,9 +155,9 @@ const TRIT = [ ]; const deficiency = (lut, t) => { - let tt = Math.max(0, Math.min(1, t)); - let i = Math.round(tt / 0.1); - let w = Math.round(tt % 0.1); + let tt = Math.max(0, Math.min(1, t)) * (lut.length - 1); + let i = Math.floor(tt); + let w = tt - i; let arr = lut[i]; if (w > 0 && i < lut.length - 1) { let arr_2 = lut[i + 1]; diff --git a/test/deficiency.test.js b/test/deficiency.test.js index c05d12af..cb176a53 100644 --- a/test/deficiency.test.js +++ b/test/deficiency.test.js @@ -14,9 +14,13 @@ test('0 severity', t => { }); test('0.55 severity', t => { - assert.equal(formatHex(filterDeficiencyProt(0.55)('blue')), '#0012ff'); + assert.equal(formatHex(filterDeficiencyProt(0.55)('blue')), '#0011ff'); assert.equal(formatHex(filterDeficiencyDeuter(0.55)('blue')), '#000afa'); - assert.equal(formatHex(filterDeficiencyTrit(0.55)('blue')), '#000fae'); + assert.equal(formatHex(filterDeficiencyTrit(0.55)('blue')), '#000eb6'); +}); + +test('severity interpolates between matrices', t => { + assert.equal(formatHex(filterDeficiencyProt(0.05)('#ff8800')), '#f98900'); }); test('1 severity', t => {