tôi đã phải vật lộn với một vấn đề trong một thời gian và cho đến nay vẫn chưa tìm thấy bất kỳ giải pháp tốt hơn thì ngây thơ một:Làm thế nào để tìm thấy ngã tư đầu tiên của một ray với vòng tròn di chuyển
N vòng tròn được cho rằng đang di chuyển theo theo luật tuyến tính. Đối với mỗi vòng tròn, chúng ta có bán kính ban đầu (tại thời điểm 0.0), tọa độ ban đầu và bán kính và tọa độ của nó tại thời điểm 1.0 (thời điểm kết thúc). Chúng ta cũng có các tia k với các tọa độ nguồn gốc của chúng và một vectơ dọc theo tia. Mỗi tia chỉ tồn tại tại một thời điểm cụ thể t k. Tôi cần để có thể tìm thấy giao điểm đầu tiên của một tia với bất kỳ vòng tròn nào. Số k dự kiến là khá lớn (hàng triệu hoặc hàng tỷ) cũng như số vòng tròn dự kiến (hàng nghìn). Tôi cần giải pháp nhanh hơn sau đó kiểm tra tất cả các tia đối với tất cả các vòng tròn.
Tôi đã tìm kiếm trên internet một thời gian nhưng tôi đã không tìm thấy phương pháp tiếp cận giải pháp tốt. Ngay cả một ý tưởng cho các vấn đề dễ dàng hơn của các vòng tròn không di chuyển sẽ được đánh giá cao.
Tôi có cảm giác rằng cây kd nên phù hợp với trường hợp tĩnh và có thể một kdetic kd-tree sẽ giải quyết vấn đề khó hơn. Tuy nhiên tôi không thể tìm ra cách sử dụng cây kd ngay cả đối với cây dễ dàng hơn.
Tôi coi như một cách tiếp cận như vậy nhưng điều xấu trong nó là nó không cải thiện sự phức tạp của trường hợp xấu nhất. –
Bạn có nghĩa là trường hợp xấu nhất vì sự bực dọc dày đặc (chồng chéo) hoặc số phân vùng được kiểm tra? – Ante
Số lần kiểm tra phân vùng. Tôi tưởng tượng bạn chỉ đặt các trung tâm của các vòng tròn trong cây kd và sau đó bán kính của chúng có thể được chọn theo cách mà không đạt được tối ưu hóa thực tế nào. –