Saya awalnya mencoba mengimplementasikan persimpangan persegi panjang, yang berfungsi dengan baik. Namun, ketika saya harus menerapkan sistem fisika, seperti kecepatan, percepatan, dan vektor arah, saya harus menemukan cara untuk menentukan sisi mana dari persegi panjang bertabrakan. Sekarang, di sistem saya, tidak ada persegi panjang yang diputar, jadi ini menyederhanakan masalah. Namun, saya tidak dapat menemukan cara mudah untuk menentukan sisi persegi panjang mana yang bertabrakan. Saya pernah menangani masalah ini sebelumnya tetapi gagal total.
Apa yang saya lakukan di masa lalu adalah menentukan jarak antara setiap sisi persegi panjang paralel dan memeriksa apakah jaraknya dekat dengan 0 (menggunakan beberapa rentang jarak yang telah ditentukan sebelumnya) atau 0. Namun, untuk aritmatika titik apung, ini terbukti tidak stabil karena waktu yang tidak diketahui berlalu. Kadang-kadang, persegi panjang akan benar-benar berpotongan satu sama lain sebelum memenuhi kisaran yang ditentukan.
Di sisi lain, saya berpikir tentang menelurkan banyak persegi panjang, masing-masing persegi panjang untuk setiap sisi. Namun, setelah berpikir lagi, itu akan menjadi hal yang sama dengan memiliki sisi paralel dengan pengecekan jarak, hanya saja jarak itu adalah lebar dari setiap mini-rectangle.
Karena itu, ada saran untuk masalah ini?
sumber
Jawaban:
Diadaptasi dari jawaban saya untuk "Sisi Mana yang Dipukul?" :
Saya menyarankan menghitung jumlah Minkowski B dan A, yang merupakan persegi panjang baru, dan memeriksa di mana pusat persegi panjang A terletak relatif pada persegi panjang baru (untuk mengetahui apakah tabrakan terjadi) dan ke diagonalnya (untuk mengetahui di mana tabrakan sedang terjadi):
sumber