Quadtree พร้อมรายการที่ซ้ำกัน
ฉันกำลังใช้ควอดทรี สำหรับผู้ที่ไม่ทราบโครงสร้างข้อมูลนี้ฉันรวมถึงคำอธิบายเล็ก ๆ ต่อไปนี้: ควอดทรีที่มีโครงสร้างข้อมูลและอยู่ในระนาบแบบยุคลิดสิ่งที่ octree อยู่ในพื้นที่ 3 มิติ การใช้ควอดทรีทั่วไปคือการจัดทำดัชนีเชิงพื้นที่ เพื่อสรุปการทำงานของมัน quadtree คือชุดของรูปสี่เหลี่ยมที่นี่ด้วยความจุสูงสุดและกล่องขอบเขตเริ่มต้น เมื่อพยายามที่จะแทรกองค์ประกอบลงในควอดทรีซึ่งมีความจุมากที่สุดควอดทรีจะถูกแบ่งออกเป็น 4 ควอดทรี (การแสดงทางเรขาคณิตซึ่งจะมีพื้นที่เล็กกว่าต้นไม้สี่เท่าก่อนแทรก); แต่ละองค์ประกอบมีการกระจายใน subtrees ตามตำแหน่งของมันคือ มุมบนซ้ายถูกผูกไว้เมื่อทำงานกับสี่เหลี่ยม ดังนั้นควอดทรีเป็นทั้งใบและมีองค์ประกอบน้อยกว่าความสามารถของมันหรือต้นไม้ที่มี 4 ควอดทรีเป็นเด็ก ๆ ความกังวลของฉันคือถ้าคุณพยายามเพิ่มรายการที่ซ้ำกันอาจเป็นองค์ประกอบเดียวกันหลายครั้งหรือหลายองค์ประกอบที่มีตำแหน่งเดียวกัน quadtrees มีปัญหาพื้นฐานในการจัดการกับขอบ ตัวอย่างเช่นถ้าคุณทำงานกับควอดทรีที่มีความจุ 1 และหน่วยสี่เหลี่ยมผืนผ้าเป็นกล่องขอบเขต: [(0,0),(0,1),(1,1),(1,0)] และคุณลองแทรกสี่เหลี่ยมสองอันบนขอบเขตซ้ายบนซึ่งเป็นจุดกำเนิด: (หรือในทำนองเดียวกันถ้าคุณลองแทรก N + 1 ครั้งในควอดทรีที่มีความจุ N> 1) quadtree->insert(0.0, 0.0, 0.1, 0.1) quadtree->insert(0.0, 0.0, 0.1, 0.1) ส่วนแทรกครั้งแรกจะไม่มีปัญหา: แต่เมื่อแทรกครั้งแรกจะก่อให้เกิดการแบ่ง …