Quand dois-je extrapoler et quand dois-je interpoler?


16

J'ai du mal à comprendre quand extrapoler et quand interpoler. En gaffer sur les jeux, il a dit d'interpoler, mais dans un autre article, il a recommandé d'extrapoler le joueur. Ma question est donc de savoir quand est-il préférable d'extrapoler et quand est-il préférable d'interpoler?


22
Il y a deux genre de personnes. Ceux qui peuvent extrapoler à partir de données incomplètes
Almo

2
@Almo et quel est l'autre type? Dites-moi, je dois savoir!
DJMcMayhem

4
@DJMcMayhem ... et ceux qui aiment manger des bâtonnets de poisson.
user253751

4
Je ne comprends pas la question. Pouvez-vous expliquer une façon «d'interpoler» les points {(1, a), (2, b)} pour prédire c dans (3, c)? Et comment l'extrapoleriez-vous?
user541686

Réponses:


29

Vous interpolez lorsque vous connaissez les valeurs «avant» et «après».

Par exemple: dans un jeu pointer-cliquer, le joueur est actuellement en position X, et depuis son interface, il clique sur le spot Y. Vous devez interpoler le déplacement entre X et Y car vous connaissez les deux valeurs.

Vous extrapolez lorsque vous devinez ce qui va être une valeur future, en fonction de ce que vous savez déjà.

Par exemple: dans un jeu de tir à la première personne, le joueur est en position X et il a appuyé sur la flèche HAUT de son clavier pendant la dernière seconde, vous pouvez supposer qu'il recommencera pendant la seconde suivante, car c'est essentiellement le comportement le plus fréquent dans votre jeu; vous extrapolez donc la position selon laquelle il sera la prochaine image. Le serveur l'envoie aux autres clients du jeu, ce qui explique le retard dans la transmission du serveur aux joueurs.

L'extrapolation est principalement utilisée pour la prévision des mouvements. Il n'est pas nécessaire au serveur de jeu , mais les clients du jeu en ont besoin pour afficher une vision quelque peu réaliste et actuelle de l'état du jeu afin de donner une expérience visuelle fluide aux joueurs.


Je comprends cette partie mais ce que je ne comprends pas, c'est quand je devrais utiliser chacun. Comme par exemple, si j'interpole un joueur, il y aura un délai pour qu'il voit réellement le mouvement, mais si j'extrapole ce sera plus instantané mais ce ne sera peut-être pas précis et devra être corrigé. Est-il généralement plus souhaitable d'avoir le mouvement instantané d'extrapolation ou le mouvement plus cohérent d'interpolation?
J leong

@Jleong Vous voulez que le jeu soit aussi fluide que possible pour les utilisateurs. Vous interpolez l'état actuel du jeu et vous extrapolez comment il sera dans quelques images. Vous envoyez les valeurs extrapolées aux autres joueurs pour tenir compte du retard dans la transmission réseau. Si vous deviez envoyer les valeurs interpolées, le jeu semblerait en retard et ce ne serait pas amusant. (J'ai édité ma réponse. J'espère qu'elle éclaircira un peu plus.)
Vaillancourt

oh ok donc l'extrapolation est utilisée lorsque vous voulez que le client prédit ce qui va se passer? Si oui, quel est le point d'interpolation si vous pouvez toujours extrapoler pour garder le jeu proche du temps réel? donc comme un FPS, le joueur serait-il extrapolé et les autres joueurs interpolés?
J leong

Généralement, le serveur fait tout: il interpole sur ce qu'il sait, et sur cette base, il extrapole les valeurs et les envoie aux clients pour qu'ils arrivent à temps pour être présentés aux joueurs. Dans un FPS, l'interpolation est utilisée pour afficher des choses comme des projectiles, de l'IA, etc. Lors de l'exécution de la trame B (provenant de la trame A), elle interpole les valeurs de l'état de la trame B; il peut également commencer à prédire la trame C par interpolation des valeurs connues , mais il devra extrapoler des valeurs qu'il ne connaît pas (entrées du joueur). Il enverra alors l'état "futur" au client.
Vaillancourt

