Extrapolar valores entre valores conhecidos

De vez em quando, especialmente se eu fizer alguns jogos de prova de conceito ou qualquer coisa da natureza em tempo real, preciso gerar rapidamente valores entre valores desejados conhecidos.

Exatamente o que uma função faz, certo?
Bem, algumas coisas não são facilmente expressas como uma função. Você pode saber onde deseja algum item em um conjunto discreto de pontos no tempo e simplesmente deseja que o item chegue lá a partir da posição anterior no tempo.

Entre na extraploation !
“Em matemática, extrapolação é o processo de estimar, além do intervalo de observação original, o valor de uma variável com base em sua relação com outra variável” – http://en.wikipedia.org/wiki/Extrapolation

Para fazer isso com relativa facilidade, escrevi um pequeno módulo JavaScript:
https://github.com/AlexanderBrevig/Extrapolate.js

Você pode configurá-lo assim:

// create an object for training
var extrapolate = new EXTRAPOLATE.LINEAR();

// for this example, ket's keep it simple
// f(x) = 2x
extrapolate
.given(0).get(0);
extrapolate
.given(1).get(2);
extrapolate
.given(2).get(4);
extrapolate
.given(4).get(8);
extrapolate
.given(5).get(10);

Então você pode pedir valores extrapolados como este:

extrapolate.valueFor(-1); // -2
extrapolate
.valueFor(2); // 4
extrapolate
.valueFor(10); // 20