Kapan saya harus memperkirakan dan kapan saya harus menginterpolasi?

16

Saya mengalami kesulitan memahami kapan harus memperkirakan dan kapan harus melakukan interpolasi. Dalam gaffer tentang permainan, ia mengatakan untuk melakukan interpolasi tetapi kemudian dalam artikel lain itu merekomendasikan ekstrapolasi pemain. Jadi pertanyaan saya adalah kapan lebih baik melakukan ekstrapolasi dan kapan lebih baik melakukan interpolasi?

J leong
sumber
22
Ada dua jenis orang. Mereka yang dapat memperkirakan dari data yang tidak lengkap
Almo
2
@Almo dan apa jenis lainnya? Tolong beritahu saya, saya harus tahu!
DJMcMayhem
4
@DJMcMayhem ... dan mereka yang menikmati makan ikan jari.
user253751
4
Saya tidak mengerti pertanyaannya. Bisakah Anda menjelaskan satu cara untuk "menginterpolasi" poin {(1, a), (2, b)} untuk memprediksi c dalam (3, c)? Dan bagaimana Anda memperkirakannya?
user541686

Jawaban:

29

Anda melakukan interpolasi ketika Anda mengetahui nilai 'sebelum' dan 'setelah'.

Misalnya: dalam permainan point-and-click, pemain saat ini berada di posisi X, dan dari antarmuka-nya, ia mengklik di tempat Y. Anda harus menginterpolasi perpindahan antara X dan Y karena Anda tahu dua nilai.

Anda memperkirakan ketika Anda menebak apa yang akan menjadi nilai masa depan, berdasarkan apa yang sudah Anda ketahui.

Sebagai contoh: dalam permainan first-person-shooter, pemain berada di posisi X dan dia telah menekan panah UP pada keyboard-nya untuk detik terakhir, Anda dapat mengira bahwa dia akan melakukan ini lagi untuk detik berikutnya karena itu pada dasarnya perilaku paling sering dalam game Anda; jadi Anda memperkirakan posisi bahwa dia akan menjadi frame berikutnya. Server mengirimkannya ke klien gim lain, ini menyebabkan keterlambatan transmisi dari server ke para pemain.

Ekstrapolasi digunakan terutama untuk prediksi pergerakan. Ini tidak diperlukan oleh server game , tetapi klien game membutuhkannya untuk menampilkan visi yang agak realistis dan terkini tentang kondisi permainan untuk memberikan pengalaman visual yang halus kepada para pemain.

Vaillancourt
sumber
Saya mengerti bagian itu tetapi yang tidak saya mengerti adalah kapan saya harus menggunakan masing-masing. Seperti misalnya, jika saya menginterpolasi pemain, akan ada penundaan baginya untuk benar-benar melihat pergerakan tetapi jika saya memperkirakan itu akan lebih instan tetapi mungkin tidak akurat dan perlu diperbaiki. Apakah biasanya lebih diinginkan untuk memiliki gerakan instan dari ekstrapolasi atau gerakan yang lebih konsisten dari interpolasi?
J leong
@Jleong Anda ingin game disajikan semulus mungkin kepada pengguna. Anda menginterpolasi kondisi permainan saat ini, dan memperkirakan kemungkinannya dalam beberapa bingkai. Anda mengirim nilai ekstrapolasi ke pemain lain untuk memperhitungkan keterlambatan transmisi jaringan. Jika Anda mengirim nilai-nilai yang diinterpolasi, gim akan tampak ketinggalan dan itu tidak akan menyenangkan. (Saya mengedit jawaban saya. Saya harap jawaban ini lebih jelas.)
Vaillancourt
oh ok jadi ekstrapolasi digunakan ketika Anda ingin klien memprediksi apa yang akan terjadi? Jika demikian maka apa gunanya interpolasi jika Anda selalu bisa memperkirakan untuk membuat game dekat dengan waktu nyata? jadi untuk seperti FPS, akankah pemain diekstrapolasi dan pemain lain diinterpolasi?
J leong
Secara umum, server melakukan segalanya: interpolasi pada apa yang diketahuinya, dan berdasarkan itu, ia meramalkan nilai-nilai dan mengirimkannya ke klien sehingga mereka tiba pada waktunya untuk disajikan kepada para pemain. Dalam FPS, interpolasi digunakan untuk menampilkan hal-hal seperti proyektil, AI, dan semacamnya. Saat melakukan Frame B (berasal dari Frame A) itu akan menginterpolasi nilai untuk keadaan Frame B; ia juga dapat mulai memprediksi Frame C dengan interpolasi dari nilai-nilai yang diketahui , tetapi ia harus memperkirakan nilai-nilai yang tidak diketahuinya (input pemain). Kemudian akan mengirim negara "masa depan" ke klien.
Vaillancourt
@Jleong Tanpa memikirkan perbedaan antara klien dan server, saya dapat menggunakan interpolasi untuk mendapatkan posisi di suatu tempat di antara dua titik yang diketahui (untuk hal-hal seperti memeriksa tabrakan yang mungkin terjadi di antara frame), atau lebih jauh, mengambil dataset itu dan menurunkan hal-hal seperti kecepatan / lintasan dan akselerasi, diberikan satu set titik, dan diberi kecepatan / akselerasi / lintasan terakhir yang diketahui, saya dapat memperkirakan di mana objek-objek itu, di masa depan, dengan asumsi kerangka waktu yang konsisten. Untuk komunikasi server-klien, posisi ekstrapolasi "optimis" digunakan.
Norguard
14

