Академический Документы
Профессиональный Документы
Культура Документы
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
1
2
3
#include<GL/glut.h>
#include<cmath>
#include<cstdlib>
4
5
6
7
8
9
double random(){
return (double)rand()/RAND_MAX;
}
10
11
12
13
14
15
16
17
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