Saat membuat hal-hal seperti fisika dalam game, Anda memerlukan integrator. Saya telah melihat integrasi Verlet menyebutkan beberapa tempat sebagai alternatif yang bagus untuk integrasi Euler. Misalnya dalam dokumen terkenal oleh Thomas Jakobsen . Namun dalam artikel ini Glenn Fiedler menulis:
Daripada memperkenalkan Anda ke beragam integrator berbeda yang ada, saya akan memotong ke pengejaran dan langsung ke yang terbaik. Integrator ini disebut integrator Runge Kutta order 4 alias RK4.
Jadi ternyata tidak ada peluru perak. Apa pro dan kontra dari integrator yang berbeda? Mengenai kesederhanaan, kecepatan, ketepatan, stabilitas, dll. Integrator mana yang paling cocok untuk jenis permainan apa? Kapan Anda akan menggunakan Verlet, RK4 atau yang lainnya? Haruskah Anda menggunakan Euler?
Jawaban:
Pro dan kontra dari kedua metode:
RK4 Pro:
Kontra RK4:
Prolet Prolet:
Kekurangan Verlet:
Menggunakan satu di atas yang lain tergantung pada skenario. Jika kekakuan dan kekuatan eksternal besar dan energi virtual adalah masalah, maka pertimbangkan metode lain yang memiliki kata "implisit" dalam deskripsi / judulnya.
Catatan beberapa penulis / buku menggunakan istilah semi-implisit Euler untuk integrator Euler eksplisit aktual yang disebut metode Euler symplectic (atau Euler Cromer) dari mana Verlet sebenarnya berasal. Verlet juga disebut oleh beberapa orang sebagai "metode leapfrog". Velocity Verlet dan metode titik tengah cukup mirip sejak estimasi pada langkah waktu
t + 0.5*dt
diperlukan untuk langkah prediktor-korektor. Metode IMEX (implisit-eksplisit) juga digunakan untuk memberi nama dua pendekatan yang serupa tetapi tidak identik: pisahkan perhitungan menjadi bagian kaku dan non-kaku dan gunakan integrator berbeda pada mereka (eksplisit untuk non-kaku, implisit untuk kaku) ATAU pecahkan untuk kecepatan dengan langkah pembaruan implisit dan memperbarui posisi secara eksplisit (ini adalah metode semi-implisit hybrid yang jatuh pada kelas metode IMEX karena bagian kaku paling mempengaruhi perhitungan akselerasi). Metode implisit lebih rumit dan membutuhkan penyelesaian sistem persamaan non-linear simultan untuk seluruh konfigurasi. Metode implisit digunakan untuk benda yang cacat dan biasanya tidak digunakan untuk benda kaku yang dipisahkan.Seperti yang dinyatakan dalam salah satu komentar, jika Anda bisa, jangan gunakan Euler. Gunakan metode titik tengah, Euler semi-implisit atau, dengan biaya yang sama, posisi-Verlet. Semuanya memiliki akurasi sedikit lebih tinggi dan stabilitas yang lebih masuk akal daripada integrator Euler eksplisit.
Bacaan perbandingan kecil yang disarankan :
http://wiki.vdrift.net/Numerical_Integration
sumber
Implementasi Euler cenderung sangat cepat, tetapi jauh lebih tidak stabil daripada alternatifnya. Runge Kutta lebih lambat dari Euler, tetapi jauh lebih tepat dan stabil.
Saya tidak terlalu berpengetahuan tentang integrasi Verlet, jadi saya tidak tahu bagaimana hal itu terjadi terhadap Euler dan Runge Kutta.
Jika Anda membutuhkan simulasi Anda untuk lebih tepat, atau bahkan bukti numerik, Runge Kutta adalah yang terbaik dari keduanya.
Jika Anda membutuhkan fisika cepat dan berbiaya rendah untuk gim sederhana, Euler adalah pilihan yang lebih baik.
sumber
Pertama dan terutama saya pikir Anda harus menggunakan Euler sampai Anda mengalami kebutuhan langsung untuk menggunakan skema integrasi yang lebih maju. Ini cepat dan mudah diimplementasikan.
Jika Anda mengalami masalah stabilitas seperti sistem mata air yang tidak pernah berhenti atau jika simulasi Anda membutuhkan tingkat akurasi yang tinggi, maka mulailah bereksperimen dengan yang lain.
Salah satu yang belum saya lihat disebutkan di atas adalah metode titik tengah yang sangat mudah diimplementasikan dan hanya membutuhkan satu langkah integrasi tambahan.
sumber