Fenomena si Kura-Kura XL Programming

Author: Ditdit Nugeraha Utama
Faculty of Mathematics and Informatics, Göttingen University
@Göttingen - Germany, November 9, 2012

Bismillah...
Abstract
Turtle geometry is one method uses the biological turtle concept as a virtual device to draw or construct the model of design in two or three dimension space. By using three sides of turtle: head, up and left, the programmer can imagine to draw and construct 2D or 3D model easily. The difference of constructing point of view, make the concept can be understood hardly. To make it easier, the new concept of method named the ant on wall algorithm proposed. This article will explain the basic reason of proposed method called TAWA in short.
Keywords: turtle geometry, two dimension, three dimension, the ant on wall algorithm

Penjelasan Makalah
Binatang kura-kura telah mengilhami terlahirnya algoritma dasar pemrograman XL (XL Programming), yang merupakan sebuah bahasa pemrograman tingkat lanjut dari L-Systems; sebuah bahasa pemrograman yang terlandaskan oleh tiga jenis paradigma pemrograman: imperatif, berorientasi objek dan berbasis aturan. Kura-kura - secara biologi - dijadikan ilham ide dasar pemrograman, karena pergerakannya pada tanah memungkin meninggalkan jejak berupa objek gambar atau objek garis lurus; dimana selanjutnya dipakai sebagai dasar pengembangan model terstruktur 2D atau 3D. Hanya saja implementasi ini, pada GroIMP platform (Growth Grammar-Related Interactive Modeling Platform, sebuah platform untuk pengembangan model 2D atau 3D), menjadi - agak sedikit - sulit dipahami; karena perbedaan sudut lihat. Perbedaan ini sangatlah penting untuk mampu menafsirkan apa yang akan dibuat dalam waktu yang singkat dengan sangat mudah; bukan mempersulit atau malah mensalahtafsirkannya. Jangan jadi seperti - maaf - tiga orang buta yg mencoba untuk memahami gajah, yang akhirnya membuat putusan atas simpulan yang tidak tepat; karena kesalahan sudut lihat tadi. Permasalahan ini yang ingin coba aku angkat ke permukaan; bahwa salah sudut pandang yang sederhana, akan mengakibatkan sulitnya menerapkan konsep tersebut pada saat proses programming.

Selain menjadi konsep dasar penggambaran pemodelan 2 dan 3 dimensi, konsep turtle pun dikembangkan sedemikian rupa, sehingga dengan menggunakan konsep ini, bahasa pemrograman XL mampu untuk melakukan penyimpanan informasi, baik dalam bentuk grafik dan non-grafik; dan juga konsep ini memungkinkan untuk pemetaan kembali arah berdasarkan informasi statusnya, seperti besarnya dimensi, warna, panjang bidang dan properti-properti lainnya dalam rangka menggambarkan sebuah objek di dalam dimensi ruang (Kurth, 2010). Namun, pada artikel ini, konsep turtle hanya atas penggambaran ruang saja yang ingin aku kritisi; dan bermaksud untuk mem-propose metode baru yang sedang kami, bersama tim proyek disini, uji kelayakannya. Pengajuan metode ini pun tidak terlepas dari pengalamanku selama 5 tahun bermain-main dengan algoritma semut.

Ok, aku mulai dengan penjelasan singkat mengenai metode geometri kura-kura. Metode geometri kura-kura, atau dalam bahasa - sedikit - keren disebut dengan turtle geometry method, sebenarnya metode yang sangat mudah untuk dipahami dan dikaji. Bayangkan, seekor kura-kura yang berjalan di permukaan tanah; secara alamiah, akan memiliki 3 dimensi arah yang dapat dilihat - ketiga arah inilah yang selanjutnya digunakan sebagai dasar sudut pandang dalam membuat objek gambar pada pemrograman XL atau GroIMP software - yaitu: depan (head), menunjukkan arah kura-kura berjalan dan dijadikan pijakan dasar memulai menciptakan arah objek gambar pada dimensi ruang; arah atas (up), merupakan arah vertikal dari batok kura-kura menuju atas; dan arah kiri kura-kura (left), merupakan arah kiri dari badan kura-kura (penjelasan ke tiga arah ini dapat dilihat pada Gambar 1). Sebenarnya jumlah dimensi arah gerak kura-kura tersebut - secara alami juga - adalah sebanyak 6 dimensi arah, namun arah sebaliknya - belakang, bawah dan atas - dianalogikan sebagai nilai kebalikannya (nilai negatifnya).

