diff --git a/DLASystem.cpp b/DLASystem.cpp index 0011eff..5a1dec6 100644 --- a/DLASystem.cpp +++ b/DLASystem.cpp @@ -4,31 +4,18 @@ #include "DLASystem.h" -// colors -namespace colours { - GLfloat blue[] = {0.1, 0.3, 0.9, 1.0}; // blue - GLfloat red[] = {1.0, 0.2, 0.1, 0.2}; // red - GLfloat green[] = {0.3, 0.6, 0.3, 1.0}; // green - GLfloat paleGrey[] = {0.7, 0.7, 0.7, 1.0}; // green - GLfloat darkGrey[] = {0.2, 0.2, 0.2, 1.0}; // green -} - - // this function gets called every step, // if there is an active particle then it gets moved, // if not then add a particle void DLASystem::Update() { - if (lastParticleIsActive == 1) + if (lastParticleIsActive == 1) { moveLastParticle(); - else if (numParticles < endNum) { + } else if (numParticles < endNum) { addParticleOnAddCircle(); setParticleActive(); } - if (lastParticleIsActive == 0 || slowNotFast == 1) - glutPostRedisplay(); //Tell GLUT that the display has changed } - void DLASystem::clearParticles() { // delete particles and the particle list for (int i = 0; i < numParticles; i++) { @@ -88,7 +75,6 @@ int DLASystem::checkStop() { if (killCircle + 2 >= gridSize / 2) { pauseRunning(); cout << "STOP" << endl; - glutPostRedisplay(); // update display return 1; } else return 0; } @@ -239,9 +225,8 @@ int DLASystem::checkStick() { // constructor -DLASystem::DLASystem(Window *set_win) { +DLASystem::DLASystem() { cout << "creating system, gridSize " << gridSize << endl; - win = set_win; numParticles = 0; endNum = 1000; @@ -275,42 +260,3 @@ DLASystem::~DLASystem() { if (logfile.is_open()) logfile.close(); } - - -// this draws the system -void DLASystem::DrawSquares() { - - // draw the particles - double halfSize = 0.5; - for (int p = 0; p < numParticles; p++) { - double *vec = particleList[p]->pos; - glPushMatrix(); - if (p == numParticles - 1 && lastParticleIsActive == 1) - glColor4fv(colours::red); - else if (p == 0) - glColor4fv(colours::green); - else - glColor4fv(colours::blue); - glRectd(drawScale * (vec[0] - halfSize), - drawScale * (vec[1] - halfSize), - drawScale * (vec[0] + halfSize), - drawScale * (vec[1] + halfSize)); - glPopMatrix(); - } - - // print some information (at top left) - // this ostringstream is a way to create a string with numbers and words (similar to cout << ... ) - ostringstream str; - str << "num " << numParticles << " size " << clusterRadius; - - // print the string - win->displayString(str, -0.9, 0.9, colours::red); - - // if we are paused then print this (at bottom left) - if (running == 0) { - ostringstream pauseStr; - pauseStr << "paused"; - win->displayString(pauseStr, -0.9, -0.9, colours::red); - } - -} diff --git a/DLASystem.h b/DLASystem.h index b0f5857..39660e6 100644 --- a/DLASystem.h +++ b/DLASystem.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include #include @@ -13,7 +12,6 @@ #include #include -#include "Window.h" #include "Particle.h" #include "rnd.h" @@ -23,9 +21,6 @@ using namespace std; class DLASystem { private: // these are private variables and functions that the user will not see - - Window *win; // window in which the system is running - // list of particles vector particleList; int numParticles; @@ -69,9 +64,6 @@ public: // else create a new particle (on the adding circle) void Update(); - // draw particles as squares - void DrawSquares(); - // is the simulation running (1) or paused (0) ? int running; @@ -82,7 +74,7 @@ public: int lastParticleIsActive; // constructor - DLASystem(Window *set_win); + DLASystem(); // destructor ~DLASystem(); @@ -97,7 +89,7 @@ public: int checkStop(); // stop/start the algorithm - void setRunning() { if (checkStop() == 0) running = 1; } + void setRunning() { if (checkStop() == true) running = 1; } void pauseRunning() { running = 0; } @@ -158,11 +150,4 @@ public: // check whether the last particle should stick // currently it sticks whenever it touches another particle int checkStick(); - - // set the background colour for the window - // it would be better for an OOP philosophy to make these member functions for the Window class - // but we are being a bit lazy here - void setWinBackgroundWhite() { glClearColor(1.0, 1.0, 1.0, 1.0); } - - void setWinBackgroundBlack() { glClearColor(0.0, 0.0, 0.0, 0.0); } }; diff --git a/mainDLA.cpp b/mainDLA.cpp index 7c66563..106b701 100644 --- a/mainDLA.cpp +++ b/mainDLA.cpp @@ -6,19 +6,6 @@ #include "DLASystem.h" -using namespace std; - -// functions which are needed for openGL go into a namespace so that we can identify them -namespace drawFuncs { - void handleKeypress(unsigned char key, int x, int y); - - void display(void); - - void update(int val); - - void introMessage(); -} - // this is a global pointer, which is how we access the system itself DLASystem *sys; @@ -30,8 +17,13 @@ int main(int argc, char **argv) { int seed = 6; cout << "setting seed " << seed << endl; sys->setSeed(seed); + sys->setRunning(); - while (sys->Update()) { + /* + * NOTE: We run at max speed as rendering is handled by a different engine so we simply want to hjand + * */ + while (sys->running) { + sys->Update(); } return 0;