Quando devo extrapolar e quando devo interpolar?


16

Estou tendo problemas para entender quando extrapolar e quando interpolar. No gaffer de jogos, ele disse para interpolar, mas depois em outro artigo recomendou extrapolar o jogador. Então, minha pergunta é quando é melhor extrapolar e quando é melhor interpolar?


22
Existem dois tipos de pessoas. Aqueles que podem extrapolar a partir de dados incompletos
Almo

2
@ Almo e qual é o outro tipo? Por favor me diga, eu devo saber!
DJMcMayhem

4
@DJMcMayhem ... e aqueles que gostam de comer peixe empanado.
user253751

4
Eu não entendo a pergunta. Você pode explicar uma maneira de "interpolar" os pontos {(1, a), (2, b)} para prever c em (3, c)? E como você extrapolaria isso?
user541686

Respostas:


29

Você interpola quando conhece os valores 'antes' e 'depois'.

Por exemplo: em um jogo de apontar e clicar, o jogador está atualmente na posição X e, a partir de sua interface, clica no ponto Y. Você deve interpolar o deslocamento entre X e Y porque conhece os dois valores.

Você extrapola quando adivinha qual será o valor futuro, com base no que você já sabe.

Por exemplo: em um jogo de tiro em primeira pessoa, o jogador está na posição X e pressiona a seta PARA CIMA no teclado pelo último segundo, você pode supor que ele fará isso de novo pelo próximo segundo, porque é basicamente o comportamento mais frequente no seu jogo; então você extrapola a posição de que ele será o próximo quadro. O servidor envia para os outros clientes do jogo, isso explica o atraso na transmissão do servidor para os jogadores.

A extrapolação é usada principalmente para previsão de movimento. Não é necessário para o servidor do jogo , mas os clientes do jogo precisam exibir uma visão um pouco realista e atual do estado do jogo, a fim de proporcionar uma experiência visual suave aos jogadores.


Entendo essa parte, mas o que não entendo é quando devo usar cada uma. Por exemplo, se eu interpolar um jogador, haverá um atraso para ele realmente ver o movimento, mas se eu extrapolar, será mais instantâneo, mas poderá não ser preciso e precisará ser corrigido. É geralmente mais desejável ter o movimento instantâneo de extrapolar ou o movimento mais consistente de interpolar?
J Leong

@Jongong Você quer que o jogo seja o mais suave possível para os usuários. Você interpola o estado atual do jogo e extrapola como será em alguns quadros. Você envia os valores extrapolados para os outros players para contabilizar o atraso na transmissão da rede. Se você enviasse os valores interpolados, o jogo pareceria atrasado e não seria divertido. (Eu editei a minha resposta Espero que apura-se um pouco mais..)
Vaillancourt

oh ok, então extrapolar é usado quando você deseja que o cliente preveja o que vai acontecer? Se sim, qual é o ponto de interpolação se você sempre pode extrapolar para manter o jogo próximo ao tempo real? então, como um FPS, o jogador seria extrapolado e os outros jogadores seriam interpolados?
J Leong

Geralmente, o servidor faz tudo: interpola o que sabe e, com base nisso, extrapola os valores e os envia aos clientes para que cheguem a tempo de serem apresentados aos jogadores. Em um FPS, a interpolação é usada para exibir coisas como projéteis, IA e outras coisas. Ao executar o Quadro B (proveniente do Quadro A), ele interpola valores para o estado do Quadro B; ele também pode começar a prever o Quadro C interpolando os valores conhecidos , mas precisará extrapolar os valores que não conhece (entradas do player). Em seguida, ele envia o estado "futuro" para o cliente.
Vaillancourt

@Jleong Sem pensar na diferença entre cliente e servidor, eu posso usar a interpolação para derivar uma posição em algum lugar entre dois pontos conhecidos (para coisas como verificar uma colisão que pode ter acontecido entre quadros), ou ainda, pegar esse conjunto de dados e derivar coisas como velocidade / trajetória e aceleração, dado um conjunto de pontos, e dada a última velocidade / aceleração / trajetória conhecida, posso extrapolar onde esses objetos podem, no futuro, assumir um período de tempo consistente. Para comunicação servidor-cliente, a posição extrapolada "otimista" é usada.
Norguard 12/03/16

14

A interpolação é feita quando você tem um valor inicial e final e deseja estimar o que acontece entre esse valor inicial e final. Um exemplo seria mover um jogador da posição A para a posição B em um movimento fluido.

