You are on page 1of 10

B-SPLINE

Umum
Bezier curve mempunyai kesulitan dalam melakukan local modification
dan infleksibilitas sebagai hasil dari suatu kenyataan dimana jumlah vertices dari
poligon sangat menentukan order dari kurva yang dihasilkan. Untuk mengatasi
masalah-masalah ini, kita memerlukan basis function yang tidak sama dengan nol
untuk sejumlah span yang terbatas dan oleh karenanya order dapat dipilih sesuai
dengan keinginan kita.
B-Spline basis memenuhi persyaratan-persyaratan diatas. Metode ini
pertama kali diusulkan oleh Schoenberg pada tahun 1946 dan dikembangkan oleh
Cox dan de Boor (1972). Basis diterapkan pada curve definition oleh Riesenfeld
(1973). Dalam bab ini kita akan mempelajari teori dasar dari teknik ini dan sifat-
sifat dari kurva yang dihasilkan dengan B-Spline.

Tinjauan tentang B-Spline


Pertimbangkan sebuah cubic spline dengan tiga span (4 titik). Untuk
menentukan sebuah cubic spline yang unik, kita memerlukan enam item, yaitu 4
point vectors dari knots (simpul) dan 2 tangent vector dikedua ujung. Jika kita
ingin untuk mempunyai sebuah cubic spline basis yang tidak sama dengan nol
(non-zero) sepanjang jumlah span yang terbatas, maka basis function harus
memiliki sifat-sifat sebagai berikut:
a) (t) = 0 pada kedua ujung
b) '(t) = 0 pada kedua ujung
c) "(t) = 0 pada kedua ujung
Syarat-syarat (b) dan (c) adalah untuk menjamin bahwa kurva yang dihasilkan
mempunyai suatu second-order continuity. Namun, contoh diatas (cubic splines
dengan 3 span) sebenarnya adalah memiliki/memenuhi 6 syarat untuk kondisi
yang diperlukan untuk menentukan sebuah kurva cubic spline dengan 3 span.
Basis function yang dihasilkan adalah (t) =0 untuk semua harga t. Untuk
membuat hal ini lebih berarti, maka kita harus meningkatkan jumlah span menjadi

1
4 yang akan meningkatkan jumlah boundary condition yang dibutuhkan menjadi
7. Oleh karena itu, satu boundary condition tambahan ini akan menghasilkan
sebuah basis function yang non-zero untuk 4 span seperti nampak pada diagram
dibawah.

tk tk+1 tk+2 tk +3 tk+4

Basis function derajat 3 (pangkat 3) yang berharga nol dimanapun, kecuali


sepanjang 4 span tersebut, disebut dengan sebuah fundamental spline atau B-
Spline dari order 4. Juga merupakan suatu konvensi atau kebiasaan dalam teknik
B-Spline untuk menggunakan bilangan-bilangan bulat yang meningkatkan secara
seragam untuk titik-titik (knots). Knots ti disebut parametric knots dan sebuah
koleksi dari parametric knots disebut dengan knots set.
Pada umumnya, B-Spline Mm,i (t) dengan order m (degree m 1) adalah
sama dengan nol dimanapun kecuali m successive spans (span yang berurutan) : ti-
m <t < ti . Mm,i (t) ditentukan oleh knots set dan sebuah nilai dari point vector.
Point vector ini menentukan amplitudo dari spline. Kita dapat membuat
standarisasi terhadap spline dengan menormalisasikannya dengan suatu cara
n
sehingga N
i 0
m,i (t ) 1 untuk semua harga t, dimana Nm,i (t) adalah normalized B-

Spline.

2
Dengan demikian kita sekarang dapat menentukan kurva cubic B-Spline
yang ditentukan oleh sebuah control polygon dengan n+1 vertices, sebagai
berikut:
n
Q(t ) Pi N 4,i (t )
i 0

Kita juga menginginkan kurva ini bermula pada vertices pertama (first vertex) dan
berakhir pada last vertex. Kita dapat menjamin kondisi ini dengan menyediakan 4
multiple knots diujung awal dan ujung akhir. Oleh karena itu, knot set akan
mempunyai bentuk sebagai berikut:
[0 0 0 0 1 2 3 4 tmax tmax tmax tmax ]

Jika control polygon mempunyai 6 vertices, maka kita memerlukan 6 basis


function, dimana masing-masing basis function harus ditentukan sepanjang 4
spans (atau 5 parametric knots). Jadi kita dapat mengkompilasi sebuah table basis
function yang menunjukkan nilai-nilai knotsnya sebagai berikut:

Basis Function Knots Values


N4,0 (t) 0 0 0 0 1
N4,1 (t) 0 0 0 1 2
N4,2 (t) 0 0 1 2 3
N4,3 (t) 0 1 2 3 3
N4,4 (t) 1 2 3 3 3
N4,5 (t) 2 3 3 3 3

Dalam hal ini, dapat kita lihat bahwa harga tmax = 3. Pada umumnya harga tmax
dihitung sebagai berikut:
tmax = n m + 2

dimana:
n = jumlah vertices minus 1
m = order dari B-Spline (degree = m 1)

3
Sebuah kurva B-Spline dengan order 5 dan dengan sebuah control polygon
yang memiliki 10 vertices akan mempunyai nilai parameter maximum sama
dengan 6, tmax = (10 1) 5 + 2 = 6 dan knots setnya adalah:
[0 0 0 0 0 1 2 3 4 5 6 6 6 6 6]

Sekarang kita kaji lebih dalam tentang sifat-sifat B-Spline. Kita dapat
menggambar sebuah diagram Nm,i (t) terhadap t sebagai berikut:

N4,1
N4,0

N4,2

N4,3

