Kiedy powinienem ekstrapolować, a kiedy interpolować?

16

Mam problem ze zrozumieniem, kiedy należy ekstrapolować, a kiedy interpolować. Mówiąc o grach, powiedział interpolować, ale w innym artykule zalecił ekstrapolację gracza. Moje pytanie brzmi: kiedy lepiej ekstrapolować, a kiedy lepiej interpolować?

J leong
źródło
22
Istnieją dwa rodzaje ludzi. Ci, którzy mogą ekstrapolować na podstawie niepełnych danych
Almo
2
@Almo i co innego? Powiedz mi, muszę wiedzieć!
DJMcMayhem
4
@DJMcMayhem ... i ci, którzy lubią jeść paluszki rybne.
user253751,
4
Nie rozumiem pytania. Czy potrafisz wyjaśnić jeden ze sposobów „interpolacji” punktów {(1, a), (2, b)}, aby przewidzieć c w (3, c)? A jak byś to ekstrapolował?
user541686,

Odpowiedzi:

29

Interpolujesz, gdy znasz wartości „przed” i „po”.

Na przykład: w grze typu „wskaż i kliknij” gracz znajduje się obecnie na pozycji X, a na swoim interfejsie klika punkt Y. Musisz interpolować przesunięcie między X i Y, ponieważ znasz dwie wartości.

Ekstrapolujesz, gdy zgadniesz, co będzie w przyszłości, na podstawie tego, co już wiesz.

Na przykład: w strzelance FPS gracz znajduje się na pozycji X i przez ostatnią sekundę naciskał strzałkę W GÓRĘ na swojej klawiaturze, można przypuszczać , że zrobi to ponownie przez następną sekundę, ponieważ jest to w zasadzie najczęstsze zachowanie w twojej grze; więc ekstrapolujesz pozycję, że będzie on w następnej klatce. Serwer wysyła go do innych klientów gry, co stanowi opóźnienie w transmisji z serwera do graczy.

Ekstrapolacja służy głównie do przewidywania ruchu. Serwer gry nie jest potrzebny , ale klienci gry muszą go wyświetlać nieco realistyczną i aktualną wizję stanu gry, aby zapewnić graczom płynne wrażenia wizualne.

Vaillancourt
źródło
Rozumiem tę część, ale nie rozumiem, kiedy powinienem użyć każdej z nich. Na przykład, jeśli interpoluję gracza, nastąpi opóźnienie w jego zobaczeniu ruchu, ale jeśli dokonam ekstrapolacji, będzie to bardziej natychmiastowe, ale może nie być dokładne i będzie wymagać korekty. Czy zwykle bardziej pożądane jest, aby ruch natychmiastowy z ekstrapolacji lub bardziej konsekwentny ruch z interpolacji?
J leong
@Jleong Chcesz, aby gra była prezentowana użytkownikom tak płynnie, jak to możliwe. Interpolujesz bieżący stan gry i ekstrapolujesz, jak będzie w kilku klatkach. Wysyłasz ekstrapolowane wartości do innych graczy, aby uwzględnić opóźnienie w transmisji sieciowej. Gdybyś wysłał interpolowane wartości, gra wydawałaby się opóźniona i nie byłoby fajnie. (Zredagowałem swoją odpowiedź. Mam nadzieję, że to trochę wyjaśni.)
Vaillancourt
o ok, więc ekstrapolacja jest stosowana, gdy chcesz, aby klient przewidział, co się stanie? Jeśli tak, to jaki jest sens interpolacji, jeśli zawsze można ekstrapolować, aby gra była blisko czasu rzeczywistego? więc czy w przypadku FPS gracz byłby ekstrapolowany, a inni gracze byliby interpolowani?
J leong
Ogólnie rzecz biorąc, serwer robi wszystko: interpoluje na podstawie tego, co wie, i na tej podstawie ekstrapoluje wartości i wysyła je do klientów, aby dotarli na czas, aby zostać zaprezentowanym graczom. W FPS interpolacja służy do wyświetlania rzeczy takich jak pociski, sztuczna inteligencja i tym podobne. Podczas wykonywania ramki B (pochodzącej z ramki A) interpoluje wartości dla stanu ramki B; może także zacząć przewidywać klatkę C przez interpolację znanych wartości, ale będzie musiał ekstrapolować wartości, o których nie wie (dane wejściowe odtwarzacza). Następnie wyśle ​​klientowi „przyszły” stan.
Vaillancourt
@Jleong Nie zastanawiając się nad różnicą między klientem a serwerem, mogę użyć interpolacji, aby uzyskać pozycję gdzieś pomiędzy dwoma znanymi punktami (np. W celu sprawdzenia kolizji, która mogła się zdarzyć między ramkami), lub dalej, wziąć ten zestaw danych i uzyskać takie rzeczy, jak prędkość / trajektoria i przyspieszenie, biorąc pod uwagę zestaw punktów i biorąc pod uwagę ostatnią znaną prędkość / przyspieszenie / trajektorię, mogę ekstrapolować, gdzie te obiekty mogą w przyszłości przyjąć spójne ramy czasowe. Do komunikacji serwer-klient używana jest „optymistyczna” pozycja ekstrapolowana.
Norguard,
14

