Tôi nghĩ rằng bạn đã có ý tưởng đúng, nhưng việc thực hiện sẽ vô cùng khó khăn. Tôi đoán rằng khi bạn nói 'trong tệp SVG', bạn có nghĩa là hình dạng được xác định bởi một (hoặc nhiều hơn - hình mẫu của bạn có một đường dẫn bên trong!). Thật không may, các đường dẫn SVG có thể phức tạp đáng kể, với cả hai đường cong Bezier bậc hai và khối và các đoạn cung tròn elip. Giao điểm của một đường thẳng với bất kỳ trong số này là một vấn đề đã được giải quyết, nhưng là một vấn đề không tầm thường và thậm chí cả vấn đề tái cấu trúc đường cong Bezier để chia chúng thành hai điểm tại điểm giao nhau là một mẹo nhỏ - về cơ bản, những gì bạn đang tìm kiếm đủ phức tạp để lấy một cuốn sách nhỏ để trả lời, không phải là một bài đăng trên diễn đàn! Điều đó nói rằng, có một số tài liệu tham khảo tuyệt vời ra khỏi đó; ngắn ngắnphiên bản của câu trả lời là bạn muốn sử dụng phân chia đệ quy cùng với thuộc tính được gọi là 'biến đổi giảm dần' của đường cong Bezier (về cơ bản, thuộc tính mà đường cong Bezier được chứa trong thân lồi của các điểm kiểm soát của nó) để thu hẹp các vị trí có thể có của giao lộ (và lưu ý rằng một đường có thể có nhiều điểm giao nhau và đó là trường hợp đặc biệt khác mà bạn có thể phải tính đến). Và một khi bạn giải quyết vấn đề giao lộ, bạn vẫn còn một con đường dài phía trước - bạn sẽ có rất nhiều công việc kế toán để theo dõi các đoạn đường cong và đường thẳng và phân chia chúng thành từng mảnh một cách chính xác. Điều này không làm bạn nản lòng chút nào; chỉ cần nhận thức được tầm quan trọng của những gì bạn đang cố gắng làm!
May mắn thay, câu hỏi khác của bạn - 'tôi có thể thay đổi đường giao nhau của các hình để cho chúng độ cong không?' - có một câu trả lời dễ dàng hơn: hoàn toàn. Vì bạn đã ở trong vùng đất SVG, nên tôi cũng sử dụng các đường cong Bezier ở đây: đầu tiên, chọn năm điểm p1..p5 dọc theo đoạn đường bạn muốn 'cong ra', có thể ngẫu nhiên trong các khoảng cách đều nhau ; sau đó thay thế chúng một khoảng cách ngẫu nhiên nhỏ khỏi đường và sử dụng chúng làm điểm kiểm soát của hai đường cong Bezier riêng biệt, một điểm sử dụng các điểm p0, p1, p2, p3 và điểm còn lại sử dụng các điểm p3, p4, p5 và p6 (trong đó p0 và p6 ở đây là hai điểm cuối của đoạn đường gốc). Bạn cũng có thể tận dụng thuộc tính lồi của đường cong Bezier ở đây, đảm bảo rằng các điểm bị dịch chuyển của bạn không ' T dịch chuyển quá xa để hai vùng ở hai bên của đường cong vẫn là các vùng đơn giản. Điều này sẽ cung cấp cho bạn loại ranh giới cong mà bạn đang theo đuổi.