Disini
saya sedikit mereview tentang praktikum ke-5 untuk matakuliah ALPRO1
kelas B. Hari itu adalah hari senin, tepat pada tanggal 28 Nopember
2011, dimana pada hari itu ada sebuah praktikum yang ke-5 untuk
matakuliah ALPRO 1 bagi kelas B di jurusan Sistem Informasi ITS.
Praktikum kali ini membahas tentang konsep fraktal.
Sebelum ini saya telah menjelaskan mengenai
fraktal.
Dan saya telah menjelaskan secara singkat mengenai salah satu contoh
fraktal yakni segitiga sierpinski. Segitiga yang terus membagi dirinya
dengan segitiga-segitiga lain yang mirip namun dengan skala yang terus
berbeda.
Fraktal-fraktal
tersebut dapat dimodelkan dengan bantuan komputer. Salah satu cara
untuk memodelkannya adalah dengan menggunakan bahasa pemrograman java.
Dengan logika yang telah dijelaskan pada artikel sebelumnya kita dapat
membuat segitiga sierpinski tersebut.
Penjelasan diatas
merupakan penjelasan sedikit tentang materi yang bersangkutan untuk
praktikum ALPRO1 yang ke-5 ini. Dalam praktikum kali ini kami diminta
untuk membuat sebuah segitiga sierpinski dalam bahasa java persis
seperti ulasan materi diatas.
Berikut
adalah source code nya. Untuk membuat program ini, kita dapat
membuatnya menjadi dua class. Class pertama berisi atribut dan method
yang diperlukan, dan class kedua berfungsi untuk menampilkan object yang
dibuat, yakni segitiga sierpinski. Level kedalaman segitiga dibuat
berdasarkan inputan dari user.
Di bawah ini adalah Class pertamanya :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.*;
import javax.swing.*;
/**
*
* @author Rachmat Arif
*/
public class Sierpinski extends JPanel{
public static final int WINDOWSIZE = 512;
static Polygon[] polyList;
static int count = 0;
public static void gambarSegitiga(int splits, int ax, int ay, int bx, int by, int cx, int cy){
int[] C1 = {ax,ay};
int[] C2 = {bx,by};
int[] C3 = {cx,cy};
if(splits == 1){
int[]ps={ax,bx,cx};
int[]qs={ay,by,cy};
Polygon p = new Polygon(ps,qs,ps.length);
polyList[count] = p;
count++;
} else{
int[] C4 = getMidpoint(ax, ay, bx, by);
int[] C5 = getMidpoint(bx, by, cx, cy);
int[] C6 = getMidpoint(ax, ay, cx, cy);
gambarSegitiga(splits - 1,C1[0],C1[1],C4[0],C4[1],C6[0],C6[1]);
gambarSegitiga(splits - 1,C4[0],C4[1],C2[0],C2[1],C5[0],C5[1]);
gambarSegitiga(splits - 1,C6[0],C6[1],C5[0],C5[1],C3[0],C3[1]);
}
}
public static int[] getMidpoint(int ax, int ay, int bx, int by){
int[] mid = new int[2];
mid[0] = (ax + bx)/2;
mid[1] = (ay + by)/2;
return mid;
}
public void paint(Graphics g){
for(int i = 0; i < polyList.length; i++)
{g.fillPolygon(polyList[i]);}
}
}
Berikut adalah Class keduanya, dimana dalam kelas ini berisi main yang berfungsi untuk memanggil Class pertama
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.Color;
import java.awt.Polygon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
*
* @author Rachmat Arif
*/
public class Remote extends Sierpinski {
public static void main (String[] args)
{
int C1x = WINDOWSIZE/2;
int C1y = WINDOWSIZE/10;
int C2x = WINDOWSIZE-C1y;
int C2y = WINDOWSIZE-C1y;
int C3x = WINDOWSIZE/10;
int C3y = WINDOWSIZE-C1y;
String input = JOptionPane.showInputDialog("Enter Your Choice Number:");
int splits = Integer.parseInt(input);
polyList = new Polygon[(int)Math.pow(3,splits-1)];
JFrame fr = new JFrame("Sierpinski's Triangle!");
fr.setSize(WINDOWSIZE,WINDOWSIZE);
fr.setBackground(Color.CYAN);
fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fr.setVisible(true);
gambarSegitiga(splits,C1x,C1y,C2x,C2y,C3x,C3y);
Sierpinski s = new Sierpinski();
fr.add(s);
}
}