Saya memiliki persegi panjang 2D dengan posisi x, y, tinggi dan lebar, dan titik yang diposisikan secara acak di dekatnya.
Apakah ada cara untuk memeriksa apakah titik ini mungkin bertabrakan dengan persegi panjang jika lebih dekat dari jarak tertentu? Bayangkan sebuah radius yang tidak terlihat di luar titik yang bertabrakan dengan kata persegi panjang. Saya punya masalah dengan ini hanya karena itu bukan persegi!
collision-detection
geometry
John Smith
sumber
sumber
Saya menganggap persegi panjang Anda adalah Axis-Aligned.
Anda hanya perlu "menjepit" titik ke dalam persegi panjang dan kemudian menghitung jarak dari titik dijepit.
Point = (px, py), Rectangle = (rx, ry, rwidth, rheight) // (sudut kiri atas, dimensi)
sumber
Anda harus menggunakan tabrakan lingkaran-persegi panjang untuk ini. Ada pertanyaan serupa tentang Stack Overflow.
Pusat lingkaran Anda akan menjadi titik yang dimaksud, dan jari-jari akan menjadi jarak yang ingin Anda periksa.
sumber
Jika Anda mencoba mencari tahu jarak dari titik ke tepi persegi panjang, bekerja dengan masing-masing dari sembilan daerah yang dibuat oleh persegi panjang mungkin cara tercepat:
sumber
[Jawaban yang dimodifikasi berdasarkan komentar]
Jika Anda ingin melihat apakah titik tersebut dalam katakanlah 10 unit jika persegi panjang abu-abu pada gambar di bawah ini, Anda memeriksa apakah titik tersebut di salah satu dari
Pendekatan ini sedikit tidak berlaku. Metode serupa yang menghindari harus menguji semua 4 sudut dengan menggunakan simetri persegi panjang didokumentasikan di sini di stackoverflow
sumber
Anda dapat menggunakan sesuatu seperti ini:
sumber