Dasar-dasar B-spline (NURBS) rasional

9

Saya mencoba untuk memahami kurva NURBS (permukaan kemudian!) Tetapi saya mengalami kesulitan memahami dasar-dasar kerja batinnya. Bisakah seseorang tolong jelaskan beberapa hal kepada saya? Karena saya berasal dari kurva Bezier, perbandingan antara keduanya akan sangat berguna.

  1. The "rasional fungsi dasar" tampak sedikit seperti Bernstein polinomial (rasional) kurva Bezier. Apakah parameternya ujuga berubah dari 0 ke 1?

  2. Bagaimana cara "menambahkan detail" ke kurva? Maksudku, dengan Beziers jika aku perlu menggambarkan bentuk yang lebih rumit, aku hanya akan "menjahit" beberapa Beziers bersama-sama. Atau lebih jarang, tingkatkan derajatnya. Saya mengerti saya dapat meningkatkan derajat NURBS juga dan menempatkan beberapa kurva NURBS secara berdampingan, tetapi apakah ini yang harus dilakukan?

  3. Artikel Wikipedia, setidaknya bagi saya, tampaknya tidak begitu jelas tentang "simpul vektor" ini. Apa itu?

Ecir Hana
sumber
Ini agak terlalu banyak untuk satu pertanyaan. Saya pada dasarnya dapat memulai kuliah pengantar saya tentang masalah ini dalam beberapa jam. Sedikit masuk ke detail penggunaan De casteljanu dan algoritma de boor akan membawa saya terlalu banyak waktu.
joojaa
1
Jadi saya ingin melihat pertanyaan 3, 5 dan mungkin 6 memisahkan sebagai pertanyaan terpisah untuk membuat menjawab dan memahami lebih banyak ukuran makanan.
joojaa
@ joojaa Tentu, saya dapat membagi pertanyaan, hanya beberapa detik ...
Ecir Hana
1
Jadi pertanyaan 3 , 5 dan 6 dipisahkan menjadi pertanyaan yang terpisah.
Ecir Hana

Jawaban:

7

B-Splines dan Beziers adalah penemuan paralel dari hal yang kurang lebih sama. Di mana Beziers mencoba memulai dari gagasan tentang pas singgung. B-Splines mulai dengan gagasan fungsi dasar. NURB Splines (atau bagian rasionalnya sebenarnya) hanyalah generalisasi dari B-Splines sehingga Anda dapat menggambarkan bagian kerucut yang akurat *, karena mereka memiliki minat khusus dalam bidang teknik.

Pertama mari kita mulai dengan terminologi NURB Spline sederhana. Alasan kurva ini sedikit berbeda dari Beziers. Pertama ada konsep span. Suatu rentang kira-kira akan setara dengan seluruh spline Bezier kecuali di nurbs Anda dapat memiliki sejumlah bentang.

masukkan deskripsi gambar di sini

Gambar 1 : Satu rentang NURBS kubik. Ini agak atipikal dalam formulasi

Setiap rentang dibentuk oleh derajat kurva + 1 titik kontrol **. Setiap kurva dapat terdiri dari sejumlah titik. Setiap rentang berturut-turut menggunakan kembali poin dari rentang sebelumnya dengan menjatuhkan satu poin dan mengambil satu poin lagi dalam daftar. Jadi membuat kurva yang lebih kompleks semudah menambahkan lebih banyak poin ke kurva.

CATATAN : Kurva gambar sedikit parametrik, tidak bisa menjelaskan apa artinya ini di bagian selanjutnya. Ketika saya mengambil konsep knot. Ini hanya cara yang lebih mudah untuk menjelaskan bagaimana kurva saling menempel.

masukkan deskripsi gambar di sini

Gambar 2 : 2 bentang kubik satu sama lain, setiap rentang menggunakan 4 poin. bersama-sama mereka membentuk satu kurva. Mereka berbagi poin paling banyak satu sama lain.

Sekarang kita mungkin telah menjawab 2 pertanyaan tentang menambah kompleksitas. Tetapi saya ingin menambahkan bahwa skema ini memastikan kontinuitas yang lebih baik daripada kurva bezier. Selain itu Anda dapat membuat array titik yang membentuk siklus lambung. Membentuk kurva tertutup.

masukkan deskripsi gambar di sini

Gambar 3 : Permukaan NURBS kubik tertutup memiliki bentang sebanyak yang memiliki poin. Setiap warna adalah satu rentang.

Parametrization