A extrapolação é feita quando você tem um valor inicial, mas ainda não possui dados para o final. Você pode então extrapolar com base em quais dados você possui. Por exemplo, com base nos movimentos anteriores de um jogador, você pode determinar onde ele provavelmente estará no próximo quadro.


2

Sempre interpole quando puder.

Quando você não tem informações suficientes para interpolar, precisa extrapolar.

É realmente simples assim, não pense demais :)

Para explicar um pouco mais:

Em geral, a interpolação é melhor porque a interpolação está sempre correta. Para extrapolar, você precisa adivinhar. Então você tem que lidar com o que acontece quando você pensa errado, o que leva a bandas de borracha ou estalos e todos os tipos de sistemas para lidar com lidar com tudo isso e disfarçar isso.

O que acontece se você extrapolasse uma posição do taco e mostrasse que ela estava no lugar certo e quicando a bola, depois percebe que você estava errado e que não quicou na bola? Não há uma boa maneira de lidar com esse cenário.


oh ok então no pong, a raquete do usuário é prevista e a bola e outra raquete são interpoladas?
J Leong

Isso depende inteiramente de como você o implementa. Veja minha edição para mais informações.
Tim B

2

Você interpola para encontrar estados entre valores conhecidos e extrapola para encontrar estados futuros.

Pense no problema em termos de variáveis ​​de estado, como posições e velocidades. Na melhor das hipóteses, todos os computadores que precisam trabalhar com o estado têm acesso aos dados do estado pelo tempo que desejam trabalhar. Por exemplo, um algoritmo de colisão para verificar se o tiro de fuzil a laser X interage a cabeça do jogador A, o melhor de todos os casos é quando o algoritmo sabe a posição exata de cada objeto no momento em que o laser foi disparado.

No mundo real, nem sempre temos tanta sorte. Às vezes, as informações verdadeiras que recebemos são mais esparsas. Por exemplo, se o jogador A for um jogador remoto em outro computador, talvez você não saiba exatamente para onde ele está indo quando dispara o laser e precisa calcular o tiro. Nesse caso, você precisa criar um estimador para a posição de A, geralmente com interpolação ou extrapolação.

A diferença entre os dois é se você possui dados limitados nos dois lados ou apenas em um lado. Digamos que o Jogador A já tenha anunciado sua posição de verdade para t = 0 et = 1. O jogador B dispara um laser em t = 0,5. Em muitas situações, o anúncio do jogador A de sua posição em t = 1 pode ocorrer antes que o jogador B aperte o gatilho. Por quê? Em muitos jogos, a capacidade de resposta dos controles é menos do que perfeitamente instantânea. Em uma simulação de corrida, grande parte da posição do jogador é limitada pela física de um veículo em movimento. Você pode optar por anunciar uma "posição futura" porque sabe que realmente não pode orientar tudo isso em um curto período. Se você tiver informações no futuro, poderá interpolar entre os dois valores.

E se você não tiver a sorte de ter o valor = 1? E se o Jogador A não estivesse em posição de anunciar sua localização futura e você não conseguir decidir se acerta ou erra apenas com as informações de t = 0? Nesse caso, você precisa extrapolar. Na extrapolação, você usa o que sabe sobre o movimento para estender além dos dados que possui. Você deve saber que o Jogador A tem uma certa velocidade, portanto, presuma que, se você multiplicar por tempo, poderá obter uma posição a cada momento.

A diferença está nos comportamentos. A interpolação exige que você tenha um limite superior e um inferior, o que você nem sempre tem. No entanto, em quase todas as situações, ele tem resultados muito melhores que a extrapolação. A extrapolação pode facilmente levar a movimentos irreais. Considere o caso de um jogador que está evitando a esquerda e a direita para evitar ser baleado enquanto avança. A qualquer momento, sua velocidade é ao longo de uma diagonal; portanto, se você extrapolar, o jogador pode parecer correr para o lado quando, de fato, nunca acontece. Se você apenas interpolar, os valores tendem a não se desviar dos valores realísticos.

Interpolação e extrapolação são dois extremos no mundo da filtragem. Existem muitos filtros para lidar com dados como este, que misturam e combinam propriedades entre interpolação e extrapolação. Portanto, não se surpreenda se vir algoritmos que não são claramente interpoladores ou extrapoladores. Esses dois são apenas a ponta do iceberg.


1

A interpolação está usando dados conhecidos para calcular um dado dentro dos limites do conjunto de dados (sendo o prefixo "interno"). Extrapolação é calcular um dado fora dos limites dos dados existentes (além do prefixo 'externo'). Ambos são usados ​​para sintetizar dados adicionais, com o método exato de cálculo que define a confiabilidade esperada dos dados gerados.

