public void update(int dt) {		
		double[] jerk = getRandUnitVector();
		ax = jerk[0]*force;
		ay = jerk[1]*force;
		
		ArrayList<int[]> gs = ScreenSaver.getCentersOfGravity();
		double grav = ScreenSaver.getGravity();
		
		for(int[] g : gs)
			if(g[0] >= 0) {			
				double[] r = new double[]{g[0]-centerx, g[1]-centery};
				double rmag = Math.sqrt(r[0]*r[0] + r[1]*r[1]);
				
				double[] rhat = new double[]{r[0]/rmag, r[1]/rmag};
				
				if(rmag != 0) {
					ax += grav*rhat[0]*.0001;
					ay += grav*rhat[1]*.0001;
				}
			}
			else
				ay -= g[2]*.001;
			
		
		vx += ax*dt;
		vy += ay*dt;

		double dx = vx*dt;
		double dy = vy*dt;
		
		int xLimit = ScreenSaver.getSpaceWidth()-(int)getWidth();
		int yLimit = ScreenSaver.getHeight()-(int)getHeight();
		
		if( rx + dx < 0 || rx + dx > xLimit ) {
			dx = 0;
			vx = -vx;
		}
		if( ry + dy < 0 || ry + dy > yLimit) {
			dy = 0;
			vy = -vy;
		}
		
		rx += dx;
		ry += dy;


		centerx = rx+length/2;
		centery = ry+length/2;
		
		x = (int)rx;
		y = (int)ry;
		pastLocs.add( new int[]{x+length/2,y+length/2} );
	}