Saya mencari algoritma untuk menghitung arah dan kecepatan bola dalam permainan biliar. Saya yakin harus ada beberapa jenis kode sumber terbuka untuk ini karena permainan biliar adalah beberapa permainan komputer tertua yang dapat saya ingat.
Maksud saya, ketika satu bola menyentuh bola yang lain, saya perlu algoritma untuk menghitung arah keduanya. Itu akan tergantung dari sudut yang tepat di mana mereka saling memukul dan pada kecepatan.
Saya ingin berlatih kode Java, jadi saya mencari kode java atau paket yang memiliki jenis kode ini.
Jawaban:
Sementara deteksi / respons tumbukan bola-bola dasar cukup sederhana, melakukannya cukup akurat untuk simulasi kumpulan yang baik akan lebih rumit, karena Anda harus berurusan dengan putaran.
Apakah Anda sadar akan keberadaan mesin fisika? Beberapa contoh populer adalah ini (dan mereka dapat melakukan lebih dari sekedar tabrakan bola biliar). Mungkin pilihan yang baik untuk membuat permainan biliar, tetapi tidak begitu banyak untuk belajar Java ...
Dalam 2D
Box2D: http://www.box2d.org
Chipmunk: http://code.google.com/p/chipmunk-physics/
Dalam 3D
Bullet: http://bulletphysics.org/
ODE: http://www.ode.org
Jika Anda membuat game komersial beranggaran besar:
Havok: http://www.havok.com
sumber
Anda mungkin tertarik pada artikel " Pool Hall Lessons: Fast, Accurate Collision Detection Between Circles or Spheres " jika Anda memilih untuk pergi dengan rute "roll your own". Ini bukan Java-spesifik, tetapi membahas beberapa algoritma yang terlibat untuk simulasi sederhana.
sumber
Untuk permainan biliar sederhana di mana spin tidak dimodelkan, algoritma ini cukup sederhana.
Dalam kode semu ini menjadi:
Anda dapat menghilangkan massa dari algoritme jika semua bola memiliki massa yang sama dan juga mengasumsikan jari-jari konstan untuk semua bola untuk permainan pool, tetapi kode akan lebih berguna bagi Anda tanpa penyederhanaan tersebut.
Kode ini didasarkan pada tutorial ini , tetapi saya ingat bahwa perkalian impuls tidak benar di sana.
sumber