Remove unneeded properties

This commit is contained in:
Joshua Coles 2023-02-19 18:00:30 +00:00
parent 952e31449f
commit d69402e32e
3 changed files with 14 additions and 69 deletions

View File

@ -10,7 +10,7 @@
void DLASystem::Update() {
if (lastParticleIsActive == 1) {
moveLastParticle();
} else if (numParticles < endNum) {
} else if (this->particleList.size() < (size_t) endNum) {
addParticleOnAddCircle();
setParticleActive();
} else {
@ -20,17 +20,16 @@ void DLASystem::Update() {
void DLASystem::clearParticles() {
// delete particles and the particle list
for (int i = 0; i < numParticles; i++) {
for (size_t i = 0; i < this->particleList.size(); i++) {
delete particleList[i];
}
particleList.clear();
numParticles = 0;
}
// remove any existing particles and setup initial condition
void DLASystem::Reset() {
// stop running
running = 0;
running = false;
clearParticles();
@ -50,11 +49,6 @@ void DLASystem::Reset() {
// add a single particle at the origin
double pos[] = {0.0, 0.0};
addParticle(pos);
// set the view
int InitialViewSize = 40;
setViewSize(InitialViewSize);
}
// set the value of a grid cell for a particular position
@ -87,7 +81,6 @@ void DLASystem::addParticle(double pos[]) {
Particle *p = new Particle(pos);
// push_back means "add this to the end of the list"
particleList.push_back(p);
numParticles++;
// pos coordinates should be -gridSize/2 < x < gridSize/2
setGrid(pos, 1);
@ -131,23 +124,9 @@ void DLASystem::setPosNeighbour(double setpos[], double pos[], int val) {
}
}
// if the view is smaller than the kill circle then increase the view area (zoom out)
void DLASystem::updateViewSize() {
double mult = 1.2;
if (viewSize < 2.0 * killCircle) {
setViewSize(viewSize * mult);
}
}
// set the view to be the size of the add circle (ie zoom in on the cluster)
void DLASystem::viewAddCircle() {
setViewSize(2.0 * addCircle); // factor of 2 is to go from radius to diameter
}
// when we add a particle to the cluster, we should update the cluster radius
// and the sizes of the addCircle and the killCircle
void DLASystem::updateClusterRadius(double pos[]) {
double rr = distanceFromOrigin(pos);
if (rr > clusterRadius) {
clusterRadius = rr;
@ -160,7 +139,6 @@ void DLASystem::updateClusterRadius(double pos[]) {
if (addCircle < check) {
addCircle = check;
killCircle = killRatio * addCircle;
updateViewSize();
}
checkStop();
}
@ -171,7 +149,7 @@ void DLASystem::moveLastParticle() {
int rr = rgen.randomInt(4); // pick a random number in the range 0-3, which direction do we hop?
double newpos[2];
Particle *lastP = particleList[numParticles - 1];
Particle *lastP = particleList[this->particleList.size() - 1];
setPosNeighbour(newpos, lastP->pos, rr);
@ -179,25 +157,25 @@ void DLASystem::moveLastParticle() {
//cout << "#deleting particle" << endl;
setGrid(lastP->pos, 0);
particleList.pop_back(); // remove particle from particleList
numParticles--;
setParticleInactive();
}
// check if destination is empty
else if (readGrid(newpos) == 0) {
setGrid(lastP->pos, 0); // set the old grid site to empty
// update the position
particleList[numParticles - 1]->pos[0] = newpos[0];
particleList[numParticles - 1]->pos[1] = newpos[1];
particleList[this->particleList.size() - 1]->pos[0] = newpos[0];
particleList[this->particleList.size() - 1]->pos[1] = newpos[1];
setGrid(lastP->pos, 1); // set the new grid site to be occupied
// check if we stick
if (checkStick()) {
cout << lastP->pos[0] << "," << lastP->pos[1] << endl;
//cout << "stick" << endl;
setParticleInactive(); // make the particle inactive (stuck)
updateClusterRadius(lastP->pos); // update the cluster radius, addCircle, etc.
if (numParticles % 100 == 0 && logfile.is_open()) {
logfile << numParticles << " " << clusterRadius << endl;
if (this->particleList.size() % 100 == 0 && logfile.is_open()) {
logfile << this->particleList.size() << " " << clusterRadius << endl;
}
}
} else {
@ -212,7 +190,7 @@ void DLASystem::moveLastParticle() {
// check if the last particle should stick (to a neighbour)
int DLASystem::checkStick() {
Particle *lastP = particleList[numParticles - 1];
Particle *lastP = particleList[this->particleList.size() - 1];
int result = 0;
// loop over neighbours
for (int i = 0; i < 4; i++) {
@ -229,7 +207,6 @@ int DLASystem::checkStick() {
// constructor
DLASystem::DLASystem() {
cout << "creating system, gridSize " << gridSize << endl;
numParticles = 0;
endNum = 1000;
// allocate memory for the grid, remember to free the memory in destructor
@ -237,7 +214,6 @@ DLASystem::DLASystem() {
for (int i = 0; i < gridSize; i++) {
grid[i] = new int[gridSize];
}
slowNotFast = 1;
// reset initial parameters
Reset();

View File

@ -23,7 +23,6 @@ private:
// these are private variables and functions that the user will not see
// list of particles
vector<Particle *> particleList;
int numParticles;
// delete particles and clear the particle list
void clearParticles();
@ -38,10 +37,6 @@ private:
static const int gridSize = 1600;
int **grid; // this will be a 2d array that stores whether each site is occupied
// the window draws only part of the grid, viewSize controls how much...
double viewSize;
double drawScale;
// random number generator, class name is rnd, instance is rgen
rnd rgen;
@ -56,7 +51,6 @@ private:
double addRatio; // how much bigger the addCircle should be, compared to cluster radius
double killRatio; // how much bigger is the killCircle, compared to the addCircle
public:
// these are public variables and functions
@ -65,10 +59,7 @@ public:
void Update();
// is the simulation running (1) or paused (0) ?
int running;
// slowNotFast is +1 for slow running, 0 for fast
int slowNotFast;
bool running;
// lastParticleIsActive is +1 if there is an active particle in the system, otherwise 0
int lastParticleIsActive;
@ -88,31 +79,9 @@ public:
// check whether we should stop (eg the cluster has reached the edge of the grid)
int checkStop();
// stop/start the algorithm
void setRunning() { if (checkStop() == true) running = 1; }
void setRunning() { running = true; }
void pauseRunning() { running = 0; }
// set whether it runs fast or slow
void setSlow() { slowNotFast = 1; }
void setFast() { slowNotFast = 0; }
void setSuperFast() { slowNotFast = -1; }
// set which part of the grid is visible on the screen
// basically the screen shows co-ordinates -vv < x < vv
// where vv is the input value
void setViewSize(double vv) {
viewSize = vv;
drawScale = 2.0 / viewSize;
}
// if the killcircle is almost as big as the view then increase the view
void updateViewSize();
// set the view to be the approx size of the addCircle
void viewAddCircle();
void pauseRunning() { running = false; }
// if pos is outside the cluster radius then set clusterRadius to be the distance to pos.
void updateClusterRadius(double pos[]);

View File

@ -17,7 +17,7 @@ int main(int argc, char **argv) {
int seed = 6;
cout << "setting seed " << seed << endl;
sys->setSeed(seed);
sys->running = true;
sys->setRunning();
/*
* NOTE: We run at max speed as rendering is handled by a different engine so we simply want to hjand