Melhor maneira do que se else if else… para interpolação linear
pergunta é fácil. Vamos dizer que você tem função
double interpolate (double x);
e você tem uma tabela que tem mapa de x-> y conhecido
por exemplo
5 15
7 18
10 22
Nota: mesas reais são maiores ofc, isso é apenas exemplo.
então para 8 você retornaria 18 + ((8-7) / (10-7)) * (22-18) = 19.3333333
Uma maneira legal que eu encontrei éhttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (longa história curta usa std :: map, key = x, valor = y para pares de dados x-> y).
Se alguém perguntar qual é o caminho if else if else no título é basicamente:
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
Então, existe uma maneira mais inteligente de fazê-lo ou mapear o caminho é o estado da arte? :)
Btw eu prefiro soutions em C ++, mas, obviamente, qualquer solução de linguagem que tenha mapeamento 1: 1 para C ++ é legal.