Anda di halaman 1dari 19

GRAFIKA KOMPUTER PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

Oleh:

Putu Gede Surya Cipta Nugraha I Wayan Eddy Prayoga I Gede Adrian Agustana Galih Haryo Wicaksono

1008605006 1008605023 1008605026 1008605055

Program Studi Teknik Informatika Jurusan Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Udayana 2013

DAFTAR ISI
DAFTAR ISI ....................................................................................................... 1 BAB I .................................................................................................................. 2 PENDAHULUAN ............................................................................................... 2 1.1. 1.2. 1.3. 1.4. Latar Belakang....................................................................................... 2 Tujuan ................................................................................................... 3 Target Capaian....................................................................................... 3 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 Bzier. 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 [u n1

,un] (asumsi: knot pertama adalah u0). Tidak seperti vektor knot pada kurva

Bzier, vektor knot pada kurva B-spline bebas untuk pengaturan nilainya. Satusatunya 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

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 : 2. Persamaan lingkaran kuadran I : dengan 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.

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 kelemahankelemahan kurva Bzier. 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 [u n1

,un] (asumsi: knot pertama adalah u0). Tidak seperti vektor knot pada kurva

Bzier, vektor knot pada kurva B-spline bebas untuk pengaturan nilainya. Satusatunya syarat yang harus dipenuhi hanyalah nilai dari deretan knot tersebut tidak turun. 5

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.

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 Bzier 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, dan untuk titik yang kedua. untuk titik pertama

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:

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

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 :

11

Untuk memperhalus agar mendapatkan kurva yang baik maka kita dapat memperkecil ukuran intervalnya. Maka gambarnya akan sebagai berikut :

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.

13

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[i2+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 BSpline. 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);

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.

15

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)

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. tanggal 26-06-2013 pukul 16.54.WITA Diakses pada

17