amaliAnjani's Blog

Java Code Segitiga Sierpinski

Posted on: December 23, 2010

Sebelum ini kami telah menjelaskan mengenai fraktal. Dan kami 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 pemrogramanjava. Dengan logika yang telah dijelaskan pada artikel sebelumnya kita dapat membuat segitiga sierpinski tersebut.

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.

Berikut code untuk class pertama yakni class Segitiga.java

import java.awt.*;

import javax.swing.*;

public class Segitiga extends JPanel {

public final int jSize = 600;

static Polygon[] segi;

static int count = 0;

public void gbrSegitiga(int level, int xA, int yA, int xB, int yB, int xC, int yC) {

int p1[] = {xA, yA};

int p2[] = {xB, yB};

int p3[] = {xC, yC};

if (level == 1) {

int xs[] = {xA, xB, xC};

int ys[] = {yA, yB, yC};

Polygon p = new Polygon(xs, ys, xs.length);

segi[count] = p;

count++;

} else {

int[] p4 = tengah(xA, yA, xB, yB);

int[] p5 = tengah(xB, yB, xC, yC);

int[] p6 = tengah(xA, yA, xC, yC);

gbrSegitiga(level – 1, p1[0], p1[1], p4[0], p4[1], p6[0], p6[1]);

gbrSegitiga(level – 1, p4[0], p4[1], p2[0], p2[1], p5[0], p5[1]);

gbrSegitiga(level – 1, p6[0], p6[1], p5[0], p5[1], p3[0], p3[1]);

}

}

public static int[] tengah(int xA, int yA, int xB, int yB) {

int mid[] = new int[2];

mid[0] = (xA + xB) / 2;

mid[1] = (yA + yB) / 2;

return mid;

}

@Override

public void paint(Graphics g) {

for (int i = 0; i < segi.length; i++) {

g.fillPolygon(segi[i]);

g.setColor(Color.BLACK);

}

}

}

Berikut adalah code untuk class pemanggil yakni class Main.java.

import java.awt.*;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

Segitiga segi = new Segitiga();

int p1x = segi.jSize / 2;

int p1y = segi.jSize / 10;

int p2x = segi.jSize – p1y;

int p2y = segi.jSize – p1y;

int p3x = segi.jSize / 10;

int p3y = segi.jSize – p1y;

int level = Integer.valueOf(JOptionPane.showInputDialog(null, “input level: “)) + 1;

Segitiga.segi = new Polygon[(int) Math.pow(3, level – 1)];

JFrame frame = new JFrame(“Segitiga Sierpinski”);

frame.setSize(segi.jSize, segi.jSize);

frame.setBackground(Color.BLUE);

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

frame.setVisible(true);

segi.gbrSegitiga(level, p1x, p1y, p2x, p2y, p3x, p3y);

Segitiga s = new Segitiga();

frame.add(s);

}

}

Dan berikut adalah hasil running dari Main.java

Gambar 1. Input Level 4

Gambar 2 Output Segitiga Sierpinski pada Level ke 4

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: