2B nesneye hizalanmış sınırlama kutusu kavşak testi


9

İki nesne hizalı sınırlama kutusu var (yani eksen hizalı değil, nesne ile döner). İki nesne hizalı kutunun örtüşüp örtüşmediğini bilmek istiyorum. ( Düzenle: not - Uzaktaki nesneleri hızlı bir şekilde atmak için eksene hizalanmış bir sınırlama kutusu testi kullanıyorum, bu yüzden dört rutinin biraz daha yavaş olması önemli değil. )

Kutularım dört x, y noktası olarak saklanır. Yanıtları araştırdım, ancak değişken durumlarını ve algoritmalarını bunları özel durumuma uygulamak için örneklerde anlamıyorum.

Birisi bana bunun nasıl yapılacağını açık ve basit bir şekilde gösterebilir mi? Teşekkürler. (Belirli bir dil önemli değildir, C tarzı sözde kod uygundur.)

Yanıtlar:


5

Nereye bakacağınızı biliyorsanız kolay. Sen oobb arıyorsunuz. Buraya gidin: http://www.realtimerendering.com/intersections.html .
Orada bu sitenin bağlantısını http://www.geometrictools.com/LibMathematics/Intersection/Intersection.html
ve doğru kodu bulabilirsiniz. (ctrl + f "Kutuların kesişimi (2D)")

SAT kullanır ve kaynak kodları ile makale içerir.


Geometrik aletler tarafından tanımlanan algoritma işaret ettiğim algoritmadır.
Jari Komppa

Bunun 4 yıl önce olduğunu anlıyorum, ama her zaman bir aşağılık ve tüm bunları açıklayın. Bu oldukça "Cevabınız başka bir kalede" ve şimdi cevap ikinci durumda bile görünmüyor.
Yann

2

Daha kolay yol muhtemelen B kutusunun her bir tepe noktasını A kutusunun her iki tarafına karşı test etmektir (işaretli mesafeyi hesaplayın). Bu şekilde her tepe noktasını segmentin "ön" veya "arkası" olarak sınıflandırabilirsiniz.

B'nin tüm köşe noktaları A segmentlerinden birinin "ön" olarak sınıflandırılırsa, B ve A çakışmaz; aksi halde yaparlar.

Bu biraz dahil, bu nedenle karelerin sınırlayıcı dairelerini (hesaplama önemsiz) kullanarak önce bir daire daire kontrolü yaparak biraz performans kazancı elde edebilirsiniz.


İlk önce uzaktaki nesneleri hızlı bir şekilde atmak için bir eksen hizalamalı sınırlama kutusu testi yapıyorum ... dörtlü test hakkında daha fazla ayrıntı var mı?
AshleysBrain

geçici olarak her iki dörtlü de aynı dönüşümle döndürün, böylece bunlardan biri eksen hizasıyla sonuçlanır ... sonra SAT testini notabebe'nin belirttiği gibi kullanın. sonuç bulunduğunda, geri almak için dönüşü ters çevirin.
Steve H
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.