Saya telah menerapkan mesin fisika berdasarkan konsep-konsep dalam teks klasik Advanced Character Physics oleh Thomas Jakobsen. Gesekan hanya dibahas dengan sangat singkat dalam artikel dan Jakobsen sendiri mencatat bagaimana "model gesekan lain dan lebih baik dari ini dapat dan harus diimplementasikan."
Secara umum bagaimana seseorang dapat menerapkan model gesekan yang dapat dipercaya di atas konsep dari artikel yang disebutkan? Dan bagaimana gesekan yang ditemukan diterjemahkan menjadi rotasi pada lingkaran?
Saya tidak ingin pertanyaan ini mengenai implementasi spesifik saya tetapi tentang bagaimana menggabungkan ide-ide Jakobsens dengan sistem gesekan yang hebat secara umum. Tapi di sini ada demo langsung yang menunjukkan kondisi mesin saya saat ini yang tidak menangani gesekan dengan cara apa pun: http://jsfiddle.net/Z7ECB/embedded/result/
Di bawah ini adalah gambar yang menunjukkan dan contoh tentang bagaimana deteksi tabrakan dapat bekerja di mesin yang berbasis di koran. Dalam integrasi Verlet posisi saat ini dan sebelumnya selalu disimpan. Berdasarkan ini posisi baru dihitung. Di setiap frame saya menghitung jarak antara lingkaran dan garis. Jika jarak ini kurang dari jari-jari lingkaran tabrakan telah terjadi dan lingkaran diproyeksikan tegak lurus keluar dari garis menyinggung sesuai dengan ukuran tumpang tindih (offset pada gambar).
Kecepatan implisit karena integrasi Verlet sehingga mengubah posisi juga mengubah kecepatan. Yang perlu saya ketahui adalah entah bagaimana menentukan jumlah gesekan pada lingkaran dan memindahkannya mundur sejajar dengan garis untuk mengurangi kecepatannya.
sumber
Jawaban:
Anda harus melihat kertas "posisi berdasarkan dinamika" Mathias Mueller et all. Ini pada dasarnya sama dengan kertas Jacobsons dan dia mungkin memberi Anda lebih banyak informasi tentang gesekan.
http://www.matthiasmueller.info/publications/posBasedDyn.pdf
Mereka menyatakan bahwa gesekan pada dasarnya mengurangi kecepatan partikel di bidang tumbukan dengan beberapa nilai skalar.
Perhatikan bahwa ini tidak memberi Anda efek gesekan coulomb (jumlah momentum ke tumbukan tidak mempengaruhi besarnya gaya gesekan) tetapi Anda mungkin bisa mendapatkannya dengan mempertimbangkan kecepatan partikel ke dalam bidang tumbukan.
sumber
Dalam mesin bodi kaku "normal" Anda akan memodelkan gesekan sebagai impuls tegak lurus terhadap normal. Saya akan menebak bahwa dalam konteks ini yang berarti bukannya impuls mengatur posisi partikel yang terkena dampak dengan tepat. Dengan kendala di tempat ini seharusnya, jika saya memahami artikel dengan benar, maka iteratif mencapai keadaan di mana gesekan juga mempengaruhi rotasi. Saya menduga bahwa dengan "model yang lebih baik" penulis berarti cara yang lebih baik untuk menentukan jumlah gesekan daripada proyeksi linear interpenetrasi. Namun ini dugaan di pihak saya karena saya belum pernah menerapkan fisika dengan pendekatan ini sendiri.
EDIT:
Untuk menghitung ukuran gaya gesek Anda memiliki nilai offset pada gambar Anda. Saat Anda menggunakan verlet dengan stempel waktu tetap, kami tahu bahwa offset ini sebenarnya adalah kecepatan yang dimiliki kontak ke arah kontak normal (well, tidak persis, dan saya pikir inilah yang dimaksud penulis dengan membuat perkiraan gesekan yang lebih baik ). Mengetahui kecepatan sepanjang kontak normal sangat penting karena kita dapat menggunakannya untuk menentukan impuls. Cara terbaik adalah menerapkan gesekan dalam bentuk impuls di setiap bingkai di mana ada kontak. Ukuran gesekan pada sumbu paralel terhadap bidang kontak ditentukan oleh koefisien gesekan (ditentukan oleh bahan, misalnya 0,7 untuk gesekan yang agak tinggi). Gesekan maksimum yang bisa Anda miliki adalah koefisien gesekan dikalikan dengan offset. Perhatikan bahwa nilai ini bisa lebih besar dari kecepatan aktual di sepanjang salah satu sumbu. Dalam hal ini Anda memiliki gesekan statis dan partikel tidak boleh bergerak sama sekali dalam sumbu itu. Jika nilainya kurang dari itu partikel akan bergerak sedikit tetapi diperlambat, yaitu gesekan dinamis.
sumber