• Tidak ada hasil yang ditemukan

Kelas-Kelas Utama

Dalam dokumen BAB 2 REPRESENTASI KURVA (Halaman 67-77)

PERMUKAAN B-SPLINE TENSOR PRODUCT

7.1 Kelas-Kelas Utama

Karena Java merupakan bahasa pemrograman yang berorientasikan objek, maka dalam pengkodeannya dibangun kelas-kelas yang dapat merepresentasikan objek yang diperlukan. Berikut ini adalah kelas-kelas utama beserta atribut pentingnya.

1. ControlPoint

Objek dari kelas ini merepresentasikan titik kontrol kurva B-spline. Atribut dari objek ini adalah x dan y. Nilai-nilai ini merupakan lokasi titik kontrol pada layar.

Data member:

Nama Tipe/Kelas Keterangan

x int Koordinat x pada layar

y int Koordinat y pada layar

Method:

Nama Argumen Keterangan

changeCP int newX, int newY Melakukan perubahan

nilai koordinat x dan y

2. BSpline

Objek ini merepresentasikan kurva B-spline. Kurva B-spline tentunya memiliki derajat, vektor titik kontrol, dan vektor knot. Dalam implementasi pada program, kumpulan titik kontrol dan knot akan menggunakan struktur data ArrayList. Dengan demikian, manipulasi data titik kontrol dan knot dapat dengan mudah dilakukan.

Data member:

Nama Tipe/Kelas Keterangan

d int Derajat kurva B-spline

controlPoints ArrayList

ControlPoint

Vektor titik-titik kontrol kurva B-spline

t ArrayList Double Vektor knot yang

digunakan

Method:

Nama Argumen Keterangan

setDegree int newDegree Mengubah derajat kurva

addPoint int x, int y Menambah titik kontrol

insertPoint int index, int x, int y

Menyisipkan titik kontrol

deletePoint int index Menghapus titik kontrol

changeCP int index,

int newX, int newY

Mengubah nilai suatu titik kontrol

drawCurve Graphics2D g Menghitung sekaligus menggambar titik kurva dengan menggunakan algoritma de Boor

insertKnot int index,

double value

Melakukan proses penyisipan knot

deleteKnot int index Menghapus nilai knot

multiplyKnot int index Menggandakan nilai knot

changeKnot int index,

double newValue

Mengubah nilai suatu knot

changeKnotsSequence double start, double newInterval

Memodifikasi nilai default knot seragam

raiseDegree void Melakukan proses

peningkatan derajat

closeSpline void Membentuk kurva closed

Implementasi:

Method Algoritma

drawCurve (Graphics2D g)

vektor titik kontrol : V vektor knot : u derajat : d

// jumlah_V adalah banyaknya titik kontrol for(n = 0; n < jumlah_V – d; n++){

(int index, double value)

vektor titik kontrol lama : V vektor titik kontrol baru : W vektor knot : u

derajat : d

1. u.insert(index, value);

