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ć?
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ć?
Odpowiedzi:
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.
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.
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.
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.
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 A
i C
można interpolować B
i 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.
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