Вы интерполируете, чтобы найти состояния между известными значениями, и вы экстраполируете, чтобы найти будущие состояния.
Думайте о проблеме в терминах переменных состояния, таких как положения и скорости. В лучшем из всех сценариев каждый компьютер, который должен работать с состоянием, имеет доступ к данным состояния в течение времени, когда они хотят работать. Например, алгоритм столкновения, позволяющий увидеть, выстрелил ли из лазерной винтовки X игрок А, в лучшую сторону, лучший из всех случаев, когда алгоритм знает точное положение каждого объекта в момент запуска лазера.
В реальном мире нам не всегда так везет. Иногда информация правды, которую мы получаем, более скудна. Например, если игрок А является удаленным игроком на другом компьютере, вы можете не знать точно, куда они идут, когда вы запускаете лазер, и вам нужно рассчитать выстрел. В этом случае вам необходимо создать оценщик для позиции А, обычно с интерполяцией или экстраполяцией.
Разница между ними заключается в том, есть ли у вас данные, ограниченные с обеих сторон, или только с одной стороны. Допустим, игрок A уже объявил свою правдивую позицию для t = 0 и t = 1. Игрок B стреляет лазером при t = 0,5. Во многих ситуациях объявление игрока A о своей позиции в момент времени t = 1 может произойти до того, как игрок B нажмет на курок. Почему? Во многих играх отзывчивость элементов управления менее чем мгновенная. В гоночном симуляции большая часть позиции игрока ограничена физикой движущегося транспортного средства. Вы можете объявить «будущую позицию», потому что знаете, что действительно не сможете управлять всем этим за короткий период. Если у вас есть информация в будущем, вы можете интерполировать между двумя значениями.
Что если вам не повезло иметь значение = 1? Что если игрок А не был в состоянии объявить свое будущее местоположение, и вы застряли, решая, ударили вы или пропустили только информацию с t = 0? В этом случае вы должны экстраполировать. В экстраполяции вы используете то, что знаете о движении, чтобы выйти за пределы ваших данных. Возможно, вы знаете, что у игрока А есть определенная скорость, поэтому предположите, что если вы умножите ее на время, вы сможете получить позицию в каждый раз.
Разница в поведении. Интерполяция требует, чтобы у вас была верхняя и нижняя границы, которые вы не всегда имеете. Однако почти во всех ситуациях он дает значительно лучшие результаты, чем экстраполяция. Экстраполяция может легко привести к нереалистичным движениям. Рассмотрим случай, когда игрок обходит стороной влево и вправо, чтобы не быть застреленным во время продвижения. В любой момент их скорость находится по диагонали, поэтому, если вы экстраполируете, игрок может уйти в сторону, хотя на самом деле он этого не делает. Если вы выполняете только интерполяцию, значения не отклоняются от реалистичных значений.
Интерполяция и экстраполяция - две крайности в мире фильтрации. Существует много-много-много-много фильтров для обработки таких данных, которые смешивают и сопоставляют свойства между интерполяцией и экстраполяцией. Соответственно, не удивляйтесь, если увидите алгоритмы, которые не имеют четкой интерполяции или явно экстраполяции. Эти двое - лишь верхушка айсберга.