Поиск таблиц в C ++ - PullRequest
       2

Поиск таблиц в C ++

0 голосов
/ 04 августа 2010

Я должен реализовать небольшой графический элемент управления несколькими изображениями, который по сути представляет собой массив из 9 изображений, показанных одно за другим. Конечная цель - выступить в роли мини-слайдера.

Теперь этот графический элемент управления будет получать различные целочисленные диапазоны: от 5 до 25, от 0 до 7 или от -9 до 9.

Если я собираюсь использовать пропорцию - «правило трех», я боюсь, что это технически невозможно, потому что это может быть источником ошибок. Я предполагаю использовать некоторые справочные таблицы, но есть ли у кого-нибудь хороший совет для подхода?

Thnx

Ответы [ 2 ]

1 голос
/ 04 августа 2010

Я не уверен, что нужны таблицы поиска. Вы можете перейти от введенного значения к индексу изображения от 0 до 9 пропорционально:

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;
}
0 голосов
/ 04 августа 2010

да, справочная таблица является хорошим решением

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));
...