float xmag, ymag = 0; float newXmag, newYmag = 0; int spacing = 25; int xMax = 10; int yMax = 10; int zMax = 10; int totalDots = xMax*yMax*zMax; Dot[] dot; Meanderer meanderer; void setup(){ size(400, 400); background(51); meanderer = new Meanderer(); dot = new Dot[totalDots]; for (int z=0; z 0.01) { xmag -= diff/4.0; } diff = ymag-newYmag; if (abs(diff) > 0.01) { ymag -= diff/4.0; } rotateX(-ymag); rotateY(-xmag); meanderer.move(); for (int z=0; z upper){ xDelta = random(-1.0f, 0.0f); } else { xDelta = random(0.0f, 1.0f) - random(0.0f, 1.0f); } xVel += xDelta; xVel = constrain(xVel, -xMax, xMax); } void findYLimits(float yPos, float lower, float upper){ if (yPos < lower){ yDelta = random(0.0f, 1.0f); } else if (yPos > upper){ yDelta = random(-1.0f, 0.0f); } else { yDelta = random(0.0f, 1.0f) - random(0.0f, 1.0f); } yVel += yDelta; yVel = constrain(yVel, -yMax, yMax); } void findZLimits(float zPos, float lower, float upper){ if (zPos < lower){ zDelta = random(0.0f, 1.0f); } else if (zPos > upper){ zDelta = random(-1.0f, 0.0f); } else { zDelta = random(0.0f, 1.0f) - random(0.0f, 1.0f); } zVel += zDelta; zVel = constrain(zVel, -zMax, zMax); } float zVar; }