¿Cuándo debo extrapolar y cuándo debo interpolar?

16

Tengo problemas para entender cuándo extrapolar y cuándo interpolar. En el juego de los juegos, dijo que interpolaría, pero luego, en otro artículo, recomendó extrapolar al jugador. Entonces, mi pregunta es cuándo es mejor extrapolar y cuándo es mejor interpolar.

J leong
fuente
22
Hay dos tipos de personas. Aquellos que pueden extrapolar a partir de datos incompletos
Almo
2
@Almo y ¿cuál es el otro tipo? Por favor dime, debo saber!
DJMcMayhem
44
@DJMcMayhem ... y aquellos que disfrutan comiendo palitos de pescado.
user253751
44
No entiendo la pregunta. ¿Puede explicar una forma de "interpolar" los puntos {(1, a), (2, b)} para predecir c en (3, c)? ¿Y cómo lo extrapolarías?
user541686

Respuestas:

29

Interpola cuando conoce los valores 'antes' y 'después'.

Por ejemplo: en un juego de apuntar y hacer clic, el jugador se encuentra actualmente en la posición X, y desde su interfaz, hace clic en el lugar Y. Debe interpolar el desplazamiento entre X e Y porque conoce los dos valores.

Se extrapola cuando adivina cuál será el valor futuro, en función de lo que ya sabe.

Por ejemplo: en un juego de disparos en primera persona, el jugador está en la posición X y ha estado presionando la flecha hacia ARRIBA en su teclado durante el último segundo, puede suponer que volverá a hacerlo durante el segundo siguiente porque eso es básicamente el comportamiento más frecuente en tu juego; así que extrapolas la posición de que él será el próximo cuadro. El servidor lo envía a los otros clientes del juego, esto explica la demora en la transmisión del servidor a los jugadores.

La extrapolación se usa principalmente para la predicción de movimiento. El servidor del juego no lo necesita , pero los clientes del juego lo necesitan para mostrar una visión algo realista y actual del estado del juego a fin de brindar una experiencia visual fluida a los jugadores.

Vaillancourt
fuente
Entiendo esa parte, pero lo que no entiendo es cuándo debería usar cada una. Por ejemplo, si interpolo a un jugador, habrá una demora para que él vea el movimiento, pero si extrapolo será más instantáneo, pero puede que no sea preciso y deba corregirse. ¿Es generalmente más deseable tener el movimiento instantáneo de la extrapolación o el movimiento más consistente de la interpolación?
J leong
@Jleong Quieres que el juego se presente lo más fluido posible a los usuarios. Interpola el estado actual del juego y extrapola cómo será en un par de cuadros. Envía los valores extrapolados a los otros jugadores para dar cuenta del retraso en la transmisión de la red. Si enviaras los valores interpolados, el juego parecería retrasarse y no sería divertido. (Edité mi respuesta. Espero que la aclare un poco más.)
Vaillancourt
oh ok, entonces se usa extrapolación cuando quieres que el cliente prediga lo que va a pasar? Si es así, ¿cuál es el punto de interpolación si siempre puedes extrapolar para mantener el juego cerca del tiempo real? entonces, como un FPS, ¿se extrapolaría al jugador y se interpolaría a los otros jugadores?
J leong
En general, el servidor hace todo: interpola en lo que sabe, y en base a eso, extrapola los valores y los envía a los clientes para que lleguen a tiempo para ser presentados a los jugadores. En un FPS, la interpolación se usa para mostrar cosas como proyectiles, IA y demás. Al realizar el Marco B (proveniente del Marco A), interpolará valores para el estado del Marco B; También puede comenzar a predecir el Marco C mediante la interpolación de los valores conocidos , pero tendrá que extrapolar valores que no conoce (entradas del jugador). Luego enviará el estado "futuro" al cliente.
Vaillancourt
@Jleong Sin pensar en la diferencia entre el cliente y el servidor, puedo usar la interpolación para derivar una posición en algún lugar entre dos puntos conocidos (para cosas como verificar una colisión que puede haber ocurrido entre cuadros), o más, tomar ese conjunto de datos y obtener cosas como velocidad / trayectoria y aceleración, dado un conjunto de puntos, y dada la última velocidad / aceleración / trayectoria conocida, puedo extrapolar dónde pueden estar esos objetos, en el futuro, asumiendo un marco de tiempo constante. Para la comunicación servidor-cliente, se utiliza la posición extrapolada "optimista".
Norguard
14

La interpolación se realiza cuando tiene un valor inicial y un valor final, y desea estimar lo que sucede entre este valor inicial y final. Un ejemplo sería mover a un jugador de la posición A a la posición B en un movimiento fluido.