2. for(i = 0; i < jumlah_V + 1; i++){

3. BSplines

Objek ini mempunyai struktur data ArrayList yang berisi kumpulan dari objek-objek bspline. Ini dimaksudkan supaya program editor dapat memanipulasi multi kurva B-spline.

Data member:

Nama Tipe/Kelas Keterangan

bsplines ArrayList Kumpulan kurva-kurva

B-spline

bspline BSpline Kurva B-spline yang

sedang aktif (dipilih) raiseDegree() vektor titik kontrol mula-mula : V

vektor knot mula-mula : u derajat : d

kumpulan titik kontrol baru : Z vektor knot baru : v

1. Simpan V pada Hashtable dengan label blossom sebagai kuncinya.

2. Lakukan penyisipan knot sehingga multiplisitas tiap knot bertambah satu. Titik-titik kontrol hasil penyisipan knot tersebut dinamakan Wdan vektor knot baru sekarang adalah v.

3. Simpan kembali W pada Hashtable dengan label blossom sebagai kuncinya.

4. for(j = 0; j< jumlah_v – d; j++){

label blossom yang telah menjadi kunci untuk mendapatkan titik kontrol pada Hashtable.

Method:

Nama Argumen Keterangan

addSpline BSpline spline Menambah kurva

B-spline

duplicateSpline BSpline spline Menambah kurva B-spline yang identik sama dengan spline

removeSpline void Menghapus kurva

B-spline yang sedang aktif

clone Object bsplines Membuat duplikasi dari

objek ini

4. Transformasi2D

Kelas ini menyediakan fungsi-fungsi untuk melakukan transformasi affine pada kurva B-spline. Dengan fungsi dari kelas ini, suatu kurva B-spline dapat diputar, digeser, diperbesar atau diperkecil, direfleksikan horizontal maupun vertikal. Transformasi affine hanya perlu dilakukan pada titik-titik kontrolnya saja karena kurva B-spline memiliki karakteristik affine invariance.

Data member:

Nama Tipe/Kelas Keterangan

bspline BSpline Kurva B-spline yang

akan dikenakan transformasi

Method:

Nama Argumen Keterangan

moveTo int newX,

int newY

Melakukan proses translasi ke titik baru

rotate double angle,

int centerX, int centerY

Melakukan proses rotasi sebesar angle dari pusat

scale int centerX,

int centerY, double m

Melakukan proses dilatasi sebesar m

reflectX void Melakukan flip

horizontal

reflectY void Melakukan flip vertikal

5. BSplineSurface

Objek ini merepresentasikan permukaan B-spline tensor product. Pertama kali objek ini dibentuk dari dua kurva B-spline. Masing-masing kurva memiliki arah sumbu yang saling tegak lurus. Jadi untuk membentuk satu permukaan B-spline tensor product, terlebih dahulu kita tentukan satu kurva untuk arah u dan satu kurva lagi untuk arah v. Dalam program editor ini, kurva untuk arah v hanya diperbolehkan berupa garis lurus. Ini dimaksudkan untuk mempermudah perancangan jaring-jaring titik kontrol dari kedua kurva yang akan membentuk permukaan. Pengguna harus terlebih dahulu menggambar satu kurva arah u.

Kurva inilah yang nantinya menjadi permukaan B-spline karena akan digeser mengikuti arah kurva v. Setelah pengguna menentukan kurva arah u dan arah v, jaring titik kontrol akan secara otomatis terbentuk. Pembentukan jaring-jaring titik kontrol secara otomatis memudahkan pengguna program editor dalam merancang permukaan B-spline. Setelah permukaan B-spline ditampilkan, pengguna dapat menggeser-geser titik kontrol sebebas mungkin hingga mendapatkan bentuk yang diinginkan. Perhatikan contoh berikut.

Gambar 7.1 Kurva B-spline yang akan membentuk permukaan B-spline tensor product.

Gambar 7.2 Permukaan B-spline tensor product yang dibentuk dari kurva B-spline pada gambar 7.1.

Jaring-jaring titik kontrol untuk permukaan B-spline didapat dari penggeseran titik-titik kontrol untuk kurva arah u mengikuti titik-titik kontrol untuk kurva arah v.

Data member:

Nama Tipe/Kelas Keterangan

d1 int Derajat kurva B-spline

untuk arah u

d2 int Derajat kurva B-spline

untuk arah v

u ArrayList Double Vektor knot untuk kurva

B-spline arah u

v ArrayList Double Vektor knot untuk kurva

B-spline arah v

meshControlPoints Vector3f[][] Titik-titik kontrol

permukaan B-spline

Method:

Nama Argumen Keterangan

findSurfacePoints void Mencari titik-titik

permukaan dengan menerapkan dua kali algoritma de Boor

editKnot int direction,

int index,

double newValue

Mengubah suatu nilai knot pada vektor knot

editMeshControlPoints int row, int col, float newX, float newY, float newZ

Mengubah posisi koordinat suatu titik kontrol

Implementasi:

Method Algoritma

findSurfacePoints() jaring-jaring titik kontrol : V vektor knot kurva u: u vektor knot kurva v: v derajat kurva u: du derajat kurva v: dv

kumpulan titik-titik permukaan B-spline : W

//jumlah_kolom_V adalah banyak jumlah kolom jaring-jaring //titik kontrol

while(tv<vm+dv){

Dalam dokumen BAB 2 REPRESENTASI KURVA (Halaman 67-77)

Dokumen terkait