Interpolasi dilakukan ketika Anda memiliki nilai awal dan akhir, dan Anda ingin memperkirakan apa yang terjadi antara nilai awal dan akhir ini. Contohnya adalah untuk memindahkan pemain dari Posisi A ke Posisi B dalam gerakan lancar.

Ekstrapolasi, dilakukan ketika Anda memiliki nilai awal, tetapi belum memiliki data untuk akhirnya. Anda kemudian dapat memperkirakan berdasarkan data apa yang Anda miliki. Misalnya, berdasarkan pergerakan pemain sebelumnya, Anda dapat menentukan di mana dia akan berada di frame berikutnya.

jallan
sumber
2

Selalu interpolasi saat Anda bisa.

Ketika Anda tidak memiliki informasi yang cukup untuk diinterpolasi maka Anda perlu memperkirakan.

Sesederhana itu, jangan terlalu dipikirkan :)

Untuk menjelaskan lebih banyak:

Secara umum interpolasi lebih baik karena interpolasi selalu benar. Untuk memperkirakan, Anda harus menebak. Maka Anda harus berurusan dengan apa yang terjadi ketika Anda menebak salah, yang mengarah ke karet banding atau muncul dan semua jenis sistem untuk menangani semua penanganan itu dan menyamarkannya.

Apa yang terjadi jika Anda memperkirakan posisi kelelawar dan menunjukkannya ke tempat yang tepat dan memantulkan bola, kemudian menyadari setelah itu bahwa Anda salah dan tidak memantulkan bola? Tidak ada cara yang baik untuk menangani skenario itu.

Tim B
sumber
oh ok jadi di pong, dayung pengguna diprediksi dan bola dan dayung lainnya diinterpolasi?
J leong
Itu sepenuhnya tergantung pada bagaimana Anda menerapkannya. Lihat hasil edit saya untuk informasi lebih lanjut.
Tim B
2

Anda melakukan interpolasi untuk menemukan status di antara nilai yang diketahui, dan Anda memperkirakan untuk menemukan kondisi di masa mendatang.

Pikirkan masalah dalam hal variabel keadaan, seperti posisi dan kecepatan. Dalam semua skenario terbaik, setiap komputer yang perlu bekerja dengan state memiliki akses ke data state untuk waktu yang mereka inginkan. Sebagai contoh, algoritma tabrakan untuk melihat apakah laser-rifle shot kepala pemain intereset A, yang terbaik dari semua kasus adalah ketika algoritma mengetahui posisi pasti dari setiap objek pada saat laser ditembakkan.

Di dunia nyata, kita tidak selalu seberuntung itu. Terkadang informasi kebenaran yang kami terima lebih jarang. Misalnya, jika pemain A adalah pemain jarak jauh di komputer lain, Anda mungkin tidak tahu persis ke mana mereka pergi ketika Anda menembakkan laser dan perlu menghitung tembakan. Dalam hal ini, Anda perlu membuat penduga untuk posisi A, biasanya dengan interpolasi atau ekstrapolasi.

