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?
interpolation
extrapolation
J leong
la source
la source
Réponses:
Vous interpolez lorsque vous connaissez les valeurs «avant» et «après».
Vous extrapolez lorsque vous devinez ce qui va être une valeur future, en fonction de ce que vous savez déjà.
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.
la source
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.
la source
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.
la source
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.
la source
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:
Compte tenu des points de données
A
etC
vous pouvez interpolerB
et extrapolerD
.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.
la source
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
la source