2008-10-24 28 views

Trả lời

6

Cách tiếp cận tốt nhất của bạn có thể là chia nhỏ đường spline thành các đoạn đường riêng lẻ và kiểm tra từng đoạn đường cho giao cắt với đường kẻ. Spline có thể giao với dòng trong nhiều hơn một điểm, vì vậy bạn cũng sẽ phải quyết định cái nào bạn quan tâm đến

+0

Tôi đồng ý, đây là phương pháp thường được đề xuất. Nó thường hiệu quả hơn nếu bạn làm điều này lặp đi lặp lại, tinh chỉnh các đoạn đường mà bạn tìm thấy một giao lộ cho đến khi bạn nhận được độ phân giải mong muốn. – Kena

7

Một cách tiếp cận toán học thuần túy.

  • Chuyển spline và dòng quá rằng dòng nằm trên trục X.
  • Tính điểm trên đường spline mà Y = 0 (phụ thuộc vào thứ tự của đường spline).
  • Chuyển những điểm này trở lại hệ thống dây chính gốc của bạn.

Nếu đây là cách bạn đang đi, tôi có thể tìm ra các công thức cần thiết.

+0

Tôi thích cách tiếp cận này, nhưng làm cách nào bạn giải quyết khi nào Y = 0 của spline? Có cách nào khác ngoài việc đánh giá phân đoạn spline và cố gắng ước tính nó không? – Herms

+0

Tùy thuộc vào thứ tự của spline có các giải pháp hiện có cho các phương trình spline (ít nhất là lên đến splines khối). Các công thức có xu hướng thực sự khó xử và chúng không được bảo đảm là có lỗi số thấp. Như tôi đã nói: một cách tiếp cận toán học thuần túy. –

7

Thuật toán hiệu quả nhất mà tôi đã nghe nói đến được gọi là Cắt xén Bezier.

Đây là book chapter on curve and spline intersection (pdf).

+1

Tôi đã thực hiện thành công giải pháp từ nguồn này, đặc biệt là xem phần 7.3, vì việc tìm kiếm đa thức cho hàm bezier và B Spline rất dễ dàng. –

Các vấn đề liên quan