Pergunta

Eu tenho que implementar pequenos controle gráfico multimage, que, em essência, é uma matriz de 9 imagens, mostradas uma a uma. O objetivo final é atuar como minislider.

Agora, esse controle gráfico receberá vários intervalos inteiros: de 5 a 25 ou de 0 a 7 ou de -9 a 9.

Se eu vou usar a proporção - "regra de três", receio que não seja tecnicamente suficiente, porque pode ser uma fonte de erros. Meu palpite é usar algumas mesas de pesquisa, mas alguém tem um bom conselho para a abordagem?

Thnx

Foi útil?

Solução

Não tenho certeza de que as tabelas de procurar são necessárias. Você pode obter do seu valor de entrada para um índice de imagem entre 0 e 9 proporcionalmente:

int ConvertToImageArrayIndex(int inputValue)
{
    int maxInputFromOtherModule = 25;
    int minInputFromOtherModule = 5;


    // +1 required so include both min and max input values in possible range.
    // + 0.5 required so that round to the nearest image instead of always rounding down.
    // 8.0 required to get to an output range of 9 possible indexes [0..8]

    int imageIndex = ( (float)((inputValue-minInputFromOtherModule) * 8.0) / (float)(maxInputFromOtherModule - minInputFromOtherModule + 1) ) + 0.5;

    return imageIndex;
}

Outras dicas

Sim, uma tabela de pesquisa é uma boa solução

int lookup[9] = {5, 25, ... the other values };
int id1 = floor(slider);
int id2 = id1+1;
int texId1 = lookup[id1];
int texId2 = lookup[id2];
interpolate(texId1, texId2, slider - float(id1));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top