Gambar 1. Dimensi Arah dan Arah Rotasi pada Turtle Geometry (Kurth, 2010)
Garis lurus dari ketiga dimensi arah tersebut, akhirnya digunakan sebagai sumbu atau poros untuk melakukan rotasi gerakan penggambaran; dimana sumbu tersebut dijadikan sebagai patokan berapa derajat sudut yang akan dibentuk untuk memulai menggambarkan sebuah objek. Rotasi disimbolkan dengan huruf R, dengan ditambah H untuk Head sebagai porosnya; U jika Up digunakan sebagai porosnya dan L jika sisi Left digunakan sebagai porosnya (perhatikan Gambar 1). Misalkan, jika ingin memutar sebesar 45° dengan Up sebagai porosnya, maka perintah penggambaran objek garis (F(x), dengan x adalah nilai besaran pixel, seberapa panjang objek garis itu akan dibuat), maka perintah yang berlaku adalah RU(45) F(2); artinnya dari titik ordinat (0, 0, 0), akan digambar objek garis sepanjang 2 pixel - satuan panjang - dengan sudut sebesar 45° dengan sumbu rotasi Up. Sudut sebesar 45° yang di-code-kan dengan perintah RU(45), positif, berarti ada perintah merotasi atau menggeser sebesar sudut 45° searah jarum jam dengan sumbu rotasi adalah Up. Pada pemrograman XL atau GroIMP software, perintah RU(45) F(2) akan menghasilkan gambar seperti pada Gambar 2.

Gambar 2. Contoh Hasil Tampilan pada GroIMP (untuk RU(45) F(2))
Permasalahan akan terasa, karena pergerakan awal dari sebuah objek garis - atau apa pun - pada area gambar - layar komputer - yang biasa kita hadapi, semua arah gerakannya menuju atas (perhatikan sekali lagi Gambar 2). Untuk contoh Gambar 2, berarti - anda bisa bayangkan - analoginya adalah bahwa kura-kura menempel pada dinding (bergerak secara vertikal ke arah atas), lalu dirotasi / digeser sebesar 45° atas poros UP-nya (berarti miring 45° pada dinding) - ingat pada poros UP-nya - dan diperintahkan begerak sepanjang 2 satuan panjang (untuk ilustrasi posisi awal gerakan, anda bisa praktekkan dengan menempelkan telapak tangan kanan anda ke dinding, dengan arah jari menuju arah atas / vertikal dan menggesernya - searah jarum jam - sebanyak 45°, kurang lebih di posisi pukul 1.30). Karena untuk menggambarkan gambar seperti pada Gambar 2, rotasi menggeser sudut 45°, bukanlah dilakukan pada sumbu Head sebagai porosnya dengan perintah RH (bayangkan pula bahwa yang dimaksud dengan head adalah ujung jari-jari tangan anda); karena jika perintah RH(45) F(2) yang dieksekusi, gambar akan nampak seperti pada Gambar 3; dengan sudut lihat yang sama, akan dihasilkan gambar objek garis yang berbeda; karena perputaran rotasi sudut pada sumbu Head (RH), tidak akan merubah arah dalam membuat objek gambar (sama dengan memiringkan telapak tangan anda dari dinding, bukan menggesernya sebesar 45° searah jarum jam); analoginya hanyalah merubah alas jalan si kura-kura, bukan arah gerak. Mengapa analogi tersebut menjadi masalah? Jelas masalah, karena tidak ada satu pun kura-kura di dunia ini yang mampu berjalan tegak lurus secara vertikal atau menempel pada dinding!

Gambar 3. Contoh Hasil Tampilan pada GroIMP (untuk RH(45))
Permasalahan menjadi lebih rumit, karena bukan hanya menyangkut dimensi ruang saja konsep bahasa pemrograman XL ini digunakan untuk membuat model; namun harus diketahui bahwa pemrograman XL merupakan bahasa pemrograman yang menggabungkan berbagai jenis bahasa dan paradigma pemrograman. Pemrograman XL merupakan bahasa yang mampu mengimplementasikan Rational Growth Grammar (RGG) pada lingkungan bahasa pemrograman java; atau bisa dikatakan bahwa XL adalah implementasi RRG berbasis java (Kniemeyer, 2004). Selanjutnya, bahasa pemrograman XL ini diintegrasikan dengan platform pemodelan, yaitu GroIMP. Perhatikan struktur kode program dari pemrograman XL - pada contoh Kode 1- untuk menghasilkan gambar sederhana pada Gambar 4.

Kode 1. Contoh Kode Program XL Sederhana
Gambar 4. Contoh Tampilan Hasil Kode Sederhana
Dari alasan itulah, aku mencoba untuk menyisipkan ide algoritma baru, yang coba aku beri nama Algoritma Semut pada Dinding (GaSIng), atau supaya terdengar - sedikit - lebih keren, kita sebut saja The Ant on Wall Algorithm (TAWA). Ide dasar dari GaSIng atau TAWA ini sangatlah dasar, karena sulitnya aku memahami  pengembangan model berdimensi ruang, yang diakibatkan karena ada kesalahan sudut lihat tadi; selain memang, semut adalah salah satu binatang yang ALLAH abadikan nama dan tingkah lakunya di dalam Al-Qur'an. Cerita sedikit tentang semut ini, aku pernah membahasnya pada salah satu artikel tentang ACO di blog ini.


Referensi 
Kniemeyer O. 2004. Rule-Based Modeling with the XL / GroIMP Software. Proceeding of 6th GWAL, AKA Berlin, Bamberg, 2004: 56 - 65.

Kurth W. 2010. Model and Simulation with GroIMP. Goettingen: University of Göttingen.

Tidak ada komentar:

Posting Komentar