Logic giao nhau của cây kd là gì?


12

Tôi đang cố gắng tìm ra cách để thực hiện một cây KD.

Trên trang 322 của "Phát hiện va chạm thời gian thực" của Ericson

Phần văn bản được bao gồm bên dưới trong trường hợp xem trước sách của Google không cho phép bạn xem nó khi bạn nhấp vào liên kết

phần văn bản

Phần có liên quan:

Ý tưởng cơ bản đằng sau việc giao một phân đoạn tia hoặc hướng có hướng với cây kd là đơn giản. Đường thẳng được giao với mặt phẳng phân tách của nút và giá trị t của giao điểm được tính toán. Nếu t nằm trong khoảng của đường thẳng, 0 <= t <= tmax, đường thẳng đứng trên mặt phẳng và cả hai con của cây đều được hạ xuống đệ quy. Nếu không, chỉ có bên chứa nguồn gốc phân khúc được truy cập đệ quy.

Vì vậy, đây là những gì tôi có: ( mở hình ảnh trong tab mới nếu bạn không thể nhìn thấy chữ)

hình ảnh

Cây logic

div

Ở đây tia cam đang đi qua cảnh 3d. Các x đại diện cho giao điểm với một mặt phẳng. Từ TRÁI, tia tới:

  • Mặt trước của khối bao quanh của cảnh,
  • Mặt phẳng chia (1)
  • Mặt phẳng chia (2.2)
  • Phía bên phải của khối bao quanh của cảnh

Nhưng đây là những gì sẽ xảy ra, ngây thơ theo mô tả cơ bản của Ericson ở trên:

  • Thử nghiệm chống phân tách mặt phẳng (1). Ray đánh vào mặt phẳng phân tách (1), vì vậy con trái và phải của mặt phẳng tách (1) được bao gồm trong thử nghiệm tiếp theo.
  • Thử nghiệm chống phân tách mặt phẳng (2.1). Ray thực sự đánh vào mặt phẳng đó, (cách bên phải) để cả hai đứa trẻ được đưa vào cấp độ kiểm tra tiếp theo. (Đây là phản trực quan - không nên chỉ đưa nút dưới cùng vào các thử nghiệm tiếp theo)

Ai đó có thể mô tả những gì xảy ra khi tia cam đi qua cảnh chính xác không?

Câu trả lời:


14

Nó thực sự khá đơn giản; thử nghiệm chống lại mặt phẳng phân tách (2.1) sẽ thất bại, vì những điều sau đây:

Khi tia chạm mặt phẳng phân tách (1), bạn "tách tia" hoặc; bạn đặt t-range cho nó hợp lệ và tiếp tục xuống cây với các phần kết quả.

Do đó, khi kiểm tra đối với mặt phẳng (2.1), bạn nên kiểm tra xem chỉ phần tia bên trái của mặt phẳng (1) có giao với mặt phẳng (2.1) không. Giao điểm "xa bên phải" mà bạn nói đến có một t> tgiá trị nơi bạn chia tia với mặt phẳng (1).

Tôi hy vọng điều đó đủ rõ ràng.

Tóm tắt: Các giao điểm tia / mặt phẳng tiếp theo chỉ nên được thực hiện với phần tia còn lại sau khi tách nó với mặt phẳng đang xét.


1
Grr !! (viết tắt của câu trả lời tuyệt vời)
bobobobo

Câu trả lời hay Chào mừng đến với GDSE.
MichaelHouse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.