diff --git a/include/glumodel.h b/include/glumodel.h
index 205a8b2..e13ae1f 100644
--- a/include/glumodel.h
+++ b/include/glumodel.h
@@ -31,11 +31,21 @@
void draw();
};
-class KochFractal : public GenericModel {
+class Fractal : public GenericModel {
public:
float iters;
float len;
+ float multiplicity;
+ float mult_angle;
+ Fractal();
+ void init(float _iters, float _len);
+};
+
+class KochFractal : public Fractal {
+ public:
KochFractal();
+ //TODO: move draw function to Fractal class, it's common for all
+ //inheriting fractals....
void draw();
void iter(float nbit);
};
diff --git a/sources/glumodel.cpp b/sources/glumodel.cpp
index 784da2a..ba50b4f 100644
--- a/sources/glumodel.cpp
+++ b/sources/glumodel.cpp
@@ -51,16 +51,33 @@
}
+Fractal::Fractal() {
+ init(4, 30);
+}
+
+void Fractal::init(float _iters, float _len) {
+ iters = _iters;
+ len = _len / (iters*iters*iters);
+
+ //arbitrary values, to be reset
+ //used to draw several instances of same fractal
+ multiplicity = 1;
+ mult_angle = 90;
+}
+
KochFractal::KochFractal() {
- iters = 4;
- len = 30 / (iters*iters*iters);
+ Fractal::init(3, 30);
+ multiplicity = 6;
+ mult_angle = 60;
}
void KochFractal::draw() {
+ //TODO: move draw function to Fractal class, it's common for all
+ //inheriting fractals....
glPushMatrix();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < multiplicity; i++) {
iter(iters);
- glRotatef(60, 1,0,0);
+ glRotatef(mult_angle, 1,0,0);
}
glPopMatrix();
}
@@ -76,8 +93,6 @@
iter(n);
glRotatef(60,1,0,0);
iter(n);
- //glRotatef(30,1,0,0);
-
} else {
glBegin(GL_LINES);
glVertex3f(0,0,0);