Pada akhir slide yang hebat ini , penulis membandingkan semua integrator berbeda yang disajikan. Salah satu cara atau yang lain, mereka semua gagal kecuali untuk Integrasi Peningkatan Euler dan Integrasi Runge Kutta 4 , yang keduanya lulus semua tes.
Saya kira saya harus menyebutkan bahwa saya sedang mengerjakan game 2D yang tidak terlalu intensif secara fisika. Saya hanya ingin tahu di mana Improved Euler Integration akan gagal dan RK4 harus digunakan sebagai gantinya.
Permainan saya sebagian besar terdiri dari gravitasi sederhana (melompat dan turun), gerakan di sepanjang sumbu X dan Y, dan tabrakan kotak pembatas. Apakah layak untuk mengimplementasikan RK4 atau akankah Peningkatan Euler mencukupi? Saya melihat banyak diskusi di mana pengguna Euler Integration dihukum, tetapi dari apa yang saya lihat, Improved Euler adalah quivalen dalam masalah 2D sederhana. Saya membayangkan itu juga akan lebih cepat.
sumber
Jawaban:
Saya pribadi lebih suka Velocity Verlet untuk sebagian besar simulasi. Dalam pengalaman saya dengan metode ini, sangat cocok untuk persamaan yang cukup kaku. Sepertinya metode "Euler yang ditingkatkan" ini sangat mirip dengan Velocity Verlet dan mengandalkan kelas metode integrasi yang dikenal sebagai prediktor-korektor . Anda dapat membaca banyak hal tentang metode ini saat ini, dimulai dengan "Langkah besar dalam simulasi kain" karya David Baraff di mana kekuatan metode implisit benar-benar bersinar. Kejatuhan mereka adalah Anda:
Jadi, jika Anda bukan guru matematika, jari-jari Anda bisa tersangkut. Hanya bereksperimen dengan metode apa pun yang Anda inginkan dan kemudian puas dengan metode yang tampaknya paling baik untuk Anda. Sederhana tidak selalu lebih baik, tetapi untuk framerates interaktif, saya hanya tahu satu kata: kompromi.
Beberapa sumber tambahan yang mungkin ingin Anda lihat:
Jakobsen adalah semacam jenius untuk datang dengan ide sederhana untuk masalah pretentious (spesialisasinya adalah Kriptografi jika tidak salah, tetapi ia berhasil membuktikan kesetaraan matematika dari metodenya ke kelas algoritma iteratif Gauss-Seidel, yang konvergen ). Untuk mempermudah, lakukan ini terlebih dahulu sebelum mempelajari metode implisit.
EDIT KEMUDIAN : Baru-baru ini saya mendapatkan makalah tentang masalah ini dengan menggunakan integrator eksplisit untuk simulasi bodi lunak atau semi-kaku dan apa dampak kinerja dan kualitasnya. Makalah ini harus berfungsi sebagai panduan untuk memilih integrator tertentu, tergantung pada skenario.
sumber
T: Mengapa menggunakan Runge Kutta canggih?
A: Karena itu sangat tepat.
T: Kenapa tidak?
A: Karena Anda membuat game dan mesin fisika yang sangat tepat tidak masalah, itu hanya harus cukup baik untuk menipu pemain.
Ngomong-ngomong, jika Anda mengalami sedikit tabrakan pada tabrakan, seperti kebanyakan platformer, Euler sederhana baik-baik saja.
Saya sangat menyarankan agar Anda tidak seperti kode dalam presentasi menggunakan fisika langkah tetap, yang menyelamatkan Anda dari beberapa potensi gangguan, dan memungkinkan Anda memecahkan masalah mendapatkan bola atau kehilangan energi dengan cara yang sangat sederhana. Coba saja jalan tengah antara integrasi eksplisit dan implisit:
Apa yang presentasi tidak perlihatkan adalah bagaimana menangani tabrakan sehingga objek tampaknya tidak melampaui batas. Solusi sederhana untuk masalah itu adalah dengan menggunakan frekuensi pembaruan tinggi. Solusi yang lebih kompleks tetapi berpotensi melakukan lebih baik adalah untuk memindahkan objek kembali pada saat tabrakan, implementasi yang tepat tergantung pada perilaku fisika yang diinginkan.
sumber
Presentasi memiliki kesalahan. Metode yang disebut oleh presenter sebagai "Improved Euler" sebenarnya adalah metode Velocity Verlet!
Lihat di sini untuk sumber yang lebih resmi: http://www.physics.udel.edu/~bnikolic/teaching/phys660/numerical_ode/node5.html
Persamaan yang sama juga ada di Wikipedia .
Sebuah perbaikan langsung umum atas metode Euler adalah metode Midpoint yang mungkin dipikirkan oleh presenter tetapi akhirnya salah mengira Velocity Verlet sebagai Euler yang ditingkatkan. Satu-satunya perbedaan antara metode Midpoint dan Velocity Verlet adalah bahwa kecepatan adalah rata-rata akselerasi terakhir dan selanjutnya, bukan hanya bergantung pada akselerasi terakhir.
sumber