Thuật toán tìm tâm đường cong Bezier


8

Tôi cần tìm trung tâm của đường cong Bezier để xoay nó. Tôi có một danh sách tất cả các điểm (điểm kiểm soát, điểm bắt đầu và điểm kết thúc, tất cả các điểm trên chính đường cong). Làm thế nào tôi sẽ đi tìm trung tâm của nó?


4
Curves là các thực thể toán học mà họ không có trung tâm như vậy. Tuy nhiên, bạn có thể đang tìm kiếm trung tâm hộp bouding, trung tâm hộp giới hạn tối thiểu, trọng tâm của khu vực kèm theo đường cong khi các điểm cuối được kết nối, trọng tâm của polybeziers kín, trung điểm đường cong, trung bình điểm kiểm soát, v.v.
joojaa

1
@joojaa chắc chắn có 2 trung tâm tự nhiên tôi có thể nghĩ ra, một là t=0.5điểm. và hai là điểm giữa hình học liên quan đến khoảng cách cartesian dọc theo đường.
v.oddou

1
@ v.oddou có trong thực tế có nhiều hơn đó là lý do tại sao câu hỏi cần làm rõ. Tất cả các ứng dụng vectơ mà tôi đã sử dụng (Illustrator, xara, corel, sketch, v.v.) Sử dụng trung tâm hộp giới hạn cục bộ để xoay đối tượng, vì vậy rất hiếm khi thấy các định nghĩa trung tâm khác được sử dụng.
joojaa

Câu trả lời:


14

Đường cong Bézier là các thực thể toán học và không có trung tâm được xác định rõ ràng. Thực tế người ta có thể định nghĩa nhiều thứ khác nhau là trung tâm của đường cong Bézier. Tôi đã cố gắng miêu tả một số trung tâm có thể có trong hình ảnh 1. Hơn cả điều này tồn tại.

nhập mô tả hình ảnh ở đây

Hình 1 : Một số trung tâm có thể có của một đường cong Bézier

Trong thực tế, gần như tất cả các ứng dụng đồ họa hướng đến vẽ đều sử dụng trung tâm của hộp giới hạn cục bộ (BB) làm trung tâm của chúng. Phần mềm hoạt hình thường có một khái niệm bổ sung về trục để họ sử dụng phương pháp hỏi người dùng, nếu không có đầu vào nào được thực hiện, họ thường trở lại trung tâm BB hoặc đơn giản là trung tâm tọa độ cục bộ. Điều này có lẽ là do BB cần phải được tính toán bằng mọi giá và việc lấy trung tâm của nó khá dễ thực hiện (xem A Primer trên Bézier Curves ).

Trung tâm của các số liệu trọng lực cũng có phần tự nhiên, đặc biệt là trong bối cảnh hoạt hình, mặc dù khó tính toán hơn. Dễ nhất là để rời rạc dữ liệu và thực hiện tính toán trên đầu vào riêng biệt. Điều này cho biết một số giải pháp dạng kín có thể áp dụng cho trọng tâm đường cong, nhưng nó không phải là một phương trình rất hay để xây dựng và đơn giản hóa.

Sau đó, chúng ta có các điểm trên đường cong: điểm giữa theo chiều dài cung và điểm có tham số là 0,5. Trong suy nghĩ của tôi, param thường có vấn đề mặc dù dễ tính toán và nó sẽ mất đi ý nghĩa khi bạn xâu chuỗi nhiều Béziers với nhau cho một polybézier. Trung tâm của chiều dài tất nhiên chỉ là tự nhiên miễn là đường cong không được đóng lại.ttt

Chúng tôi cũng xác định các trung tâm có thể khác, trung tâm có thể nằm ở tâm đường cong trọng lực của thân tàu, trung bình của các điểm kiểm soát hoặc trung tâm BB của lồng điều khiển. Mặc dù trong thực tế những điều này dường như không làm việc rất tốt.

Xin lưu ý : Mặc dù đường cong trong hình 1 cho thấy trung tâm BB khá gần với một số trung tâm tự nhiên nhưng điều này không phải lúc nào cũng đúng với các đường cong phức tạp hơn và đặc biệt là các polybéziers.


3
Tôi sẽ không gọi đây là một bình luận. Tôi gọi đó là một câu trả lời xuất sắc giải quyết mức độ hiểu biết hiện tại của người hỏi, giải thích đầy đủ lý do tại sao câu hỏi rộng hơn dự kiến ​​và mở đường cho những câu hỏi mới.
trichoplax

@trichoplax mặc dù có thể được tóm tắt là "trung tâm xác định" bởi sự kém lịch sự.
ratchet freak

@ratchetfreak Tôi thích các câu trả lời cố gắng xác định lỗ hổng kiến ​​thức của người hỏi hơn là mong họ hiểu đầy đủ về chủ đề họ đang hỏi.
trichoplax

Tôi đang tìm cách để có được DISTANCE MIDPOINT cho các đường cong hình tứ giác và khối vuông của mình. Tôi đã sử dụng giá trị t 0,5 và như bạn nói tôi mới nhận ra nó có vấn đề. Điều tôi đang cố gắng làm bây giờ với phép tính bezier là di chuyển quả bóng với tốc độ đều. Nhưng việc sử dụng giá trị t làm cho nó rất khó khăn .. Tôi nghĩ rằng tôi cần tìm giá trị t thích hợp tùy thuộc vào độ dài cung. Bất kỳ tài nguyên hoặc một gợi ý nhỏ cho tôi, xin vui lòng?
Jenix

2
Thật không may, không có giải pháp dạng đóng chung chung nào tồn tại cho beziers nhưng một nguồn tài nguyên tốt bao gồm số lượng này và có thể tìm thấy nhiều hơn Ở đây, tôi đã đọc được một tài nguyên tốt hơn nên liên kết với nó nhưng tôi không có liên kết trên điện thoại. Nhưng có lẽ điều này là đủ @Jenix
joojaa

1

Vì chúng tôi không cho biết định nghĩa của "trung tâm" nào sẽ được sử dụng, chúng tôi cũng có thể sử dụng dễ dàng nhất. Đây sẽ là trong đó , , , là các điểm kiểm soát của đường cong.P0P1P2P3

Center=14(P0+P1+P2+P3)
P0P1P2P3
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.