Vous interpolez pour trouver des états entre des valeurs connues et vous extrapolez pour trouver des états futurs.
Pensez au problème en termes de variables d'état, comme les positions et les vitesses. Dans le meilleur des cas, chaque ordinateur qui a besoin de travailler avec l'état a accès aux données d'état pendant le temps sur lequel il souhaite travailler. Par exemple, un algorithme de collision pour voir si le coup de fusil laser X intercepte la tête du joueur A, le meilleur de tous les cas est lorsque l'algorithme connaît la position exacte de chaque objet au moment où le laser a été tiré.
Dans le monde réel, nous n'avons pas toujours autant de chance. Parfois, les informations de vérité que nous recevons sont plus rares. Par exemple, si le joueur A est un joueur distant sur un autre ordinateur, vous ne savez peut-être pas exactement où ils vont lorsque vous tirez au laser et devez calculer le tir. Dans ce cas, vous devez créer un estimateur pour la position de A, généralement avec interpolation ou extrapolation.
La différence entre les deux est de savoir si vous avez des données limitées des deux côtés ou d'un seul côté. Disons que le joueur A a déjà annoncé sa position de vérité pour t = 0 et t = 1. Le joueur B tire un laser à t = 0,5. Dans de nombreuses situations, l'annonce du joueur A de sa position à t = 1 peut se produire avant que le joueur B n'appuie sur la détente. Pourquoi? Dans de nombreux jeux, la réactivité des commandes est loin d'être parfaitement instantanée. Dans une simulation de course, une grande partie de la position du joueur est limitée par la physique d'un véhicule en mouvement. Vous pouvez choisir d'annoncer une "position future" parce que vous savez que vous ne pouvez vraiment pas diriger tout cela sur une courte période. Si vous disposez d'informations à l'avenir, vous pouvez interpoler entre les deux valeurs.
Et si vous n'avez pas la chance d'avoir une valeur à = 1? Et si le joueur A n'était pas en mesure d'annoncer sa position future et que vous êtes obligé de décider si vous avez touché ou manqué avec uniquement les informations de t = 0? Dans ce cas, vous devez extrapoler. En extrapolation, vous utilisez ce que vous savez sur la requête pour vous étendre au-delà des données dont vous disposez. Vous savez peut-être que le joueur A a une certaine vitesse, alors supposez que si vous multipliez cela par le temps, vous pouvez obtenir une position à chaque fois.
La différence réside dans les comportements. L'interpolation nécessite que vous ayez une borne supérieure et une borne inférieure, ce que vous n'avez pas toujours. Cependant, dans presque toutes les situations, les résultats sont bien meilleurs que l'extrapolation. L'extrapolation peut facilement conduire à des mouvements irréalistes. Prenons le cas d'un joueur qui contourne à gauche et à droite pour éviter d'être abattu en avançant. À un moment donné, leur vitesse est le long d'une diagonale, donc si vous extrapolez, le joueur peut sembler courir sur le côté alors qu'en fait, il ne le fait jamais. Si vous effectuez uniquement une interpolation, les valeurs ont tendance à ne pas s'écarter des valeurs réalistes.
L'interpolation et l'extrapolation sont deux extrêmes dans le monde du filtrage. Il existe de nombreux filtres pour gérer des données comme celle-ci qui mélangent et associent les propriétés entre interpolation et extrapolation. Par conséquent, ne soyez pas surpris si vous voyez des algorithmes qui ne sont pas clairement des interpolations ou clairement des extrapolations. Ces deux ne sont que la pointe de l'iceberg.