Konstruksi de Casteljau · Bobot Bernstein

Kurva Bézier

Ambil titik pada pecahan t yang sama di setiap sisi poligon, lalu ulangi pada setiap sisi poligon baru yang lebih pendek, sampai tersisa satu titik. Saat t bergerak dari 0 ke 1, titik itu menggambar kurva Bézier.

Kurva Bézier dalam visualisasi ini

Sebuah kurva Bézier berderajat n ditentukan oleh n + 1 titik kontrol P0,…,PnP_0, \dots, P_n: dua titik menghasilkan ruas garis, tiga menghasilkan kurva kuadratik, dan empat menghasilkan kurva kubik yang dipakai program menggambar. Titik B(t)B(t) pada kurva, berwarna merah dalam gambar, diperoleh dengan berulang kali mengambil fraksi t di sepanjang setiap sisi poligon kontrol. Di sini kamu bisa memindahkan titik, menyapu t dari 0 ke 1, dan melihat ruas-ruas konstruksi meninggalkan benang yang membentuk garis luar kurva.

Konstruksi menampilkan poligon pada setiap tingkat untuk nilai t saat ini, masing-masing dengan satu sisi lebih sedikit daripada tingkat sebelumnya. Sapu menjalankan t dari 0 ke 1, meninggalkan benang konstruksi pada selang t yang sama, dengan warna menurut t. Kurvanya sendiri adalah garis tipis.

Jika ditulis sebagai rumus, konstruksi ini adalah tangga rata-rata berbobot: algoritma de Casteljau.

Pi0=Pi,Pik(t)=(1−t) Pik−1(t)+t Pi+1k−1(t),B(t)=P0n(t).P_i^0 = P_i, \qquad P_i^k(t) = (1 - t)\,P_i^{k-1}(t) + t\,P_{i+1}^{k-1}(t), \qquad B(t) = P_0^n(t) .

Jika semua tingkat itu dijabarkan, setiap titik kontrol mendapat jumlah dari sejumlah hasil kali n faktor, dengan setiap faktor berupa 1 − t atau t. Untuk PiP_i, setiap hasil kali memiliki tepat i faktor t, dan ada (ni)\binom{n}{i} hasil kali seperti itu, sehingga

B(t)=∑i=0nbi,n(t) Pi,bi,n(t)=(ni)ti(1−t)n−i.B(t) = \sum_{i=0}^{n} b_{i,n}(t)\, P_i, \qquad b_{i,n}(t) = \binom{n}{i} t^{i} (1 - t)^{n-i} .

Bobot-bobot ini adalah polinomial Bernstein, yang ditampilkan pada grafik kecil. Untuk 0≤t≤10 \le t \le 1, bobotnya tidak pernah negatif dan jumlahnya 1, sehingga B(t)B(t) adalah rata-rata berbobot dari titik-titik itu dan kurva tidak pernah keluar dari selubung cembungnya. Memindahkan satu titik PiP_i dengan vektor Δ memindahkan setiap titik kurva sebesar bi,n(t) Δb_{i,n}(t)\,\Delta, paling besar di dekat t=i/nt = i/n. Bagian kurva itu tidak selalu bagian yang paling dekat dengan titik kontrol tersebut.

Pada t = 0, setiap tingkat dimulai di P0P_0, sehingga B(0)=P0B(0) = P_0; demikian pula, B(1)=PnB(1) = P_n. Kurva melewati kedua ujungnya dan biasanya tidak melewati titik-titik lainnya. Tingkat terakhir konstruksi berupa satu ruas garis yang, selama tidak menyusut menjadi satu titik, terletak pada garis singgung kurva:

B′(t)=n(P1n−1(t)−P0n−1(t)),B′(0)=n (P1−P0),B′(1)=n (Pn−Pn−1).B'(t) = n \bigl(P_1^{n-1}(t) - P_0^{n-1}(t)\bigr), \qquad B'(0) = n\,(P_1 - P_0), \qquad B'(1) = n\,(P_n - P_{n-1}) .

Jadi, kurva berangkat dari P0P_0 menuju P1P_1 dan tiba di PnP_n dari arah Pn−1P_{n-1}, kecuali jika kedua titik di ujung itu berimpit. Itulah sebabnya program menggambar menampilkan titik-titik tengah kurva kubik sebagai gagang yang menjulur dari kedua ujungnya.

Setiap benang pada tingkat terakhir yang bukan satu titik menyinggung kurva di titik yang dibawanya. Benang satu tingkat di bawahnya menyinggung dengan cara yang sama kurva yang dibentuk oleh lebih sedikit titik bertetangga. Jadi, setiap keluarga benang membentuk garis luar kurvanya sendiri, dan kurva berderajat lebih rendah tampak di dalam poligon. Membentuk garis luar bukan berarti membungkus dari satu sisi: di titik belok, kurva melintasi garis singgungnya sendiri, dan benang berada di kedua sisi. Jika ketiga titik kontrol tidak segaris, benang kurva kuadratik menyerupai seni benang yang dililitkan di antara dua baris paku lurus, dan kurva yang terbentuk adalah parabola.

Konstruksi pada t = s juga membelah kurva menjadi dua. Titik pertama pada setiap tingkat menjadi titik kontrol bagian dari 0 ke s, sedangkan titik terakhir menjadi titik kontrol bagian dari s ke 1. Belah menampilkan kedua kelompok ini. Jika dibelah dua berulang kali, poligon setiap bagian makin mendekati kurva. Naikkan derajat menempuh arah sebaliknya: satu titik kontrol tambahan, kurva yang sama, dan poligon yang lebih dekat dengannya. Sebaliknya, titik yang ditambahkan dengan menekan gambar mengubah kurva.

Paul de Casteljau mengembangkan konstruksi ini di Citroën pada 1959. Pierre Bézier di Renault menemukan kurva yang sama secara independen dan menerbitkannya pada 1960-an.

Hal yang perlu diperhatikan

  • Langkah t yang sama tidak harus menempuh jarak yang sama di sepanjang kurva.
  • Bagian dengan warna paling kuat bukanlah kurva. Di situlah benang paling banyak bertumpuk, dan letaknya bisa sedikit melenceng dari kurva.

Terkait