Perbedaan antara keduanya adalah apakah Anda memiliki data yang terikat di kedua sisi, atau hanya satu sisi. Katakanlah Player A telah mengumumkan posisi kebenarannya untuk t = 0 dan t = 1. Pemain B menembakkan laser pada t = 0,5. Dalam banyak situasi, pengumuman pemain A tentang posisi mereka di t = 1 dapat terjadi sebelum pemain B menarik pelatuknya. Mengapa? Dalam banyak permainan, responsif dari kontrol kurang instan sempurna. Dalam simulasi balap, banyak posisi pemain dibatasi oleh fisika kendaraan yang bergerak. Anda dapat memilih untuk mengumumkan "posisi masa depan" karena Anda tahu Anda benar-benar tidak dapat mengarahkan semua itu dalam waktu singkat. Jika Anda memiliki informasi di masa mendatang, Anda dapat menginterpolasi antara kedua nilai tersebut.

Bagaimana jika Anda tidak cukup beruntung untuk memiliki nilai = 1? Bagaimana jika Pemain A tidak dalam posisi untuk mengumumkan lokasi mereka di masa depan, dan Anda buntu memutuskan apakah Anda mengenai atau melewatkan hanya dengan informasi dari t = 0? Dalam hal ini Anda harus memperkirakan. Dalam ekstrapolasi, Anda menggunakan apa yang Anda ketahui tentang gerakan untuk melampaui semua data yang Anda miliki. Anda mungkin tahu bahwa Player A memiliki kecepatan tertentu, jadi anggaplah bahwa jika Anda mengalikannya dengan waktu, Anda bisa mendapatkan posisi di setiap waktu.

Perbedaannya terletak pada perilaku. Interpolasi mengharuskan Anda untuk memiliki batas atas dan bawah, yang tidak selalu Anda miliki. Namun, dalam hampir semua situasi ini memiliki hasil yang jauh lebih baik daripada ekstrapolasi. Ekstrapolasi dapat dengan mudah menyebabkan gerakan yang tidak realistis. Pertimbangkan kasus pemain yang menghindar ke kiri dan kanan untuk menghindari tembakan saat maju. Pada titik tertentu, kecepatan mereka sepanjang diagonal, jadi jika Anda memperkirakan, pemain mungkin tampak lari ke samping ketika, pada kenyataannya, mereka tidak pernah melakukannya. Jika Anda hanya melakukan interpolasi, nilainya cenderung tidak menyimpang dari nilai realistis.

Interpolasi dan ekstrapolasi adalah dua ekstrem di dunia penyaringan. Ada banyak banyak banyak banyak banyak filter di luar sana untuk menangani data seperti ini yang mencampur dan mencocokkan properti antara interpolasi dan ekstrapolasi. Dengan demikian, jangan heran jika Anda melihat algoritma yang tidak jelas interpolasi atau ekstrapolasi. Keduanya hanyalah ujung dari es.

Cort Ammon - Pulihkan Monica
sumber
1

Interpolasi menggunakan data yang diketahui untuk menghitung datum dalam batas-batas kumpulan data (menjadi awalan 'bagian dalam'). Extrapolasi menghitung datum di luar batas data yang ada (tambahan awalan 'luar'). Keduanya digunakan untuk mensintesis data tambahan, dengan metode perhitungan yang tepat mendefinisikan keandalan yang diharapkan dari data yang dihasilkan.

Atau untuk memasukkannya ke dalam diagram yang sangat sederhana:

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

Diberikan poin data Adan CAnda dapat menginterpolasi Bdan memperkirakan D.


Keakuratan interpolasi atau ekstrapolasi sepenuhnya tergantung pada seberapa baik Anda dapat menjelaskan setiap variabel dalam perhitungan. Jika Anda mengetahui semua variabel dan memiliki persamaan yang memperhitungkan semuanya, maka Anda dapat menginterpolasi atau memperkirakan dengan mudah.

Untuk mekanik permainan faktor pembatas akan menjadi titik di mana variabel dipengaruhi dengan cara yang tidak dapat diprediksi, baik oleh pemain atau elemen acak atau pseudo-acak.

Misalnya, pergerakan bola di Breakout (dalam bentuknya yang paling sederhana) dapat diekstrapolasi sampai ke titik di mana ia berpotensi berinteraksi dengan dayung pemain. Semua variabel dapat dipertanggungjawabkan hingga saat itu sehingga Anda dapat dengan tepat memodelkan tindakan bola. Ketika mencapai titik di mana interaksi pemain dimungkinkan maka ada sejumlah hasil yang mungkin dan tidak ada cara untuk secara akurat memodelkan mana yang akan menjadi kasus sampai itu benar-benar terjadi. Ini adalah batas prediksi dari model fisika game.