@Jleong Sans penser à la différence entre le client et le serveur, je peux utiliser l' interpolation pour dériver une position quelque part entre deux points connus (pour des choses comme vérifier une collision qui peut s'être produite entre les trames), ou plus loin, prendre cet ensemble de données et dériver des choses comme vitesse / trajectoire et accélération, étant donné un ensemble de points, et étant donné la dernière vitesse / accélération / trajectoire connue, je peux extrapoler où ces objets pourraient être, à l'avenir, en supposant un calendrier cohérent. Pour la communication serveur-client, la position extrapolée "optimiste" est utilisée.
Norguard

14

L'interpolation est effectuée lorsque vous avez à la fois une valeur de début et une valeur de fin, et que vous souhaitez estimer ce qui se passe entre cette valeur de début et de fin. Un exemple serait de déplacer un joueur de la position A à la position B dans un mouvement fluide.

L'extrapolation est effectuée lorsque vous avez une valeur de début, mais que vous n'avez pas encore de données pour la fin. Vous pouvez ensuite extrapoler en fonction des données dont vous disposez. Par exemple, sur la base des mouvements précédents d'un joueur, vous pouvez déterminer où il va probablement se trouver dans la prochaine image.


2

Interpolez toujours quand vous le pouvez.

Lorsque vous n'avez pas assez d'informations pour interpoler, vous devez extrapoler.

C'est vraiment aussi simple que ça, ne pensez pas trop :)

Pour expliquer un peu plus:

En général, l'interpolation est meilleure car l'interpolation est toujours correcte. Pour extrapoler, il faut deviner. Ensuite, vous devez faire face à ce qui se passe lorsque vous vous trompez, ce qui conduit à des élastiques ou à des éclats et à toutes sortes de systèmes pour gérer tout cela et le camoufler.

Que se passe-t-il si vous extrapolez une position de chauve-souris et montrez qu'elle va au bon endroit et fait rebondir la balle, puis réalisez ensuite que vous aviez tort et qu'elle n'a pas fait rebondir la balle? Il n'existe aucun bon moyen de gérer ce scénario.


oh ok donc en pong, la pagaie de l'utilisateur est prédite et la balle et les autres pagaies sont interpolées?
J leong

Cela dépend entièrement de la façon dont vous l'implémentez. Voir ma modification pour plus d'informations.
Tim B

2

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.


1

L'interpolation utilise des données connues pour calculer une donnée dans les limites de l'ensemble de données (entre autres le préfixe «intérieur»). L'extrapolation consiste à calculer une donnée en dehors des limites des données existantes (en plus du préfixe «extérieur»). Les deux sont utilisés pour synthétiser des données supplémentaires, la méthode exacte de calcul définissant la fiabilité attendue des données générées.

Ou pour le mettre dans un diagramme très simple:

A - - - - - B - - - - - C - - - - - D

Compte tenu des points de données Aet Cvous pouvez interpoler Bet extrapoler D.


La précision d'une interpolation ou d'une extrapolation dépend entièrement de la façon dont vous pouvez tenir compte de chaque variable dans le calcul. Si vous connaissez toutes les variables et avez une équation qui les tient toutes en compte, vous pouvez interpoler ou extrapoler avec la même facilité.

Pour la mécanique du jeu, les facteurs limitants seront les points auxquels les variables sont influencées de manière imprévisible, soit par le joueur, soit par un élément aléatoire ou pseudo-aléatoire.

Par exemple, le mouvement d'une balle dans Breakout (dans sa forme la plus simple) peut être extrapolé jusqu'au point où elle pourrait potentiellement interagir avec la raquette du joueur. Toutes les variables peuvent être prises en compte jusqu'à ce point et vous pouvez donc modéliser avec précision les actions de la balle. Quand il atteint le point où l'interaction du joueur est possible, il existe un certain nombre de résultats possibles et aucun moyen de modéliser avec précision lequel de ces résultats sera le cas jusqu'à ce qu'il se produise réellement. Il s'agit de la limite prédictive du modèle de physique des jeux.