Interpolacja jest wykonywana, gdy masz zarówno wartość początkową, jak i końcową i chcesz oszacować, co dzieje się między tą wartością początkową i końcową. Przykładem może być przesunięcie gracza z pozycji A na pozycję B płynnym ruchem.

Ekstrapolacja jest przeprowadzana, gdy masz wartość początkową, ale nie masz jeszcze danych na koniec. Następnie możesz dokonać ekstrapolacji na podstawie posiadanych danych. Na przykład na podstawie wcześniejszych ruchów gracza możesz określić, gdzie prawdopodobnie będzie on w następnej klatce.

jgallant
źródło
2

Zawsze interpoluj, kiedy możesz.

Jeśli nie masz wystarczających informacji do interpolacji, musisz dokonać ekstrapolacji.

To naprawdę takie proste, nie przesadzaj z tym :)

Aby wyjaśnić nieco więcej:

Ogólnie interpolacja jest lepsza, ponieważ interpolacja jest zawsze właściwa. Aby ekstrapolować, musisz zgadywać. Następnie musisz poradzić sobie z tym, co dzieje się, gdy zgadniesz źle, co prowadzi do gumowania lub pękania i wszelkiego rodzaju systemów radzenia sobie z tym wszystkim i maskowania go.

Co się stanie, jeśli ekstrapolujesz pozycję nietoperza i pokażesz, że idzie we właściwe miejsce i odbija piłkę, a potem zdasz sobie sprawę, że się myliłeś i nie odbiła się ona? Nie ma dobrego sposobu na poradzenie sobie z tym scenariuszem.

Tim B.
źródło
o ok, więc w grze pongowej przewidywana jest wiosło użytkownika, a piłka i inna wiosło są interpolowane?
J leong
To całkowicie zależy od tego, jak to zaimplementujesz. Zobacz moją edycję, aby uzyskać więcej informacji.
Tim B,
2

Interpolujesz, aby znaleźć stany między znanymi wartościami, i ekstrapolujesz, aby znaleźć stany przyszłe.

Pomyśl o tym w kategoriach zmiennych stanu, takich jak pozycje i prędkości. W najlepszym ze wszystkich scenariuszy każdy komputer, który musi pracować ze stanem, ma dostęp do danych stanu przez czas, na którym chce pracować. Na przykład algorytm kolizji, aby sprawdzić, czy strzelał z karabinu laserowego X, przestawia głowę gracza A, najlepszym ze wszystkich przypadków jest to, że algorytm zna dokładną pozycję każdego obiektu w momencie wystrzelenia lasera.

W prawdziwym świecie nie zawsze mamy tyle szczęścia. Czasami informacje o prawdzie, które otrzymujemy, są rzadsze. Na przykład, jeśli gracz A jest graczem zdalnym na innym komputerze, możesz nie wiedzieć dokładnie, dokąd zmierzają, gdy strzelasz laserem i musisz obliczyć strzał. W takim przypadku musisz utworzyć estymator pozycji A, zwykle z interpolacją lub ekstrapolacją.

