Tôi đã được thông báo rằng cây tứ giác là cấu trúc dữ liệu lý tưởng cho trò chơi của tôi, nhưng tôi gặp khó khăn trong việc hiểu chính xác hình dạng hoạt động như thế nào trong cây tứ giác.
Tôi đang làm điều này bằng JavaScript, nhưng tôi nghĩ những câu hỏi này có thể áp dụng cho bốn cây trong bất kỳ ngôn ngữ nào.
Tôi nghĩ tôi chủ yếu là hiểu được cách cơ bản (x, y) điểm và chèn điểm công trình trong cây quad, và rằng tôi có thể làm điều đó trên giấy.
Đây là một JSfiddle về thử nghiệm của tôi với các điểm.
Ngoài một trường hợp, các bài kiểm tra của tôi với các điểm đang hoạt động như mong đợi.
Nhưng sự nhầm lẫn của tôi bắt đầu khi các hình dạng như hình chữ nhật có liên quan. Khi bạn đang lấy từ một cây tứ giác có hình dạng, nó có kiểm tra từng điểm của hình dạng không, và chúng rơi vào nút nào? Và làm thế nào để chèn hình dạng thậm chí hoạt động, khi nó chấp nhận các tham số (x, y, chiều rộng, chiều cao) cho mỗi hình dạng? Nó có sử dụng chiều rộng / chiều cao từ điểm bắt đầu để tính các điểm góc khác, sau đó được phân phối vào các nút thích hợp không? Nếu một hình dạng được chèn kéo dài thành bốn nút, dữ liệu của hình dạng đó có được lưu vào tất cả bốn nút không?
Và khi một phương thức truy xuất chấp nhận một hình dạng là tham số (x, y, chiều rộng, chiều cao), điều gì đang thực sự xảy ra? Đây có phải là lần đầu tiên nhìn thấy các nút mà hình dạng sẽ kéo dài đến đâu nếu nó được chèn vào, và sau đó lấy tất cả các đối tượng của các nút đó?
Tôi có một JSfiddle làm việc với các hình dạng , nhưng tôi hoàn toàn bối rối về kết quả thử nghiệm của mình. Tôi đang nhận được các đối tượng trùng lặp được trả lại!
Ví dụ, hình vuông màu đỏ là một hình vẽ tương đương với các tham số tôi đang nhập vào phương thức truy xuất của mình. Tôi nghĩ rằng vì hình vuông màu đỏ này trải dài cả bốn nút, nên nó sẽ trả về mọi đối tượng trong cây tứ giác! Nhưng nó không, và tôi gặp khó khăn trong việc hợp lý hóa những gì nó trở lại. Tôi có một số bài kiểm tra khác hiện đang được bình luận, nhưng bạn có thể bỏ bình luận và chạy chúng để xem kết quả khó hiểu hơn!
Như đã nói, nếu tôi muốn trả về tất cả các điểm trong cây tứ giác, tôi sẽ làm thế nào? Một phương thức lấy bằng cách sử dụng một hình dạng toàn bộ kích thước của giới hạn? Ví dụ: lấy (0, 0, canvas. Thong, canvas.height)?
Các thư viện JavaScript quadtree Tôi đang sử dụng đã được gọi bằng các nguồn khác nhau, vì vậy tôi cho rằng việc thực hiện thực tế là chính xác và có uy tín.
Tôi nghĩ rằng rất nhiều sự nhầm lẫn của tôi có thể xuất phát từ sự hiểu lầm về thuật ngữ cây bốn lá. Giống như, tại sao họ nói giới hạn thay vì kích thước, khi một "điểm" cũng có các tham số chiều rộng / chiều cao? Đây có phải là vấn đề của quy ước / tay ngắn, hay chúng là những khái niệm hoàn toàn khác nhau?
Cảm ơn vì đã dành thời gian cho tôi!
_stuckChildren
trường trong mã. Bạn cũng có thể thấy điều này trong mẫu "truy xuất các mục có giới hạn" - nó luôn làm nổi bật màu đỏ các nút nằm trên đường viền của các nút mà bạn đã nhấp, cho đến tận nút gốc.