PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

19
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

description

laporan ini akan menjelaskan PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

Transcript of PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

Page 1: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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

Page 2: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE
Page 3: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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

Page 4: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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

Page 5: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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

Page 6: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 7: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 8: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 9: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 10: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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:

Page 11: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

9

Setelah melakukan perhitungan diatas maka diidapat titik-titik kontrol dari iterasi

pertama algoritma de Boor pada parameter t = 2.4

Page 12: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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

Page 13: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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 :

Page 14: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

Untuk memperhalus agar mendapatkan kurva yang baik maka kita dapat

memperkecil ukuran intervalnya. Maka gambarnya akan sebagai berikut :

Page 15: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 16: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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);

Page 17: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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.

Page 18: PEMBANGKITAN KURVA DENGAN METODE B-SPLINE

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)

Page 19: PEMBANGKITAN KURVA DENGAN METODE 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