Orbit Kepler: dapatkan posisi di orbit dari waktu ke waktu


8

Saya sedang mengembangkan game terkait simulasi ruang, dan saya mengalami masalah dalam mengimplementasikan pergerakan bintang biner, seperti ini:

Bintang biner

Dua bintang mengorbit pusat massa mereka, dan lintasannya adalah elips.

Saya pada dasarnya tahu bagaimana menentukan kecepatan sudut pada posisi apa pun, tetapi bukan kecepatan sudut dari waktu ke waktu. Jadi, untuk sudut tertentu, saya dapat dengan mudah menghitung posisi bintang (lih. Http://en.wikipedia.org/wiki/Orbit_equation ).

Saya ingin mendapatkan posisi bintang dari waktu ke waktu. Persamaan parametrik karya elips tetapi tidak memberikan kecepatan yang benar: { X(t) = a×cos(t) ; Y(t) = b×sin(t) }.

Apakah mungkin, dan bagaimana itu bisa dilakukan?


Ini bisa dilakukan dengan mensimulasikan gravitasi yang cukup sederhana (tambahkan gaya yang bergantung pada massa * sqrt (jarak) dan lakukan fisika sederhana)
Elva

7
Tidak, jangan lakukan fisika sederhana! Orbits secara numerik tidak stabil dan semuanya akan meledak atau meledak.
Jonas Bötel

Jawaban:



0

Anda tampaknya memiliki cukup data untuk menghasilkan animasi yang berguna di atas. Simulasi Anda mungkin perlu lebih akurat daripada yang diberikan oleh solusi saya:

Untuk setiap bingkai animasi Anda di atas, rekam posisi piksel pusat dari setiap bintang. Masukkan nilai-nilai ini ke dalam dua array di program Anda. Untuk waktu tertentu t, temukan empat entri berturut-turut yang sesuai dalam setiap larik dan lakukan filter bikubik pada mereka untuk menghasilkan posisi setiap bintang.


Sebenarnya, animasinya dari Wikipedia.
Artefact2

0

Saya telah menemukan integrasi numerik sebagai cara termudah. Hukum kuadrat terbalik (F = GM / r ^ 2) berfungsi cukup baik. Dan Runge Kutta memesan empat yang sering disebut RK4 mudah diimplementasikan dan bekerja dengan tenang. Anda mulai dengan menulis routien yang mengambil turunan waktu urutan pertama, misalnya untuk objek tunggal dalam ruang 2D, Anda memiliki koordinat X dan Y, dan kecepatan X dan Y. Outputnya adalah turunan waktu, turunan waktu dari posisi hanyalah kecepatan, jadi setengahnya hanya menyalin nilai, maka akselerasi hanyalah gaya tarik gravitasi. Kemudian Anda mengikuti resep Runge Kutta. Kesalahan langkah waktu tunggal sebanding dengan langkah waktu ke kekuatan kelima. Anda menyesuaikan langkah waktu untuk membuat hasilnya cukup akurat. Satu keuntungan pada integrasi numerik adalah jika Anda ingin bermain dengan sistem untuk membuatnya lebih menarik,


Ya, ini solusi, tetapi program saya bukan simulasi fisika secara real time. Ini diskrit, dan saya tidak bisa memperbarui semuanya di mana-mana. Inilah mengapa posisi sebagai fungsi waktu menyenangkan: tidak perlu perhitungan, selalu tepat tidak peduli seberapa sering posisi diperbarui.
Artefact2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.