From ba473756ffeecf489e94d2f87fd967ff9d689b01 Mon Sep 17 00:00:00 2001 From: josh Date: Thu, 21 Oct 2010 21:09:27 +0000 Subject: [PATCH] added chaos / iterative algorithm git-svn-id: svn://anubis/misc/sierpinski-gtk@250 bd8a9e45-a331-0410-811e-c64571078777 --- SierpinskiDA.cc | 18 +++++++++++++++--- sierpinski-gtk.cc | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/SierpinskiDA.cc b/SierpinskiDA.cc index 3ea1599..9313b14 100644 --- a/SierpinskiDA.cc +++ b/SierpinskiDA.cc @@ -1,4 +1,5 @@ +#include /* rand() */ #include #include @@ -32,11 +33,22 @@ void SierpinskiDA::regenerate(int npts) gl_begin(); glNewList(m_dl, GL_COMPILE); - glBegin(GL_LINE_LOOP); + glBegin(GL_POINTS); - for (int i = 0; i < 4; i++) + double pt[3]; + double r = rand() / RAND_MAX; + for (int i = 0; i < 3; i++) { - glVertex3fv(pts[i]); + pt[i] = pts[0][i] + r * pts[1][i] - pts[0][i]; + } + for (int i = 0; i < npts; i++) + { + glVertex3dv(pt); + int pt_idx = rand() & 0x3; + for (int j = 0; j < 3; j++) + { + pt[j] = (pt[j] + pts[pt_idx][j]) / 2.0; + } } glEnd(); diff --git a/sierpinski-gtk.cc b/sierpinski-gtk.cc index e1c2042..f536adb 100644 --- a/sierpinski-gtk.cc +++ b/sierpinski-gtk.cc @@ -1,4 +1,7 @@ +#include /* time() */ +#include /* srand() */ + #include #include @@ -33,6 +36,8 @@ int main(int argc, char * argv[]) } } + srand(time(NULL)); + Gtk::Window mw; mw.set_default_size(400, 420);