Algoritma untuk menemukan pusat kurva Bezier

8

Saya perlu menemukan pusat kurva Bezier untuk memutarnya. Saya memiliki daftar semua titik (titik kontrol, awal dan akhir, semua titik pada kurva itu sendiri). Bagaimana saya bisa menemukan pusatnya?

pengguna4656
sumber
4
Kurva adalah entitas matematika yang tidak memiliki pusat seperti itu. Namun Anda mungkin mencari pusat kotak bouding, pusat kotak batas minimum, pusat gravitasi dari area tertutup yang mendasari kurva ketika titik akhir terhubung, pusat gravitasi polybeziers tertutup, titik tengah kurva, rata-rata titik kontrol dll.
joojaa
1
@ joojaa pasti ada 2 pusat alam yang bisa saya pikirkan, satu t=0.5intinya. dan dua adalah titik tengah geometris tentang jarak perjalanan kartesius sepanjang garis.
v.oddou
1
@ v.oddou ya sebenarnya ada banyak lagi mengapa pertanyaan perlu klarifikasi. Semua aplikasi vektor yang saya gunakan (Illustrator, xara, corel, sketsa, dll.) Gunakan pusat kotak pembatas lokal untuk memutar objek, jadi jarang melihat definisi pusat lainnya yang digunakan sama sekali.
joojaa

Jawaban:

14

Kurva Bézier adalah entitas matematika dan tidak memiliki pusat yang jelas. Seseorang sebenarnya dapat mendefinisikan banyak hal yang berbeda sebagai pusat kurva Bézier. Saya telah mencoba untuk menggambarkan beberapa pusat yang mungkin dalam gambar 1. Lebih dari ini ada.

masukkan deskripsi gambar di sini

Gambar 1 : Beberapa pusat yang mungkin dari kurva Bézier rentang tunggal

Dalam praktiknya hampir semua aplikasi grafis yang dirancang untuk menggambar menggunakan pusat kotak pembatas lokal (BB) sebagai pusatnya. Perangkat lunak animasi biasanya memiliki konsep pivot tambahan sehingga mereka menggunakan pendekatan ask user, jika tidak ada input yang dibuat, mereka sering kembali ke pusat BB atau hanya pusat koordinat lokal. Ini mungkin karena BB perlu dihitung dan mendapatkan pusatnya cukup mudah dilakukan (lihat A Primer on Curve Bézier ).

Pusat metrik gravitasi juga agak alami terutama dalam konteks animasi, meskipun lebih sulit untuk dihitung. Yang paling mudah adalah untuk mendiskritisasi data dan melakukan perhitungan pada input diskrit. Ini mengatakan beberapa solusi bentuk tertutup dimungkinkan untuk pusat kurva gravitasi, tetapi itu bukan persamaan yang sangat bagus untuk dirumuskan dan disederhanakan.

Kemudian kita memiliki pada titik kurva: titik tengah dengan panjang busur dan titik di mana parameter adalah 0,5. Dalam pikiran saya param sering bermasalah meskipun mudah untuk dihitung, dan kehilangan arti ketika Anda rantai beberapa Béziers setelah satu sama lain untuk polibier. Pusat panjang tentu saja alami selama kurva tidak tertutup.tt

Kami juga mendefinisikan pusat lainnya yang mungkin, pusatnya bisa di pusat kurva gravitasi lambung, rata-rata titik kontrol atau pusat kendali kandang pusat BB. Meskipun dalam praktiknya ini tampaknya tidak berhasil dengan baik.

Harap dicatat : Meskipun kurva pada gambar 1 menunjukkan pusat BB cukup dekat dengan beberapa pusat alami, ini tidak selalu berlaku untuk kurva yang lebih kompleks dan terutama polibeter.

joojaa
sumber
3
Saya tidak akan menyebut ini komentar. Saya akan menyebutnya jawaban luar biasa yang membahas tingkat pengetahuan penanya saat ini, menjelaskan sepenuhnya mengapa pertanyaan itu lebih luas dari yang diharapkan, dan membuka jalan bagi pertanyaan baru.
trichoplax
@trichoplax dapat diringkas sebagai "define center" oleh yang kurang sopan.
ratchet freak
@ scratchetfreak Saya lebih suka jawaban yang mencoba mengidentifikasi kesenjangan pengetahuan si penanya daripada mengharapkan mereka untuk sepenuhnya memahami topik yang mereka tanyakan.
trichoplax
Saya mencari cara untuk mendapatkan DISTANCE MIDPOINT untuk kurva quad dan bezier kubik saya. Saya menggunakan nilai t 0,5 dan seperti yang Anda katakan saya baru sadar itu bermasalah. Apa yang saya coba lakukan sekarang dengan perhitungan bezier adalah menggerakkan bola dengan kecepatan rata. Tetapi menggunakan nilai t membuatnya sangat sulit .. Saya pikir saya perlu menemukan nilai t yang tepat tergantung pada panjang busur. Sumber daya atau petunjuk kecil untuk saya, tolong?
Jenix
2
Sayangnya tidak ada solusi bentuk tertutup umum sinple ada untuk beziers tetapi sumber daya yang baik yang mencakup melakukan hal ini secara numerik dan lebih banyak dapat ditemukan Di sini sulit saya baca hari ini di tempat kerja sumber daya yang lebih baik harus terhubung, tetapi saya belum mendapatkan tautan di ponsel saya. Tapi mungkin ini sudah cukup @Jenix
joojaa
1

Karena kita tidak diberi tahu apa definisi "pusat" untuk digunakan, kita mungkin juga menggunakan yang termudah. Ini akan menjadi mana , , , adalah titik kontrol dari kurva.

Center=14(P0+P1+P2+P3)
P0P1P2P3
bubba
sumber