Różnica między nimi polega na tym, czy dane są ograniczone po obu stronach, czy tylko po jednej stronie. Powiedzmy, że gracz A ogłosił już swoją prawdziwą pozycję dla t = 0 it = 1. Gracz B strzela laserem przy t = 0,5. W wielu sytuacjach zawodnik A ogłasza swoją pozycję przy t = 1, zanim gracz B pociągnie za spust. Dlaczego? W wielu grach czas reakcji elementów sterujących jest mniej niż idealnie natychmiastowy. W symulacji wyścigowej znaczna część pozycji gracza jest ograniczona fizyką poruszającego się pojazdu. Możesz ogłosić „przyszłą pozycję”, ponieważ wiesz, że tak naprawdę nie jesteś w stanie pokierować tak dużo w krótkim czasie. Jeśli masz informacje w przyszłości, możesz interpolować te dwie wartości.

Co zrobić, jeśli nie masz szczęścia, aby mieć wartość = 1? Co jeśli gracz A nie byłby w stanie ogłosić swojej przyszłej lokalizacji, a ty utknąłeś decydując, czy trafiłeś, czy spudłowałeś tylko z informacjami z t = 0? W takim przypadku musisz dokonać ekstrapolacji. W ramach ekstrapolacji wykorzystujesz to, co wiesz o ruchu, aby wykraczać poza wszelkie posiadane dane. Możesz wiedzieć, że Gracz A ma określoną prędkość, więc załóż, że jeśli pomnożysz ją przez czas, możesz uzyskać pozycję za każdym razem.

Różnica polega na zachowaniach. Interpolacja wymaga posiadania górnej i dolnej granicy, której nie zawsze masz. Jednak w prawie wszystkich sytuacjach przynosi znacznie lepsze wyniki niż ekstrapolacja. Ekstrapolacja może łatwo prowadzić do nierealnych ruchów. Rozważ przypadek gracza, który omija lewą i prawą stronę, aby uniknąć zastrzelenia podczas awansu. W dowolnym momencie ich prędkość jest wzdłuż przekątnej, więc jeśli ekstrapolujesz, gracz może wydawać się, że ucieka w bok, podczas gdy w rzeczywistości nigdy tego nie robi. Jeśli wykonujesz tylko interpolację, wartości zwykle nie odchodzą poza wartości realistyczne.

Interpolacja i ekstrapolacja to dwie skrajności w świecie filtrowania. Istnieje wiele, wiele, wiele wielu filtrów do obsługi takich danych, które mieszają i dopasowują właściwości między interpolacją a ekstrapolacją. Dlatego nie zdziw się, jeśli zobaczysz algorytmy, które nie są jednoznacznie interpolowane lub wyraźnie ekstrapolowane. Te dwie rzeczy to tylko wierzchołek lodowej góry.

Cort Ammon - Przywróć Monikę
źródło
1

Interpolacja wykorzystuje znane dane do obliczenia układu odniesienia w granicach zbioru danych (będącego prefiksem „wewnętrznym”). Ekstrapolacja polega na obliczeniu układu odniesienia poza granicami istniejących danych (poza tym jest to przedrostek „zewnętrzny”). Oba są wykorzystywane do syntezy dodatkowych danych, przy czym dokładna metoda obliczeń określa oczekiwaną wiarygodność generowanych danych.

Lub umieścić to w bardzo prostym schemacie:

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

Biorąc pod uwagę punkty danych Ai Cmożna interpolować Bi wykorzystuje rezultaty D.


Dokładność interpolacji lub ekstrapolacji zależy całkowicie od tego, jak dobrze można uwzględnić każdą zmienną w obliczeniach. Jeśli znasz wszystkie zmienne i masz równanie, które uwzględnia je wszystkie, możesz z łatwością interpolować lub ekstrapolować.

W mechanice gry czynnikami ograniczającymi będą punkty, na które wpływ na zmienne mają nieprzewidywalne wpływy gracza lub elementu losowego lub pseudolosowego.

Na przykład ruch piłki w Breakout (w najprostszej formie) można ekstrapolować aż do punktu, w którym mogłaby potencjalnie oddziaływać z wiosłem gracza. Wszystkie zmienne można uwzględnić do tego momentu, dzięki czemu można dokładnie modelować działania piłki. Kiedy osiągnie punkt, w którym możliwa jest interakcja gracza, istnieje wiele możliwych wyników i nie ma możliwości dokładnego modelowania, który z nich będzie miał miejsce, dopóki tak się nie stanie. Jest to przewidywalna granica modelu fizyki gry.