Ou, para colocá-lo em um diagrama muito simples:

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

Dados os pontos de dados Ae Cvocê pode interpolar Be extrapolar D.


A precisão de uma interpolação ou extrapolação depende inteiramente de quão bem você pode contabilizar todas as variáveis ​​no cálculo. Se você conhece todas as variáveis ​​e tem uma equação que responde por todas elas, é possível interpolar ou extrapolar com a mesma facilidade.

Para a mecânica do jogo, os fatores limitantes serão os pontos nos quais as variáveis ​​são influenciadas de maneiras imprevisíveis, seja pelo jogador ou por algum elemento aleatório ou pseudo-aleatório.

Por exemplo, o movimento de uma bola no Breakout (na sua forma mais simples) pode ser extrapolado até o ponto em que poderia interagir com o remo do jogador. Todas as variáveis ​​podem ser contabilizadas até esse ponto e, assim, você pode modelar com precisão as ações da bola. Quando chega ao ponto em que a interação com o jogador é possível, há vários resultados possíveis e não há como modelar com precisão qual deles será o caso até que isso aconteça. Este é o limite preditivo do modelo de física do jogo.

A interpolação é mais simples nos jogos porque você está trabalhando com pontos conhecidos e não precisa se perguntar se as condições mudarão. Além disso, você tem controle total sobre as variáveis ​​envolvidas e pode usar quaisquer regras que definir para determinar o caminho de um objeto. Quanto mais complexas as regras, mais difícil pode ser interpolar.

Para o movimento de objetos com colisões simples em um espaço de jogo livre de gravidade (como Breakout ou Pong), o mecanismo de interpolação ao longo de uma linha no caminho é uma interpolação linear simples dos pontos e o mesmo cálculo pode ser usado para extrapolar a linha para teste para colisões futuras. Depois que uma colisão é detectada, você pode extrapolar o efeito dessa colisão nos objetos envolvidos.


Essa é exatamente a diferença entre as palavras. A razão pela qual temos palavras diferentes para adivinhar B e D quando tudo o que temos é A e C é porque adivinhar B corretamente é muito mais fácil do que adivinhar D corretamente. Especialistas em artilharia chamam de interpolação de backeting. Eles têm duas rodadas de marcação de cada lado, você está morto se não se mexer. Extrapolar é o que você está tentando fazer quando joga no mercado de ações depois de examinar os gráficos de preços das ações. Extrapolar é difícil.
candied_orange

@CandiedOrange A extrapolação de sistemas complexos é difícil, mas a interpolação também. Depende da qualidade dos seus pontos de dados e da previsibilidade do sistema. Se você puder derivar uma equação precisa que descreva o sistema, poderá interpolar ou extrapolar com precisão - as linhas são simples de extrapolar, as curvas podem ser, as bolsas de valores nem tanto.
Corey

Com muita força, quero dizer que interpolar fornece o teorema fundamental do cálculo no qual recorrer. Extrapolar não. A e C dizem que B está em algum lugar que tornou possível C, dado que A. Pedir D está pedindo para prever o futuro. Pelo que você sabe, C é onde o jogador morreu. Qual deles é mais confiável e aceitável: interpolação ou extrapolação? Porque-É-extrapolação-mais arriscado do que a interpolação
candied_orange

@CandiedOrange Certamente, a extrapolação é limitada ao grau em que você pode controlar e prever todas as variáveis ​​relevantes. O mesmo acontece com a interpolação. Dadas duas posições que um jogador ocupou no passado, você não pode necessariamente interpolar com precisão um ponto médio, pois o jogador pode ter mudado de um caminho direto ou ideal. Ambos os métodos são limitados.
Corey

Claro, ambos são limitados. Mas um destrói carreiras com mais frequência que o outro. Adivinha qual. Minha reivindicação não é que a interpolação seja perfeita. É que vê-los com o mesmo poder preditivo é perigoso.
candied_orange

0

A resposta curta: você interpola quando precisa estimar um valor entre dois valores conhecidos (ou seja: em uma hora o valor é 1, em 3 horas é três, para interpolar o valor em 2 no valor mais provável 2, com o dado valores). Extrapolar é quando o desconhecido está fora do que você sabe; portanto, quando 1 e 2 são conhecidos, você pode fazer um palpite sobre 3.

Interpolar: entre Extrapolar: fora

As respostas longas aqui são provavelmente muito mais precisas e cientificamente corretas, mas espero que minha explicação simples possa fazer sentido para alguns

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.