2009-01-03 44 views
11

Bằng đột quỵ của đường bezier khối Tôi ngụ ý vẽ đường cong 'A' với chiều rộng đường cụ thể 'w'.Đường viền của đường cong đường cong khối bezier

Làm thế nào tôi có thể lấy được các đường cong hình khối khác mô tả đường viền của đột quỵ bezier 'A'?

+0

vào liên kết hiện tại để giấy Hain nếu có ai đang tìm kiếm đó là: http://www.cis.usouthal.edu/~hain/ chung/Ấn phẩm/Bezier/BezierFlattening.pdf – Fattie

Trả lời

13

Ohhh. Bạn muốn nhận được các đường cong bù đắp của một đường cong bezier.

Tin xấu. điều này là khó bởi vì những đường cong này không thể đơn giản được bắt nguồn bằng số. Chúng chứa tất cả các loại giao lộ, vòng lặp và những thứ khó chịu khác.

Mặc dù có một số xấp xỉ. Cách tiếp cận tốt nhất mà tôi đã đọc cho đến nay là từ một bài báo của Thomas F. Hain (Fast, Precise Flattening of Cubic Bézier Path and Offset Curves).

Ông làm phẳng, vì vậy giấy của ông chủ yếu là về phân hủy các đường cong bù đắp thành các đoạn thẳng và các đoạn cung tròn, nhưng bạn có thể hợp nhất chúng lại thành các beziers sau đó.

Để hiểu rõ hơn, bạn cũng có thể muốn đọc các giấy tờ liên quan khác của mình.

+0

Bài báo cũng có trên citeseerx: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.106.5344&rep=rep1&type=pdf – ergosys

4

QPainterPathStroker Qt (mã nguồn mở và mã khá dễ đọc) sử dụng thuật toán được mô tả trong giấy nói trên để thực hiện những gì bạn muốn.

0

Việc cần làm là chính xác như những người khác đã giải thích rất khó. Đường cong bù đắp không phải là một Bezier khối và là rất khó. Sau đó, concavities sâu hơn so với các vấn đề giao cắt nguyên nhân.

Tin tốt là thông thường bạn muốn tính toán bù trừ đột quỵ để hiển thị, vì vậy chỉ cần độ chính xác pixel. Ngoài ra, các giao lộ khác nhau vẫn tạo ra đa giác được lấp đầy, nếu bạn quan sát quy tắc quanh co để điền đa giác. Vì vậy, bạn làm phẳng đường cong đầu tiên, sau đó bù đắp trong một thời trang tuyến tính, và nó sẽ trở thành một vấn đề đa giác đường thẳng.

Một số mã ở đây có thể được sử dụng như một thực hiện tham khảo: https://github.com/memononen/nanosvg

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