Trong hệ thống của chúng tôi, có những yêu cầu mà chúng tôi muốn chuyển một số dòng nguồn (với độ chính xác thấp) sang các dòng tham chiếu (với độ chính xác cao). Hình ảnh sau đây cho các trường hợp sử dụng bình thường. Màu đỏ là dòng nguồn và màu xanh là dòng tham chiếu.
Trong trường hợp này, dòng nguồn sẽ được di chuyển một phần và kết quả sẽ như dòng màu xanh lá cây hiển thị:
Có những tình huống mà dòng nguồn cần phải được di chuyển hoàn toàn.
Kết quả:
Hiện tại giải pháp của chúng tôi là chiếu điểm đầu / điểm cuối của đường nguồn vào đường tham chiếu và ngược lại, sau đó tìm các điểm được chiếu trên đường nguồn và đường tham chiếu. Với các điểm được chiếu này, chúng ta có thể trích xuất phần cần thiết của nguồn và tham chiếu và sau đó kết hợp chúng thành một điểm mới.
Điều này hoạt động cho hầu hết các trường hợp, nhưng có những trường hợp phương pháp này không hoạt động. Cụ thể, khi một trong hai dòng có hình dạng "C" hoặc điểm đầu rất gần với điểm cuối. Hai hình ảnh tiếp theo đưa ra kịch bản.
Áp dụng thuật toán của tôi, chúng tôi nhận được kết quả:
Theo một cách dễ hiểu bởi vì thuật toán hiện tại chỉ tìm thấy các điểm được chiếu và trích xuất các dòng.
Những gì chúng tôi mong đợi là một cái gì đó như thế này:
Vì vậy, những gì tôi cần thuật toán mạnh mẽ hơn để làm điều này để nó cũng có thể xử lý các trường hợp đặc biệt như trường hợp trước. Tôi đã cố gắng chiếu mọi điểm từ đường này sang đường khác và để tìm hai điểm được chiếu gần điểm đầu / điểm cuối của đường được chiếu, nhưng không có may mắn. Tôi vẫn có thể tìm thấy trường hợp cho kết quả bất ngờ.
Có ai gặp phải vấn đề tương tự trước đây? Sẽ thật tuyệt nếu có một phần mềm hoặc thư viện có thể làm công việc tương tự. Bất kỳ câu trả lời sẽ được đánh giá cao.