2D çarpışma tespiti için bir quadtree kullanmaya çalışıyorum ama bunu nasıl uygulayacağımı biraz şaşırdım. Her şeyden önce, dört alt daireyi (her bir kadranı temsil eden) ve bir alt çerçeveye sığmayan nesnelerin bir koleksiyonunu içeren bir dörtgenim olurdu.2D çarpışma tespiti için Quadtree
- geçerli düğümdeki nesnelerle çarpışmaların için nesneyi kontrol edin: ağacında çarpışmaları için bir nesne kontrol ederken
, böyle bir şey (QuadTree for 2D collision detection sayesinde) yapardı.
- Boşluğu nesneye bastıran herhangi bir alt ağaç için, tekrarlayın.
bir dörtlü ağaç ağacın içindeki tüm çarpışmalar bulmak için:
- Kontrol akımı düğüm birbirlerine nesneye karşı akım düğümün her nesne.
- Geçerli düğümdeki her nesneyi, her alt ağacın karşısına göre kontrol edin.
bir Dörtlüağaç içine eklemek için: nesne birden alt ağaçlar uyan
- , o anki düğüm ekleyebilir ve dönüş.
- Aksi takdirde, hangi alt ağacı içeriyorsa yineleyin. Her ağaca
- Recurse:
bir quadtree güncellemek için.
- Geçerli düğümdeki herhangi bir öğe, geçerli ağaçta artık tam olarak uymuyorsa, ana öğeye taşıyın.
- Geçerli düğümdeki herhangi bir öğe bir alt ağacın içine sığarsa, bunu alt ağacın içine yerleştirin.
Bu doğru mu? Geliştirilebilir mi?
Bunu açıkladığınız şekilde uygulayın, bu şekilde yaptım ve Dave O.'nin yaptığı gibi ve bu daha kolay kodlanabilir ve daha hızlıdır. Önünüzdeki tüm yaprakları takip etmek için daha fazla liste yönetmek önlenebilir ek yükü ekler. İşte benim sürümlerimden birine (Java'da): [Steerio] (https://github.com/ClickerMonkey/steerio/blob/master/Java/src/org/magnos/steer/spatial/quad/SpatialQuadNode. java) – ClickerMonkey