La extrapolación se realiza cuando tiene un valor inicial, pero aún no tiene datos para el final. Luego puede extrapolar en función de los datos que tenga. Por ejemplo, en función de los movimientos anteriores de un jugador, puedes determinar dónde probablemente estará en el siguiente cuadro.

jgallant
fuente
2

Siempre interpola cuando puedas.

Cuando no tienes suficiente información para interpolar, entonces necesitas extrapolar.

Realmente es así de simple, no lo pienses demasiado :)

Para explicar un poco más:

En general, la interpolación es mejor porque la interpolación siempre es correcta. Para extrapolar hay que adivinar. Luego tiene que lidiar con lo que sucede cuando adivina mal, lo que lleva a bandas de goma o estallidos y todo tipo de sistemas para lidiar con el manejo de todo eso y disfrazarlo.

¿Qué sucede si extrapola una posición de bate y la muestra yendo al lugar correcto y haciendo rebotar la pelota, y luego se da cuenta de que se equivocó y que no hizo rebotar la pelota? No hay una buena manera de manejar ese escenario.

Tim B
fuente
oh ok, entonces en pong, se predice la pala del usuario y se interpolan la pelota y la otra pala?
J leong
Eso depende completamente de cómo lo implemente. Vea mi edición para más información.
Tim B
2

Interpola para encontrar estados entre valores conocidos y extrapola para encontrar estados futuros.

Piense en el problema en términos de variables de estado, como posiciones y velocidades. En el mejor de los escenarios, cada computadora que necesita trabajar con el estado tiene acceso a los datos del estado durante el tiempo en que desean trabajar. Por ejemplo, un algoritmo de colisión para ver si el rifle láser disparó X interesets la cabeza del jugador A, el mejor de todos los casos es cuando el algoritmo conoce la posición exacta de cada objeto en el momento en que se disparó el láser.

En el mundo real, no siempre somos tan afortunados. A veces la información de verdad que recibimos es más escasa. Por ejemplo, si el jugador A es un jugador remoto en otra computadora, es posible que no sepa exactamente a dónde van cuando dispara el láser y necesita calcular el disparo. En este caso, debe crear un estimador para la posición de A, generalmente con interpolación o extrapolación.

La diferencia entre los dos es si tiene datos que están limitados en ambos lados, o solo en un lado. Digamos que el jugador A ya ha anunciado su posición de verdad para t = 0 yt = 1. El jugador B dispara un láser a t = 0.5. En muchas situaciones, el anuncio del jugador A de su posición en t = 1 puede ocurrir antes de que el jugador B apriete el gatillo. ¿Por qué? En muchos juegos, la capacidad de respuesta de los controles es menos que perfectamente instantánea. En una simulación de carrera, gran parte de la posición del jugador está limitada por la física de un vehículo en movimiento. Puede elegir anunciar una "posición futura" porque sabe que realmente no puede dirigir tanto en un corto período de tiempo. Si tiene información en el futuro, puede interpolar entre los dos valores.

¿Qué pasa si no tienes la suerte de tener un valor = 1? ¿Qué pasaría si el jugador A no estuviera en condiciones de anunciar su ubicación futura, y no puede decidir si acertó o falló con solo la información de t = 0? En este caso tienes que extrapolar. En la extrapolación, usa lo que sabe sobre el movimiento para extender más allá de cualquier dato que tenga. Es posible que sepa que el jugador A tiene una cierta velocidad, así que suponga que si multiplica eso por tiempo, puede obtener una posición en cada momento.

La diferencia está en los comportamientos. La interpolación requiere que tengas un límite superior e inferior, que no siempre tienes. Sin embargo, en casi todas las situaciones tiene resultados mucho mejores que la extrapolación. La extrapolación puede conducir fácilmente a movimientos poco realistas. Considere el caso de un jugador que está esquivando hacia la izquierda y hacia la derecha para evitar que le disparen mientras avanza. En cualquier punto dado, su velocidad es a lo largo de una diagonal, por lo que si extrapola, el jugador puede parecer correr hacia un lado cuando, de hecho, nunca lo hacen. Si solo realiza la interpolación, los valores tienden a no desviarse de los valores realistas.

La interpolación y la extrapolación son dos extremos en el mundo del filtrado. Existen muchos, muchos, muchos filtros para manejar datos como este que mezclan y combinan propiedades entre interpolación y extrapolación. En consecuencia, no se sorprenda si ve algoritmos que no son claramente interpolación o claramente extrapolación. Esos dos son solo la punta del iceberg.

Cort Ammon - Restablece a Monica
fuente
1

