PERMUKAAN B-SPLINE TENSOR PRODUCT
7.3 Kelas Kelas GUI (Graphical User Interface)
Sebelum diuraikan kelas perkelas, terlebih dahulu diperkenalkan tampilan editor kurva berikut.
Gambar 7.7 Tampilan editor kurva B-spline.
1. BSplineMain
Inilah kelas main yang pertama kali dijalankan. Kelas ini menampilkan frame yang dibentuk oleh kelas BSplineFrame.
2. BSplineFrame
Kelas ini menata kelas-kelas panel seperti ButtonPanel, MenuPanel, AdditionPanel, dan BSplineCanvas. Frame ini menyediakan menu-menu utama, yakni:
• Menu File
Menu ini memiliki sub-sub menu standar seperti new, open, save, save as, dan exit.
• Menu Edit
Sub menu ini hanya menangani masalah perubahan nilai default interval antar knot dan proses penambahan knot apabila terjadi penyisipan titik kontrol nantinya, misalnya untuk setiap penyisipan titik kontrol dilakukan penambahan knot pada akhir vektor knot.
• Menu View
Menu ini menyediakan sub-sub menu pilihan pengguna untuk menentukan perlu tidaknya penggambaran label blossom, poligon kontrol, dan titik kontrol suatu kurva. Kemudian menu ini juga memungkinkan pengguna menentukan warna background dan foreground untuk canvas. Pengguna juga dapat memilih apakah kurva yang digambar nantinya menerapkan proses antialiasing atau tidak, lalu apakah pewarnaan gradien akan disertai animasi penggerakan atau tidak.
Terakhir, disediakan sub menu yang menentukan kualitas kurva. Ada 3 kualitas kurva yang disediakan yakni: poor, standard, dan high. Ketiga kualitas ini hanya dibedakan berdasarkan interval nilai parameter yang dipilih dalam menggambar kurva. Contohnya, pada kualitas poor, interval nilai parameter yang dipilih relatif besar sehingga nanti kurva yang tergambar masih berupa titik-titik dan tidak tersambung satu sama lain. Ini berguna untuk mengurangi beban program apabila kurva sangat kompleks.
3. ButtonPanel
Kelas ini merupakan panel yang menyediakan button-button pilihan yang akan digunakan dalam memanipulasi dan memodifikasi kurva B-spline. Button-button yang disediakan program antara lain:
• add new spline
Berfungsi untuk membuat suatu kurva B-spline yang baru.
• delete spline
Berfungsi untuk menghapus suatu kurva B-spline.
• move spline
Berfungsi untuk menggeser suatu kurva B-spline.
• rotate spline
Berfungsi untuk memutar suatu kurva B-spline. Batas putaran adalah -180º sampai dengan 180º.
• flip horizontal
Berfungsi untuk menjadikan posisi suatu kurva B-spline terbalik secara horisontal.
• flip vertical
Berfungsi untuk menjadikan posisi suatu kurva B-spline terbalik secara vertikal.
• resize spline
Berfungsi untuk melakukan pembesaran/pengecilan suatu kurva B-spline. Minimal pengecilan adalah ½ kali semual dan maksimal pembesaran adalah 2 kali semula.
• duplicate spline
Berfungsi untuk membuat kurva B-spline baru yang identik dengan yang sudah ada.
• close spline
Berfungsi untuk menutup kurva B-spline seragam.
• select spline
Berfungsi untuk memilih atau mengaktifkan suatu kurva B-spline.
• change spline’s color
Berfungsi untuk mengubah warna suatu kurva B-spline.
• raise degree
Berfungsi untuk menaikkan derajat suatu kurva B-spline dengan mempertahankan bentuk tetap sama dengan semula.
• add control point
Berfungsi untuk menambahkan titik kontrol baru untuk kurva B-spline yang aktif.
• delete control point
Berfungsi untuk menghapus suatu titik kontrol pada kurva B-spline aktif.
• move control point
Berfungsi untuk menggeser suatu titik kontrol kurva B-spline aktif.
• insert control point
Berfungsi untuk melakukan penyisipan titik kontrol di antara dua titik kontrol lainnya pada suatu kurva B-spline aktif.
• insert a knot
Berfungsi untuk melakukan proses penyisipan knot pada suatu kurva B-spline aktif. Nilai knot sisipan adalah nilai tengah dari dua knot yang akan disisipi.
• multiply a knot
Berfungsi untuk meningkatkan multiplisitas suatu knot pada kurva B-spline aktif.
• arrange a knot
Berfungsi untuk mengatur nilai suatu knot. Pengubahan nilai knot akan mempengaruhi bentuk kurva B-spline.
• arrange knots
Berfungsi untuk mengatur knot secara keseluruhan. Jadi pada kasus ini, semua nilai knot akan ditampilkan setiap sepuluh buah. Perhatikan contoh gambar 7.7.
4. MenuPanel
Kelas ini merupakan panel yang menyediakan menu-menu yang berisikan fitur-fitur tambahan yang disediakan. Menu-menu yang disediakan antara lain:
• New File
Berfungsi untuk membuat berkas yang baru. Fungsi ini sama dengan fungsi sub menu dari Menu File.
• Open File
Berfungsi untuk membuka berkas dengan format lim/salim. Fungsi ini sama dengan fungsi sub menu dari Menu File.
• Save File
Berfungsi untuk menyimpan berkas dalam format lim. Fungsi ini sama dengan fungsi sub menu dari Menu File.
• Save File As…
Berfungsi untuk menyimpan berkas ke dalam format jpg atau gif. Fungsi ini sama dengan fungsi sub menu dari Menu File.
• undo
Berfungsi untuk mengembalikan kondisi kurva ke tahap sebelumnya.
Fungsi ini memungkinkan pengguna kembali ke 10 tahap sebelumnya.
• redo
Berfungsi untuk mengembalikan kondisi kurva sebelum dilakukan proses undo.
• clear canvas
Berfungsi untuk membersihkan layar atau menghapus semua kurva B-spline yang ada.
• preview
Berfungsi untuk melihat hasil kurva secara keseluruhan sebelum disimpan ke berkas.
• fill
Berfungsi untuk memberi warna dalam kurva.
• gradient fill
Berfungsi untuk memberi warna selang-seling dalam kurva.
• change degree
Berfungsi untuk menetapkan derajat kurva yang diinginkan pengguna.
Maksimal derajat adalah 11.
• change curve segment
Berfungsi untuk mengubah segmen kurva ke dalam bentuk bold (tebal) atau plain (tipis).
5. AdditionPanel
Kelas ini merupakan panel tambahan yang digunakan untuk menangani masalah-masalah yang belum ter-handle pada panel-panel sebelumnya.
Misalnya, pada saat pengguna ingin melakukan rotasi pada suatu kurva maka panel ini mengaktifkan slider yang dapat digeser-geser. Penggeseran slider ini akan mengakibatkan rotasi pada kurva bersangkutan. Atau apabila pengguna ingin melakukan pembesaran terhadap suatu kurva, maka slider ini dapat digeser-geser hingga pengguna mendapatkan pembesaran yang diinginkannya.
Panel ini juga memberikan informasi mengenai lokasi koordinat x dan y pada layar. Dalam panel ini juga terdapat dua button khusus yang diperlukan untuk merancang permukaan B-spline tensor product.
• button z-direction
Berfungsi untuk menentukan kurva B-spline yang akan dijadikan kurva untuk arah v (arah sumbu z negatif).
• button construct surface
Berfungsi untuk menampilkan permukaan B-spline tensor product dari kurva yang sedang aktif (sebagai kurva arah u atau sumbu x positif) dan kurva arah v yang telah ditentukan sebelumnya.
6. BSplineCanvas
Objek ini merupakan panel canvas tempat tergambarnya kurva-kurva B-spline.
Objek ini menyerahkan Graphics2D pada objek BSpline. Objek BSpline akan menghitung titik-titik kurva berdasarkan titik-titik kontrol dan vektor knot-nya, setelah itu langsung plot hasilnya. Semua bentuk manipulasi dan modifikasi titik-titik kontrol dan kurva B-spline dilakukan di sini.
7. KnotsFrame
Kelas ini merupakan frame tersendiri khusus untuk menangani masalah vektor knot suatu kurva B-spline. Semua knot akan ditampilkan setiap sepuluh buah.
Pada frame ini, pengguna dapat menghapus knot, meningkatkan multiplisitas knot, dan melakukan proses penyisipan knot.
Kelas-kelas tersebut digunakan dalam editor untuk kurva B-spline. Berikut ini akan diuraikan kelas-kelas tampilan pendukung editor untuk permukaan B-spline.
Seperti yang sudah diketahui bahwa permukaan B-spline tensor product merupakan kurva dari kurva B-spline, karena itu untuk membangun suatu permukaan, terlebih dahulu pengguna harus merancang satu kurva B-spline untuk arah u dan satu kurva untuk arah v. Setelah itu program akan secara otomatis menampilkan permukaan B-spline hasil tensor product. Dari dua kumpulan titik kontrol kurva, program akan membentuk jaring-jaring titik kontrol untuk permukaan dengan cara menggeser titik-titik kontrol untuk kurva u mengikuti arah titik-titik kontrol untuk arah v.
Jadi untuk menggambar suatu permukaan B-spline, pengguna tetap harus menggunakan editor untuk kurva spline. Setelah merancang dua buah kurva B-spline, baru kemudian program editor dapat menampilkan permukaan B-spline tensor product.
Berikut ini adalah tampilan program editor untuk permukaan B-spline.
Gambar 7.8 Tampilan editor untuk permukaan B-spline. Gambar atas merupakan BSurfaceFrame yang menampilkan permukaan B-spline. Segala manipulasi dan modifikasi dilakukan pada MeshController yang
disajikan pada gambar bawah. Menu-menu yang disediakan pada MeshController akan diuraikan pada halaman berikutnya.
1. BSurfaceFrame
Kelas ini hanya berfungsi untuk menampilkan permukaan B-spline yang dibentuk dan digambar pada canvas3D. Pengguna dapat memutar dan menggeser sudut pandang terhadap permukaan dengan drag kiri dan drag kanan mouse. Seluruh hal yang berhubungan dengan modifikasi permukaan B-spline dikendalikan oleh MeshController.
2. MeshController
Kelas ini memiliki menu-menu utama antara lain:
• Menu File
Sub menu dari menu ini hanya menu save dan exit. Save hanya dapat menyimpan berkas dengan format salim.
• Menu View
Pengguna dapat mengganti latar belakang pada canvas3D dengan warna-warna yang disediakan dan panorama-panorama seperti awan, langit, dan alam. Dari menu ini, pengguna juga dapat memilih apakah jaring-jaring titik kontrol perlu ditampilkan atau tidak.
• Menu Appearance
Pengguna dapat memilih appearance yang akan dikenakan pada permukaan B-spline. Appearance- appearance yang disediakan program antara lain:
- Unlit Wire Frame
Appearance ini menampilkan permukaan B-spline secara wire frame (berupa kerangka). Unlit memiliki pengertian bahwa pencahayaan tidak berdampak terhadap permukaan ini.
- Unlit Points
Appearance ini menampilkan permukaan B-spline secara titik-titik.
- Lit Solid
Appearance ini menampilkan permukaan B-spline secara utuh (shading). Lit memiliki pengertian bahwa pencahayaan memiliki dampak terhadap permukaan ini.
- Texture Mapped(stone)
Appearance ini menampilkan permukaan B-spline yang telah dipetakan dengan suatu tekstur batuan coklat (texture mapping).
- Texture Mapped(earth)
Appearance ini menampilkan permukaan B-spline yang telah dipetakan dengan suatu tekstur bumi (texture mapping).
- Transparent
Appearance ini menampilkan permukaan B-spline yang transparan.
- Lit Solid, No Specular
Appearance ini menampilkan permukaan B-spline yang utuh namun tidak ada warna specular. Warna specular memungkinkan suatu bagian permukaan menjadi silau karena cahaya yang dipantulkannya.
- Specular Only
Appearance ini menampilkan permukaan B-spline namun hanya warna specular yang tampak.
- Unlit Solid
Appearance ini menampilkan permukaan B-spline utuh dan tidak memiliki dampak atas pencahayaan.
- Default
Appearance default adalah appearance yang menampilkan permukaan B-spline secara utuh, memiliki dampak atas pencahayaan, dan memiliki warna specular.
• Menu Light
Program ini menggunakan 3 macam pencahayaan untuk melengkapi fitur grafika komputer. Pencahayaan yang digunakan adalah DirectionalLight, PointLight, dan AmbientLight.
- DirectionalLight
Sumber cahaya ini dapat dianggap sebagai sumber cahaya yang besar dan jauh, menyoroti ke arah tertentu. Jadi pada proses pencahayaan ini, pengguna tinggal menentukan arah mana yang
- PointLight
Sumber cahaya ini dapat dianggap sebagai lampu bohlam yang dapat digeser-geser keberadaannya. Program ini menyediakan 3 buah pointlight, yakni warna merah, hijau, dan biru.
- AmbientLight
Pencahayaan berasal dari pemantulan cahaya. Dengan demikian pencahayaan ini memperhitungkan warna bayangan yang terjadi.
Ini menjadikan permukaan tampak lebih nyata dengan keadaan sesungguhnya.
Itulah menu-menu utama yang disediakan program editor untuk permukaan B-spline tensor product. Kelas ini memiliki objek dari kelas MyPanel yang menampilkan semua titik kontrol pada jaring-jaring titik kontrol dilihat dari atas atau dari depan. Modifikasi titik kontrol permukaan B-spline dilakukan di sini.
Selain itu, kelas ini juga memiliki panel yang memberikan informasi sistem koordinat dan baris berserta kolom titik kontrol pada jaring-jaring titik kontrol yang sedang aktif. Panel ini memiliki dua button, yakni:
• xy
Berfungsi untuk mengubah sudut pandang jaring-jaring titik kontrol sehingga pengguna melihat seluruh titik kontrol hanya pada koordinat x-y dan mengabaikan koordinat z-nx-ya (seakan-akan melihat jaring-jaring titik kontrol dari depan). Menggeser-geser titik kontrol dari sudut pandang ini berarti hanya dapat menggeser titik kontrol ke kiri kanan atau atas bawah.
• xz
Berfungsi untuk mengubah sudut pandang jaring-jaring titik kontrol sehingga pengguna melihat seluruh titik kontrol hanya pada koordinat x-z dan mengabaikan koordinat y-nya (seakan-akan melihat jaring-jaring titik kontrol dari atas). Menggeser-geser titik kontrol dari sudut pandang ini berarti hanya dapat menggeser titik kontrol ke kiri kanan atau depan belakang.
Selain panel di atas, kelas ini juga memiliki panel yang memberikan informasi mengenai vektor knot arah u dan v permukaan B-spline. Pengubahan nilai knot dapat dilakukan pada panel ini.
3. MyPanel
Kelas ini merupakan panel untuk memodifikasi titik kontrol permukaan B-spline. Semua titik kontrol pada jaring-jaring titik kontrol ditampilkan di sini beserta dengan poligon kontrolnya. Titik-titik kontrol dapat digeser dengan bebas.
Demikianlah kelas-kelas penting dalam program editor untuk kurva dan permukaan B-spline yang dibangun dengan bahasa pemrograman Java berbasiskan Swing dan Java-3D versi OpenGL, sebagai hasil implementasi Tugas Akhir dengan topik kurva dan permukaan B-spline tensor product.
Adapun packages dari Java-3D yang digunakan untuk melengkapi fitur-fitur pada editor permukaan B-spline Tensor Product adalah sebagai berikut:
- javax.media.j3d
digunakan untuk mengatur pencahayaan, penampakan, attribut-attribut objek 3D.
- javax.vecmath
digunakan untuk mendapatkan nilai-nilai dalam bentuk tuple.
- com.sun.j3d.utils.behaviors.mouse
digunakan untuk rotasi dan translasi objek pada canvas 3D.
- com.sun.j3d.utils.geometry
digunakan untuk menggambar objek 3D.
- com.sun.j3d.image
digunakan saat mengambil tekstur dari gambar.
Dan gambar berikut ini adalah diagram kelas-kelas utama secara keseluruhan:
Gambar 7.9 Diagram kelas-kelas utama untuk program editor kurva dan permukaan B-spline.