public int squeezOutOf(AABB r, Vec2D a_out)
	{
		// up, left, down, right
		double[] squeeze = {max.y-r.min.y, max.x-r.min.x, r.max.y-min.y, r.max.x-min.x};
		int collidingSide = 0;
		for(int i = 0; i < squeeze.length; ++i)
		{
			if(squeeze[i] < squeeze[collidingSide])
				collidingSide = i;
		}
		double dx = 0, dy = 0;
		switch(collidingSide)
		{
		case N:	dy = -squeeze[0];break;
		case W:	dx = -squeeze[1];break;
		case S:	dy = squeeze[2];break;
		case E:	dx = squeeze[3];break;
		}
		if(dx != 0 || dy != 0)
		{
			if(a_out != null)
			{
				a_out.x += dx;
				a_out.y += dy;
			}
			translate(dx, dy);
			return collidingSide;
		}
		return -1;
	}