Хранить и получать доступ к ключевым кадрам для анимации

Я хочу создать систему анимации в C ++, в которой я храню ключевые кадры, которые имеют время и значение. Эти значения должны быть интерполированы во время воспроизведения, поэтому мне нужно, чтобы они сортировались по их переменной времени. Потому что при интерполяции я всегда хочу интерполировать только между последним и следующим ключевым кадром (как это обычно делается).

Как мне хранить ключевые кадры, чтобы я мог легко (и быстро) получить доступ к ключевому кадру до и после определенного времени?

Сначала мне пришло в голову std :: map, но там у меня проблемы с правильным порядком ключевых кадров … Есть идеи, как сделать это лучше?

1

Решение

Вы можете использовать std :: vector и сохранять правильный порядок ключевых кадров.
Предполагая, что ключевые кадры отсортированы по времени в векторе, вы можете извлечь
соответствующий ключевой кадр с std::lower_bound или же std::binary_search в логарифмическом времени.

std::map внутренне хранит элементы отсортированные по ключу
следуя строгому критерию слабого порядка. Итак, если вы используете время в качестве ключа, вы
сохранит правильный порядок ключевых кадров.

Лично я бы использовал std :: vector.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]