La interpolación está utilizando datos conocidos para calcular un dato dentro de los límites del conjunto de datos (entre ellos el prefijo 'interno'). La extrapolación es calcular un dato fuera de los límites de los datos existentes (extra es el prefijo 'exterior'). Ambos se utilizan para sintetizar datos adicionales, con el método exacto de cálculo que define la confiabilidad esperada de los datos generados.

O para ponerlo en un diagrama muy simple:

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

Teniendo en cuenta los puntos de datos Ay Cpuede interpolar By extrapolar D.


La precisión de una interpolación o una extrapolación depende por completo de qué tan bien puede contabilizar cada variable en el cálculo. Si conoce todas las variables y tiene una ecuación que las explica todas, puede interpolar o extrapolar con la misma facilidad.

Para la mecánica del juego, los factores limitantes serán los puntos en los que las variables están influenciadas de manera impredecible, ya sea por el jugador o algún elemento aleatorio o pseudoaleatorio.

Por ejemplo, el movimiento de una pelota en Breakout (en su forma más simple) puede extrapolarse hasta el punto en el que podría interactuar potencialmente con la pala del jugador. Todas las variables pueden explicarse hasta ese punto y, por lo tanto, puede modelar con precisión las acciones de la pelota. Cuando llega al punto en que es posible la interacción del jugador, entonces hay una serie de resultados posibles y no hay forma de modelar con precisión cuál de ellos será el caso hasta que realmente suceda. Este es el límite predictivo del modelo de física del juego.

La interpolación es más simple en los juegos porque estás trabajando con puntos conocidos y no tienes que preguntarte si las condiciones cambiarán. Además, tiene control total sobre las variables involucradas y puede usar cualquier regla que defina para determinar la ruta de un objeto. Cuanto más complejas sean las reglas, más difícil será interpolar.

Para el movimiento de objetos con colisiones simples en un espacio de juego libre de gravedad (como Breakout o Pong), el mecanismo de interpolación a lo largo de una línea en el camino es una simple interpolación lineal de los puntos, y el mismo cálculo puede usarse para extrapolar la línea a prueba para futuras colisiones. Una vez que se detecta una colisión, puede extrapolar el efecto de esa colisión en los objetos involucrados.

Corey
fuente
Esta es exactamente la diferencia entre las palabras. La razón por la que tenemos diferentes palabras para adivinar B y D cuando todo lo que tenemos es A y C es porque adivinar B correctamente es mucho más fácil que adivinar D correctamente. Los expertos en artillería llaman respaldo interpolado. Reciben dos rondas de marcado a cada lado, estás muerto si no te mueves. Extrapolar es lo que intenta hacer cuando juega en el mercado de valores después de mirar los gráficos de precios de las acciones. Extrapolar es difícil.
candied_orange
@CandiedOrange Extrapolar sistemas complejos es difícil, pero también lo es la interpolación. Depende de la calidad de sus puntos de datos y de cuán predecible sea el sistema. Si puede derivar una ecuación precisa que describa el sistema, puede interpolar o extrapolar con precisión: las líneas son fáciles de extrapolar, las curvas pueden serlo, los mercados de valores no tanto.
Corey
Por duro quiero decir que la interpolación te da el teorema fundamental del cálculo al que recurrir. La extrapolación no lo hace. A y C le dicen que B está en algún lugar que hizo posible C dado A. Solicitar D es predecir el futuro. Por lo que sabes, C es donde murió el jugador. ¿Cuál es más confiable y aceptable: interpolación o extrapolación? why-is-extrapolation-riskier-than-interpolation
candied_orange
@CandiedOrange Claro, la extrapolación se limita al grado en que puede controlar y predecir todas las variables relevantes. Así es la interpolación. Dadas dos posiciones que un jugador ha ocupado en el pasado, no necesariamente puede interpolar con precisión un punto medio, ya que el jugador puede haber variado de una ruta directa u óptima. Ambos métodos son limitados.
Corey
Claro, ambos son limitados. Pero uno destruye carreras con más frecuencia que el otro. Adivina cual. Mi afirmación no es que la interpolación es perfecta. Es que verlos con el mismo poder predictivo es peligroso.
candied_orange
0

La respuesta corta: interpola cuando tiene que estimar un valor entre dos valores conocidos (es decir: en una hora el valor es 1, en 3 horas son tres, para interpolar el valor en 2 en el valor más probable 2, con el valor dado valores). Extrapolar es cuando lo desconocido está fuera de lo que sabes, por lo que cuando se conocen 1 y 2 puedes hacer una suposición educada sobre 3.

Interpolar: en medio Extrapolar: afuera

Es probable que las respuestas largas aquí sean mucho más precisas y científicamente correctas, pero espero que mi explicación simple pueda tener sentido para algunos

Patricio
fuente