N4,4

0 1 2 3 4 5 t

n
a) Q(t ) Pi N m,i (t )
i 0

untuk t = 0 :
n
Q(0) Pi N m,i (0)
i 0

Dari diagram diatas, B-Spline yang non-zero pada t = 0 hanyalah Nm,i (0) = 1, jadi
Q(0) = Pi dan Q(tmax) = Pn

4
d n n
d
b)
dt i 0
N m,i (t )
i 0 dt
N m,i (t )

n
= N
i 0
m,i (t )

Dari normalisasi:
n

N
i 0
m,i (t ) 1

n
d
jadi N
i 0
m,i (0)
dt
(1) 0

Basis function yang non-zero disini hanyalah Nm,0 (0) dan Nm,1 (0), jadi
N'm,0 (0) = - N'm,1 (0)
n
Q'(0) = PN
i 0
i m,i (0) = P0 N'm,0 (0) + P1 N'm,1 (0)

Jadi Q'(0) = N'm,1 (0) (P1 - P0)

Kedua sifat diatas membuktikan bahwa kurva B-Spline bermula pada


vertex pertama dan berakhir pada vertex terakhir. Kedua tangent vectors diujung-
ujung kurva masing-masing sejajar dengan sisi-sisi pertama dan terakhir dari
control polygon. Sifat-sifat ini sama dengan karakteristik-karakteristik dari kurva
Bezier dan pada kenyataan-kenyataan telah dibuktikan bahwa kurva Bezier adalah
sebuah kasus khusus dari sebuah kurva B-Spline.
Untuk mempermudah memahami kurva B-Spline terdapat sebuah bentuk
dari B-Spline yang lebih sederhana. Pada dasarnya terdapat sejumlah pendekatan-
pendekatan yang sama, tapi yang paling populer adalah pendekatan yang
dikembangkan oleh de Boor dan oleh karenanya disebut dengan de Boor
Algorithm.
Basis function B-Spline ini adalah dalam bentuk rekursif sebagai berikut:
(t ti ) N 1,i (t ) (ti t ) N 1,i 1 (t )
N ,i (t )
ti 1 ti ti ti 1

dimana: 0 t tmax

5
= dummy variable
ti = knot set
[0 0 0 1 2 3 tmax tmax tmax ]

1, jika ti t ti+1
untuk N1,i (t) =
0, jika tidak pada range diatas

0
konvensi lainnya adalah 0
0

Contoh soal:
Untuk sebuah control polygon dengan vertices sebagai berikut:
P0 = (2,1) P1 = ( 4,3 ) P2 = ( 6,3 ) P3 = ( 8,2 ) P4 = ( 9,0 )
Buatlah sebuah kurva cubic B-Spline!

Pemecahan:
n = jumlah vertices 1 = 5 1 = 4
m = degree + 1 = 4
tmax = n m + 2 = 4 4 + 2 =2

knot set:
[0 0 0 0 1 2 2 2 2]

6
Menentukan nilai-nilai N,i (t) :
Untuk = 1 N1,i (t)
i t 0 0.5 1 1.5 2
0 1 0 0 0 0
1 1 0 0 0 0
2 1 0 0 0 0
3 1 1 1 0 0
4 0 0 1 1 1
5 0 0 0 0 1
6 0 0 0 0 1
7 0 0 0 0 1

Untuk = 2
(t ti ) N1,i (t ) (ti 2 t ) N1,i 1 (t )
N 2,i (t )
ti 1 ti ti 2 ti 1

i t 0 0.5 1 1.5 2
0 0 0 0 0 0
1 0 0 0 0 0
2 1 0.5 0 0 0
3 0 0.5 1 0.5 0
4 0 0 0 0.5 0
5 0 0 0 0 0
6 0 0 0 0 0

7
Untuk = 3
(t ti ) N 2,i (t ) (ti 3 t ) N 2,i 1 (t )
N3,i (t )
ti 2 ti ti 3 ti 1

i t 0 0.5 1 1.5 2
0 0 0 0 0 0
1 1 0.25 0 0 0
2 0 0.625 0.5 0.125 0
3 0 0.125 0.5 0.625 0
4 0 0 0 0.25 1
5 0 0 0 0 0

Untuk = 4
(t ti ) N3,i (t ) (ti 4 t ) N3,i 1 (t )
N 4,i (t )
ti 3 ti ti 4 ti 1

i t 0 0.5 1 1.5 2
0 1 0.125 0 0 0
1 0 0.59375 0.25 0.0625 0
2 0 0.25 0.25 0.34375 0
3 0 0.03125 0.25 0.59375 0
4 0 0 0 0 1

t=0
Q (t) = P0 = [ 2 1 ]
t = 0.5
Q (t) = 0.125 P0 + 0.59375 P1 + 0.25 P2 + 0.03125 P3 + 0 P4
= [ 4.375 2.71875 ]
t=1
Q (t) = 0.25 P1 + 0.5 P2 + 0.25 P3 = [ 6 2.75 ]

8
t = 1.5
Q (t) = 0.0625 P1 + 0.34375 P2 + 0.59375 P3 = [ 7.0625 2.40625 ]
t=2
Q (t) = P4 = [ 9 0]

Plotting kurva

2 4 6 8 9

Catatan tambahan:
Misal:
Untuk 6 vertices , n = 5
Cubic B-Spline , m = 4
tmax = 5 4 + 2 = 3
knot set :
[0 0 0 0 1 2 3 3 3 3]

9
Untuk 12 vertices, n = 11
Untuk degree 6, m = 7
tmax = 11 7 + 2 = 6
knot set:
[0 0 0 0 0 0 0 1 2 3 4 5 6 6 6 6 6 6 6]

10

You might also like