Sampai titik ini orang bisa mengatakan bahwa merangkai bentang adalah trik seperti "menjahit" kurva Bezier. Tetapi ada perbedaan. Kurva parametrisized sepanjang panjangnya. Jadi kurva tidak terpisah mereka tidak menyisipkan bentuk 0 ke 1 pada setiap rentang seperti Beziers lakukan. Alih-alih kurva yang mendasarinya memiliki rentang parameter yang dapat disesuaikan Parameter disimpan dalam sesuatu yang disebut simpul, dan masing-masing simpul dapat memiliki nilai yang meningkat secara acak dalam urutan. Jadi Anda dapat parametrize seluruh kurva rentang u ke 0 - 1 atau 0 hingga 12. Parametriisasi juga tidak harus seragam.

Parameterisasi ini mengubah cara kurva dibentuk. Mengapa ini berguna? Nah, Anda bisa mengatur ketegangan di sepanjang kurva untuk satu. Atau Anda bisa menyandikan panjang kurva ke parameter U. Salah satu kegunaan aneh adalah untuk membuat kurva NURBS bertindak seperti kurva Bezier baik sepenuhnya atau hanya sebagian (bezier seperti di ujung tetapi tidak di tengah misalnya).

masukkan deskripsi gambar di sini

Gambar 4 : Poin yang sama menunjukkan urutan simpul yang berbeda. Kurva NURBS hijau sesuai dengan kurva Bezier yang memiliki rentang parameter 0-2 bukannya 0-1

Ok jadi apa simpulnya? Mereka hanyalah rentang fungsi dasar. Karena b-spline kubik dengan 4 poin memiliki 4 fungsi interpolasi, ia membutuhkan 8 knot. Hanya area di mana 3 fungsi tumpang tindih dan jumlah hingga 1,0 yang dapat ditarik garis.

masukkan deskripsi gambar di sini

Gambar 5 : 2 fungsi dasar yang berbeda, seperti bezier dan parametrisasi segmen yang seragam, menyebar ke kisaran 0-1.

Dan sekarang sebagian besar kita telah menjelaskan jawaban untuk pertanyaan 1. Rentang tidak ditentukan, Anda dapat meregangkan fungsi basis sesuai keinginan Anda. Dan akhirnya simpul vektor hanya menghasilkan rentang parameter untuk fungsi dasar. Masih ada satu hal lagi yang mengatur bentuk kurva dan itu adalah vektor bobot. Tapi itu cerita lain yang bisa diceritakan di tempat lain.


* Rasional ini dalam hal ini berarti bahwa kurva NURBS tidak harus berupa polinomial, karena Anda tidak dapat menggambarkan lingkaran dengan polinomial.

** Seseorang dapat menentukan jenis poin lainnya.

joojaa
sumber
Mengenai (*), kurva Bezier memiliki masalah yang sama. Masalahnya adalah bahwa kurva (dalam kedua kasus) didefinisikan sebagai x = f (t), y = f (t). Namun, Anda juga dapat mendefinisikan kurva univariat / eksplisit / 1 dimensi (sekali lagi, dalam kedua kasus) sebagai y = f (x), menggunakan x sebagai pengganti t. Dalam kasus kurva rasional, alih-alih dapat mewakili bagian kerucut, Anda dapat mewakili sinus dan kosinus (dan lebih banyak lagi tentu saja). NURBS / b-splines tidak spesial dalam hal itu.
Alan Wolfe
Saya pikir pernyataan Anda tentang panjang salah (hanya bekerja dengan fungsi linear?), Dan tidak yakin bagaimana perhitungan panjang seharusnya sesuai dengan penjelasan Anda (info bagus yang Anda berikan, katakan saja!)
Alan Wolfe
@AlanWolfe tetap dihapus
joojaa
Paling luar biasa! Terima kasih banyak, penjelasannya sangat bagus!
Ecir Hana
Mungkin salah ketik? "Sebaliknya permukaan yang mendasarinya memiliki rentang parameter yang dapat disesuaikan. Parameter disimpan dalam sesuatu yang disebut simpul, dan setiap simpul dapat memiliki nilai arbitrer yang lebih besar dari yang berikutnya." -> "Alih-alih kurva yang mendasarinya memiliki rentang parameter yang dapat disesuaikan. Parameter disimpan dalam sesuatu yang disebut simpul, dan setiap simpul dapat memiliki nilai arbitrer yang lebih besar dari sebelumnya ." Btw., Bisakah Anda menjelaskan apa yang Anda maksud dengan "rentang UV"? "UV" menyiratkan 2D ..?
Ecir Hana