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?
interpolation
extrapolation
J leong
fonte
fonte
Respostas:
Você interpola quando conhece os valores 'antes' e 'depois'.
Você extrapola quando adivinha qual será o valor futuro, com base no que você já sabe.
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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:
Dados os pontos de dados
A
eC
você pode interpolarB
e extrapolarD
.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.
fonte
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
fonte