L'interpolation est plus simple dans les jeux car vous travaillez avec des points connus et vous n'avez pas à vous demander si les conditions vont changer. De plus, vous avez un contrôle total sur les variables impliquées et pouvez utiliser toutes les règles que vous définissez pour déterminer le chemin d'un objet. Plus les règles sont complexes, plus il peut être difficile d'interpoler.

Pour le mouvement d'objets avec de simples collisions dans un espace de jeu sans gravité (comme Breakout ou Pong), le mécanisme d'interpolation le long d'une ligne sur le chemin est une simple interpolation linéaire des points, et le même calcul peut être utilisé pour extrapoler la ligne à test pour les collisions futures. Une fois qu'une collision est détectée, vous pouvez extrapoler l'effet de cette collision sur les objets impliqués.


C'est exactement la différence entre les mots. La raison pour laquelle nous avons des mots différents pour deviner B et D quand tout ce que nous avons est A et C est parce que deviner correctement B est tellement plus facile que deviner correctement D. Les experts en artillerie appellent l'interpolation du backeting. Ils obtiennent deux tours de marquage de chaque côté de vous, vous êtes mort si vous ne bougez pas. L'extrapolation est ce que vous essayez de faire lorsque vous jouez en bourse après avoir regardé les graphiques des cours des actions. L'extrapolation est difficile.
candied_orange

@CandiedOrange L'extrapolation de systèmes complexes est difficile, tout comme l'interpolation. Cela dépend de la qualité de vos points de données et de la prévisibilité du système. Si vous pouvez dériver une équation précise qui décrit le système, vous pouvez interpoler ou extrapoler avec précision - les lignes sont simples à extrapoler, les courbes peuvent l'être, les marchés boursiers moins.
Corey

Par dur, je veux dire que l'interpolation vous donne le théorème fondamental du calcul sur lequel se rabattre. L'extrapolation ne fonctionne pas. A et C vous disent que B est quelque part qui a rendu C possible étant donné A. Demander à D, c'est demander de prédire l'avenir. Pour tout ce que vous savez, C est l'endroit où le joueur est mort. Laquelle est la plus fiable et la plus acceptable: interpolation ou extrapolation? pourquoi l'extrapolation est plus risquée que l'interpolation
candied_orange

@CandiedOrange Bien sûr, l'extrapolation est limitée au degré auquel vous pouvez contrôler et prédire toutes les variables pertinentes. L'interpolation l'est aussi. Étant donné deux positions qu'un joueur a occupées dans le passé, vous ne pouvez pas nécessairement interpoler avec précision un point médian, car le joueur peut avoir varié sur une trajectoire directe ou optimale. Les deux méthodes sont limitées.
Corey

Bien sûr, les deux sont limités. Mais l'un détruit les carrières plus souvent que l'autre. Devinez qui. Je ne prétends pas que l'interpolation est parfaite. C'est que les voir comme ayant le même pouvoir prédictif est dangereux.
candied_orange

0

La réponse courte: vous interpolez lorsque vous devez estimer une valeur entre deux valeurs connues (c'est-à-dire: en une heure la valeur est 1, en 3 heures c'est trois, pour interpoler la valeur à 2 à la valeur la plus probable 2, avec le donné valeurs). L'extrapolation est lorsque l'inconnu est en dehors de ce que vous savez, donc lorsque 1 et 2 sont connus, vous pouvez faire une supposition éclairée sur 3.

Interpoler: entre extrapoler: extérieur

Les réponses longues ici sont probablement beaucoup plus précises et scientifiquement correctes, mais j'espère que ma simple explication pourra avoir du sens pour certains

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.