pembangkitan kurva dengan metode b-spline
DESCRIPTION
laporan ini akan menjelaskan PEMBANGKITAN KURVA DENGAN METODE B-SPLINETRANSCRIPT
GRAFIKA KOMPUTER
PEMBANGKITAN KURVA DENGAN METODE B-SPLINE
Oleh:
Putu Gede Surya Cipta Nugraha 1008605006
I Wayan Eddy Prayoga 1008605023
I Gede Adrian Agustana 1008605026
Galih Haryo Wicaksono 1008605055
Program Studi Teknik Informatika
Jurusan Ilmu Komputer
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Udayana
2013
1
DAFTAR ISI
DAFTAR ISI ....................................................................................................... 1
BAB I .................................................................................................................. 2
PENDAHULUAN ............................................................................................... 2
1.1. Latar Belakang....................................................................................... 2
1.2. Tujuan ................................................................................................... 3
1.3. Target Capaian....................................................................................... 3
1.4. Batasan .................................................................................................. 3
BAB II ................................................................................................................. 4
DASAR TEORI ................................................................................................... 4
2.1. Kurva ........................................................................................................ 4
2.1.1. Kurva Parametrik ............................................................................... 4
2.1.2. Titik Knot Kurva ................................................................................ 4
2.2. Kurva B-spline .......................................................................................... 5
2.2.1. Karakteristik Kurva B-spline .............................................................. 7
2.3. Algoritma de Boor ..................................................................................... 7
BAB III.............................................................................................................. 13
PEMBAHASAN ................................................................................................ 13
BAB IV ............................................................................................................. 16
PENUTUP ......................................................................................................... 16
4.1. Kesimpulan.......................................................................................... 16
DAFTAR PUSTAKA ........................................................................................ 17
BAB I
PENDAHULUAN
1.1. Latar Belakang
Grafika komputer adalah salah satu cabang disiplin ilmu informatika yang
mempelajari pembuatan gambar dengan menggunakan komputer. Salah satu
bidang grafika komputer yang sangat terkenal adalah Desain Grafis. Dalam
grafika komputer banyak melakukan proses berbentuk sintetis, materi
mengandung teknik-teknik menggambar, data masukan bersifat deskriptif,
keluaran hasil proses berbentuk gambar. Grafik komputer adalah ilmu yang sangat
cepat berkembang pada saat ini. Perkembangan ini didukung oleh munculnya
prosesor-proseor komputer yang cepat dan kartu grafik yang semakin canggih dan
hebat.
Salah satu metode dalam grafika computer adalah metode B-spline. Metode
ini merupakan salah satu metode pembangkitan kurva. Kurva B-spline merupakan
suatu pendekatan umum untuk merepresentasikan gabungan potongan-potongan
kurva polinomial, yang mengatasi kelemahan-kelemahan kurva Bézier. Dalam
menggunakan metode ini diperlukan sebuah degree, titik control dan knot.
Misalnya memiliki derajat n maka titik kontrolnya adalah n+1 dan 2n jumlah knot
yang nilainya tidak turun. Segmen kurva ini didefinisikan sepanjang interval [un-
1,un] (asumsi: knot pertama adalah u0). Tidak seperti vektor knot pada kurva
Bézier, vektor knot pada kurva B-spline bebas untuk pengaturan nilainya. Satu-
satunya syarat yang harus dipenuhi hanyalah nilai dari deretan knot tersebut tidak
turun.
Dalam laporan ini kami akan membuat sebuah program interaktif
menggunakan OpenGL yang berfungsi untuk membangkitkan kurva (Curve
Generator) menggunakan metode B-Spline. Dimana untuk pembangkitan kurva
minimal dengan 4 control point dan dengan derajat minimal d=3. Selain itu dalam
program ini terdapat fasilitas untuk menambah dan mengurangi nilai d (degree
bspline), fasilitas untuk menambah/mengurangi jumlah control point dengan
3
menggunakan event mouse click Akses fitur aplikasi direpresentasikan dengan
Menu dan SubMenu, kemampuan untuk melakukan transformasi (rotasi dan
translasi) dan kemampuan untuk menangani multiple curve
1.2. Tujuan
Dalam pembuatan program tugas besar ini tujuan yang kami harapkan adalah
1. Mengetahui algoritma pembangkitan kurva dengan metode B-spline.
2. Mampu membuat program ini sesuai dengan kriteria yang sudah diberikan
3. Program yang kami buat dapat mengimplementasikan pembangkitan kurva
BSpline dengan parameter-parameter yang telah dijelaskan sebelumnya
pada saat kuliah.
1.3. Target Capaian
Target yang dicapai dalam program ini adalah Pembangkitan kurva minimal
dengan 4 control point dan mampu menghandle untuk knot vector uniform dengan
minimal d=3 (d = degree/derajat B-Spline)
1.4. Batasan
Batasan-batasan dalam pembuatan program ini adallah
1. Jumlah dari control point yang didapat berdasarkan inputan dari user
2. Program ini tidak dapat menambah dan mengurangi titik kontrol point
yang digunakan dalam pembentukan kurva
BAB II
DASAR TEORI
2.1. Kurva
Kurva adalah garis dan ruas garis yang membentuk kurva – kurva
sederhana. Kurva dapat digambarkan dengan bermacam – macam bentuk,
bentuknya bisa teratur bisa juga tidak teratur. Kurva dapat direpresentasikan
sebagai kumpulan titik-titik persamaan berbentuk non-parametrik ataupun
parametrik.
2.1.1. Kurva Parametrik
Persamaan kurva pada bidang parametrik secara umum adalah :
x = f (t), y = g(t)
Dengan t adalah suatu parameter independent dalam suatu interval tertentu
([ t1,t2] ). Contoh :
1. Persamaan garis : dengan
2. Persamaan lingkaran kuadran I :
dengan
Representasi dengan menggunakan persamaan parametrik mengatasi masalah
yang dihadapi bentuk eksplisit maupun implisit. Karena itulah kurva parametrik
lebih umum digunakan.
2.1.2. Titik Knot Kurva
Dinamakan titik kontrol karena titik ini berkaitan dengan fungsi kurva.
Kita dapat memanipulasi bentuk kurva secara bebas hanya dengan memanipulasi
titik tersebut.
5
Perhatikan gambar di atas. Dengan tiga titik kontrol (x1,y1), (x2,y2), dan (x3,y3),
kita dapat membentuk satu segmen kurva polinomial kuadratik yang didefinisikan
sepanjang interval tertentu. Beberapa cara untuk mendefinisikan kurva tertentu
dengan menggunakan titik kontrol. Masing-masing dapat diklasifikasikan sebagai
kurva hasil interpolasi atau approksimasi.
Pada kasus interpolasi, kurva akan melewati semua titik kontrol yang
diberikan.
Sedangkan pada kasus approksimasi, kurva hanya perlu mendekati
sekumpulan titik kontrol yang diberikan.
Seberapa dekat antara kurva dan titik kontrol tergantung dari teknik
approksimasi yang digunakan. Kurva B-spline merupakan kurva hasil
approksimasi dari titik-titik kontrolnya.
2.2. Kurva B-spline
Kurva B-spline merupakan suatu pendekatan umum untuk merepresentasikan
gabungan potongan-potongan kurva polinomial, yang mengatasi kelemahan-
kelemahan kurva Bézier. Huruf B pada B-spline berarti basis. Jadi kurva B-spline
adalah fungsi basis yang didefinisikan sepanjang interval parameter knot. Dalam
menggunakan metode ini diperlukan sebuah degree, titik control dan knot.
Misalnya memiliki derajat n maka titik kontrolnya adalah n+1 dan 2n jumlah knot
yang nilainya tidak turun. Segmen kurva ini didefinisikan sepanjang interval [un-
1,un] (asumsi: knot pertama adalah u0). Tidak seperti vektor knot pada kurva
Bézier, vektor knot pada kurva B-spline bebas untuk pengaturan nilainya. Satu-
satunya syarat yang harus dipenuhi hanyalah nilai dari deretan knot tersebut tidak
turun.
Contoh dibawah ini adalah menggambar satu segmen kurva B-spline kubik, untuk
itu kita tentukan 4 buah titik kontrol (P0, P1,P2, P3) dan vektor knot, misalnya
[0,1,2,3,4,5].
Dapat dilihat dalam gambar diatas memiliki 4 buah titik control,dimana nilai-nilai
titik control tersebut adalah sebagai berikut :
1. Titik control 1 : (0,0)
2. Titik control 2 : (5,10)
3. Titik control 3 : (15,10)
4. Titik control 4 : (20,0)
Setelah menentukan titik kontrolnya maka langkah selanjutnya adalah mulai
memberi label blossom pada tiap-tiap titik kontrol seperti yang telah dilakukan
sebelumnya.
7
Pemberian label blossom pada titik kontrol kurva B-spline kubik sesuai dengan
vektor knot-nya ([0,1,2,3,4,5]). Untuk mendapatkan titik pada kurva B-spline, kita
menggunakan suatu algoritma yang dikenal dengan algoritma de Boor.
2.2.1. Karakteristik Kurva B-spline
Kurva B-spline memiliki beberapa karakteristik penting yang menarik untuk
diketahui. Karakteristiknya antara lain :
1. Karakteristik yang pertama adalah presisi linear. Maksudnya adalah jika
titik-titik kontrol berada pada satu garis lurus maka kurva yang terbentuk
juga berada pada garis tersebut.
2. Karakteristik yang kedua adalah mengenai properti convex hull. Kurva
yang dihasilkan akan berada dalam convex hull dari poligon kontrolnya.
3. Karakteristik ketiga adalah variation diminishing. Artinya adalah jumlah
perpotongan kurva dengan suatu sembarang garis lurus tidak akan melebihi
jumlah perpotongan garis tersebut dengan poligon kontrolnya.
4. Karakteristik terakhir yang sangat menarik adalah affine invariance.
Maksudnya adalah apabila kita ingin melakukan transformasi affine
terhadap kurva, kita cukup melakukan transformasi terhadap titik-titik
kontrolnya. Yang dikategorikan sebagai transformasi affine adalah translasi
(pergeseran), rotasi (pemutaran), refleksi (pencerminan), dan dilatasi
(pembesaran).
2.3. Algoritma de Boor
Algoritma de Boor merupakan bentuk umum dari algoritma de Casteljau.
Ini berarti dengan menggunakan algoritma de Boor, titik-titik kurva Bézier juga
dapat diperoleh. Tidak ada yang berbeda dengan algoritma de Casteljau dalam
mencari titik kontrol baru. Berikut ini adalah algoritma de Boor
1. Dari dua titik yang akan dicari titik kontrol barunya, ambil dua argumen
label blossom yang berbeda pada kedua labelnya.
2. Sedangkan untuk argumen lainnya yang sama, digunakan kembali untuk
label titik kontrol yang baru ditambah dengan satu argumen t, sebagai hasil
modifikasi antara argumen yang berbeda.
3. Kedua argumen yang berbeda (u3 dan u0) akan digunakan untuk melakukan
kombinasi affine dari kedua titik kontrol semula,
untuk titik pertama
dan
untuk titik yang kedua.
4. Ulangi langkah 1 sampai langkah 3 untuk mencari titik kontrol lainnya,
hingga mendapatkan titik pada kurva ( p(t,t,t) ).
Contoh menggambar kurva B-spline
Misalnya mempunyai derajat = 3 maka titik kontrolnya adalah 4, titik kontrolnya
ada pada gambar tersebut. Maka yang akan kita lakukan adalah mencari titik
kurva di suatu parameter t (nilai t berada pada interval [2,3], karena kurva
didefinisikan pada interval [un-1,un] ). Misalkan kita ingin mencari titik kurva di
parameter t = 2.4, maka perhitungan yang dilakukan adalah sebagai berikut.
Pencarian titik-titik kontrol iterasi pertama:
9
Setelah melakukan perhitungan diatas maka diidapat titik-titik kontrol dari iterasi
pertama algoritma de Boor pada parameter t = 2.4
Pencarian titik-titik kontrol iterasi kedua :
Setelah melakukan perhitungan diatas maka diidapat titik-titik kontrol dari iterasi
kedua algoritma de Boor pada parameter t = 2.4
11
Terakhir, pencarian titik kontrol yang merupakan titik kurva itu sendiri :
Titik kontrol yang merupakan titik kurva itu sendiri pada parameter t =2.4
Dengan cara yang sama, apabila kita mengevaluasi titik kurva pada nilai-nilai
parameter t = 2.0, 2.1, 2.2, … , 3.0, maka hasil yang diperoleh sebagai berikut.
Maka dari itu didapat titik-titik pada kurva B-spline pada parameter t=2.0, 2.1,
2.2,…,3.0 sebagai berikut :
Untuk memperhalus agar mendapatkan kurva yang baik maka kita dapat
memperkecil ukuran intervalnya. Maka gambarnya akan sebagai berikut :
13
BAB III
PEMBAHASAN
Program yang dibuat oleh kelompok kami adalah program untuk membuat
kurva B-Spline dengan menggunakan algoritma De Boor. Dimana yang
diinputkan adalah derajat, interval knot, dan koordinat titik kontrol yang menjadi
acuan dalam pembuatan kurva. Derajat tersebut digunakan untuk menentukan
jumlah titik kontrol, kemudian titik kontrol tersebut digunakan untuk menentukan
titik-titik pembentuk kurva.
Titik-titik kontrol tersebut diinputkan dalam algoritma De Boor, serta
derajat dan nilai knot pada interval. Kemudian setelah mendapatkan titik-titik
pembentuk kurva yang baru titik-titik tersebut diskalakan kembali untuk
mendapatkan tampilan kurva yang proporsional.
Dalam program ini pengimplementasiannya dalam bentuk rekursif untuk
mendapatkan perhitungan titik-titik yang sesuai dengan algoritma De Boor pada
penjelasan landasan teori sebelumnya.
1. Fungsi myInit()
void myInit()
{
glClearColor(0.0,0.0,0.0,0.0);
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-30.0,30.0,-30.0,30.0);
}
Fungsi MyInit merupakan fungsi untuk menginisialisasi penggambaran
kurva seperti warna, ukuran gambar, luas field, dan lainnya. Jadi dalam fungsi ini
adalah fungsi untuk mengatur tampilan kurva yang akan ditampilkan dilayar.
2. Fungsi DeBoor
float DeBoor(int k, int derajat, int i, float t, int* knot,
float* nilaititikkontrol)
{
if(k==0)
{
//printf("\nnilai x titik kontrol ke- %d : %f",(i-1)
,nilaititikkontrol[i-1]);
return nilaititikkontrol[i-1];
}
else
{
float alpha = (knot[i-2+derajat+1-k]-t)/(knot[i-
2+derajat+1-k]-knot[i-2]);
//printf("\nalpha : %f | k : %d | i : %d
",alpha,k,i-1);
float beta = (t-knot[i-2])/(knot[i-2+derajat+1-k]-
knot[i-2]);
//printf("\nbeta : %f | k : %d | i : %d",beta,k,i);
return (DeBoor(k-1, derajat, i-1, t, knot,
nilaititikkontrol)*alpha+DeBoor(k-1, derajat, i, t, knot,
nilaititikkontrol)*beta);
}
}
Fungsi ini adalah fungsi utama sekaligus algoritma pembentukan kurva B-
Spline. Fungsi ini menggunakan fungsi rekursif, hingga nilai k bernilai 0, yang
menggunakan prinsip tree pada penggambaran algorima sebelumnya. Variabel k
digunakan untuk menentukan indeks dari knot yang telah dibentuk sebelumnya.
Jika variabel k telah mencapai nilai 0 maka fungsi rekursif telah berakhir atau
indeksnya telah mencapat indeks paling bawah pada tree.
3. Fungsi MyDisplay
void mydisplay()
{
int i;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINE_STRIP);
15
glColor3f(1,0,0);
for(i=0 ; i<jumlahtitikinterval ; i++)
{
glVertex2d(nilaixtitikkurva[i],nilaiytitikkurva[i]);
}
glEnd();
glFlush();
glBegin(GL_LINE_STRIP);
for(i=0 ; i<jumlahtitikkontrol ; i++)
{
glVertex2d(nilaixtitikkontrol[i],nilaiytitikkontrol[i]);
}
glEnd();
glFlush();
}
Fungsi ini merupakan fungsi untuk mencetak titik control dan kurva yang sudah
diperoleh dari hasil algoritma de Boor. jadi setelah selesai pemrosesan maka akan
ditampilkan keseluruhan tampilan dari kurva tersebut.
BAB IV
PENUTUP
4.1. Kesimpulan
Untuk membuat sebuah kurva B-spline dapat digunakan dengan algoritma de
Boor dimana algoritma ini diimplementasikan dengan fungsi rekursif. Untuk
membangkit kurvanya kita hanya perlu menggunakan derajat, interval, dan titik
kontrol. Sehingga dari ketiga parameter tersebut akan diinputkan ke dalam
algoritma de boor untuk mendapatkan titik-titik yang pembentuk kurvanya.
Dalam program kami ini, kami hanya mampu menyelesaikan persyaratan
Pembangkitan kurva minimal dengan 4 control point dan mampu menghandle
untuk knot vector uniform dengan minimal d=3 (d = degree/derajat B-Spline)
17
DAFTAR PUSTAKA
1. Angel, Edward & Shreiner, Dave (2012). Interactive Computer Graphics, A
Top-Down Approach with Shader-Based OpenGL 6th
Edition.
2. B-Splines
http://www.clear.rice.edu/comp360/lectures/B-Splines.pdf. Diakses pada
tanggal 26-06-2013 pukul 16.54.WITA