Вы находитесь на странице: 1из 4

Fraktal

Kapita Selekta Sains Komputasi


(Dosen: Prof.Dr.rer.nat. Umar Fauzi)
Muhaza Liebenlito(20912020)
February 5, 2013

Pendahuluan

Hampir setiap sistem fisis di alam dan struktur dari tubuh manusia tidak sepenuhnya berbentuk standar geometri, seperti yang digambarkan oleh Euclid. Geometri Fraktal menawarkan
cara berbeda dari geometri euclid untuk mendeskripsikan, mengukur, dan memprediksi
fenomena-fenomena alam. Sifat utama fratktal yakni self-similarity artinya suatu bentuk yg
besar disusun dari bentuk-bentuk yg kecil yg serupa dengannya. Contohnya adalah bentuk
rupa daun, dimana daun tersusun dari bentuk-bentuk kecil yg menyerupai bentuk besarnya.
Kali ini penulis mencoba untuk membuat suatu fraktal daun dengan menggunakan OpenGL.
Bentuk fraktal ini pada dasarnya adalah generalisasi dari bentuk fraktal phytagoras. Berikut
adalah hasil output program dari fraktal daun tersebut.

(a) Orde 0

(b) Orde 1

(c) Orde 2

(d) Orde 3

(e) Orde 4

(f) Orde 5

(g) Orde 6

(h) Orde 7

(i) Orde 8

Figure 1: Gambar Fraktal Daun.

Souce Code Dalam C++


Listing 1: Simulasi Spreading of Fire

1
2
3

#include<GL/glut.h>
#include<cmath>
#include<cstdlib>

4
5

using namespace std;

6
7
8
9

double random(){
return (double)rand()/RAND_MAX;
}

10
11
12
13
14
15
16
17

void garis(float x1, float y1, float x2, float y2) {


glColor3f(random(), random(), random());
glBegin(GL_LINES);
glVertex3f(x1, y1, 0.0);
glVertex3f(x2, y2, 0.0);
glEnd();
}

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

void shape(float x, float y, float r, float theta, float dTheta, int orde){
float x0 = x;
float y0 = y;
float x1, y1, x2, y2, x3, y3;
float mTheta = theta+dTheta;
float nTheta = theta-dTheta;
x1 = x0 + r*cos(mTheta);
y1 = y0 + r*sin(mTheta);
x2 = x0 + r*cos(nTheta);
y2 = y0 + r*sin(nTheta);
x3 = x0 + r*cos(theta);
y3 = y0 + r*sin(theta);
if (orde > 0){
garis(x0, y0, x1, y1);
garis(x0, y0, x2, y2);
garis(x0, y0, x3, y3);
r = r/sqrt(2.);
shape(x1, y1, r/2, mTheta, dTheta, orde-1);
shape(x2, y2, r/2, nTheta, dTheta, orde-1);
shape(x3, y3, r, theta, dTheta, orde-1);
}
}

41
42
43
44
45
46
47
48

void Draw(){
glClear(GL_COLOR_BUFFER_BIT);
int orde=9;
garis(0.5, 0.3, 0.4, 0.11);
shape(0.5, 0.3, 0.15, M_PI/3., M_PI/3., orde);
glFlush();
}

49

50
51
52
53
54
55

void Initialize() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

56
57
58
59
60
61
62
63
64
65
66
67

int main(int iArgc, char** cppArgv) {


glutInit(&iArgc, cppArgv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(200, 200);
glutCreateWindow("Fractal Phythagoras");
Initialize();
glutDisplayFunc(Draw);
glutMainLoop();
return 0;
}

Вам также может понравиться