Interpolasi lebih mudah dalam permainan karena Anda bekerja dengan poin yang diketahui dan tidak perlu bertanya-tanya apakah kondisinya akan berubah. Selanjutnya Anda memiliki kontrol penuh atas variabel yang terlibat dan dapat menggunakan aturan apa pun yang Anda tetapkan untuk menentukan jalur suatu objek. Semakin kompleks aturan semakin sulit untuk diinterpolasi.

Untuk pergerakan objek dengan tabrakan sederhana dalam ruang bermain bebas gravitasi (seperti Breakout atau Pong) mekanisme interpolasi sepanjang garis pada jalur adalah interpolasi linier sederhana dari titik-titik, dan perhitungan yang sama dapat digunakan untuk mengekstrapolasi garis ke menguji tabrakan di masa depan. Setelah tabrakan terdeteksi, Anda dapat memperkirakan efek dari tabrakan itu pada objek yang terlibat.

Corey
sumber
Ini persis perbedaan antara kata-kata. Alasan kita memiliki kata-kata yang berbeda untuk menebak B dan D ketika yang kita miliki adalah A dan C adalah karena menebak B dengan benar jauh lebih mudah daripada menebak D dengan benar. Pakar artileri menyebut interpolasi backeting. Mereka mendapatkan dua putaran penandaan di kedua sisi Anda, Anda mati jika Anda tidak bergerak. Ekstrapolasi adalah apa yang Anda coba lakukan ketika Anda bermain pasar saham setelah melihat grafik harga saham. Ekstrapolasi itu sulit.
candied_orange
@CandiedOrange Ekstrapolasi sistem yang rumit itu sulit, tetapi juga interpolasi. Itu tergantung pada kualitas poin data Anda dan seberapa dapat diprediksi sistem tersebut. Jika Anda dapat memperoleh persamaan akurat yang menggambarkan sistem maka Anda dapat menginterpolasi atau memperkirakan dengan akurat - garis sederhana untuk diekstrapolasi, kurva dapat, pasar saham tidak begitu banyak.
Corey
Maksud saya, interpolasi memberi Anda teorema dasar kalkulus untuk digunakan kembali. Ekstrapolasi tidak. A dan C memberi tahu Anda B adalah suatu tempat yang memungkinkan C diberikan. A. Meminta D meminta untuk memprediksi masa depan. Yang Anda tahu C adalah tempat pemain meninggal. Mana yang lebih dapat diandalkan dan diterima: Interpolasi atau ekstrapolasi? mengapa-adalah-ekstrapolasi-lebih berisiko daripada interpolasi
candied_orange
@CandiedOrange Tentu, ekstrapolasi terbatas pada tingkat di mana Anda dapat mengontrol dan memprediksi semua variabel yang relevan. Begitu juga interpolasi. Mengingat dua posisi yang telah diduduki pemain di masa lalu, Anda tidak dapat selalu menginterpolasi titik tengah secara akurat karena pemain mungkin berbeda dari jalur langsung atau optimal. Kedua metode ini terbatas.
Corey
Tentu, keduanya terbatas. Tapi yang satu lebih sering menghancurkan karier daripada yang lain. Coba tebak. Klaim saya bukanlah interpolasi yang sempurna. Melihat mereka memiliki kekuatan prediksi yang sama berbahaya.
candied_orange
0

Jawaban singkatnya: Anda melakukan interpolasi ketika Anda harus memperkirakan nilai antara dua nilai yang diketahui (yaitu: dalam satu jam nilainya 1, dalam 3 jam nilainya tiga, untuk menginterpolasi nilai pada 2 pada nilai yang paling mungkin nilai 2, dengan nilai yang diberikan nilai). Ekstrapolasi adalah ketika yang tidak diketahui berada di luar apa yang Anda ketahui, jadi ketika 1 dan 2 diketahui Anda bisa membuat tebakan yang berpendidikan 3.

Interpolasi: di antara Extrapolate: di luar

Jawaban panjang di sini kemungkinan besar jauh lebih akurat dan benar secara ilmiah, tetapi saya harap penjelasan sederhana saya dapat masuk akal bagi sebagian orang

patrick
sumber