Interpolacja jest łatwiejsza w grach, ponieważ pracujesz ze znanymi punktami i nie musisz się zastanawiać, czy warunki się zmienią. Ponadto masz pełną kontrolę nad zaangażowanymi zmiennymi i możesz użyć dowolnych zdefiniowanych reguł, aby określić ścieżkę do obiektu. Im bardziej złożone reguły, tym trudniej interpolować.

W przypadku ruchu obiektów z prostymi kolizjami w przestrzeni do gry bez grawitacji (np. Breakout lub Pong) mechanizm interpolacji wzdłuż linii na ścieżce jest prostą interpolacją liniową punktów, a do obliczenia linii można użyć tego samego obliczenia test na przyszłe kolizje. Po wykryciu kolizji można ekstrapolować wpływ tej kolizji na zaangażowane obiekty.

Corey
źródło
To jest dokładnie różnica między słowami. Powodem, dla którego mamy inne słowa do zgadywania B i D, gdy wszystko, co mamy, jest A i C, ponieważ prawidłowe odgadywanie B jest o wiele łatwiejsze niż odgadywanie D poprawnie. Eksperci artylerii nazywają backpolowanie interpolacyjne. Mają dwie rundy po obu stronach, jesteś martwy, jeśli się nie poruszysz. Ekstrapolacja jest tym, co próbujesz zrobić, gdy grasz na giełdzie po obejrzeniu wykresów cen akcji. Ekstrapolacja jest trudna.
candied_orange 13.03.16
@CandiedOrange Ekstrapolacja złożonych systemów jest trudna, ale również interpolacja. To zależy od jakości twoich punktów danych i od przewidywalności systemu. Jeśli potrafisz wyprowadzić dokładne równanie opisujące system, to możesz interpolować lub ekstrapolować z dokładnością - linie są łatwe do ekstrapolacji, krzywe mogą być, rynki akcji nie tyle.
Corey,
Trudno powiedzieć, że interpolacja daje fundamentalne twierdzenie rachunku różniczkowego, na którym można polegać. Ekstrapolacja nie. A i C mówią ci, że B jest gdzieś, co umożliwiło C biorąc pod uwagę A. Proszenie o D prosi o przewidzenie przyszłości. Z tego co wiesz, C to miejsce, w którym zmarł gracz. Który z nich jest bardziej niezawodny i akceptowalny: interpolacja czy ekstrapolacja? dlaczego-jest-ekstrapolacja-ryzykowniejsza-niż-interpolacja
candied_orange
@CandiedOrange Oczywiście, ekstrapolacja jest ograniczona do stopnia, w jakim można kontrolować i przewidywać wszystkie odpowiednie zmienne. Podobnie interpolacja. Biorąc pod uwagę dwie pozycje, które gracz zajmował w przeszłości, niekoniecznie musi dokładnie interpolować punkt środkowy, ponieważ gracz mógł różnić się od prostej lub optymalnej ścieżki. Obie metody są ograniczone.
Corey,
Jasne, oba są ograniczone. Ale jedno niszczy kariery częściej niż drugie. Zgadnij który. Nie twierdzę, że interpolacja jest idealna. To, że postrzeganie ich jako posiadających taką samą moc predykcyjną jest niebezpieczne.
candied_orange
0

Krótka odpowiedź: interpolujesz, gdy musisz oszacować wartość między dwiema znanymi wartościami (tj .: w ciągu jednej godziny wartość wynosi 1, w ciągu 3 godzin to trzy, aby interpolować wartość 2 przy najbardziej prawdopodobnej wartości 2, z podaną wartości). Ekstrapolacja ma miejsce, gdy nieznane znajduje się poza tym, co wiesz, więc gdy znane są 1 i 2, możesz zgadnąć na podstawie 3.

Interpolacja: pomiędzy Ekstrapolacja: na zewnątrz

Długie odpowiedzi tutaj są najprawdopodobniej o wiele bardziej dokładne i naukowo poprawne, ale mam nadzieję, że moje proste wyjaśnienie może mieć sens dla niektórych

Patrick
źródło