docs: public void track( T image ) {
  		// configure the different regions based on size
  		region0.set( region );
  		region1.set( region );
  		region2.set( region );
  
  		region0.width  *= 1-scaleChange;
  		region0.height *= 1-scaleChange;
  
  		region2.width  *= 1+scaleChange;
  		region2.height *= 1+scaleChange;
  
  		// distance from histogram
  		double distance0=1,distance1,distance2=1;
  
  		// perform mean-shift at the different sizes and compute their distance
  		if( !constantScale ) {
  			if( region0.width >= minimumWidth ) {
  				updateLocation(image,region0);
  				distance0 = distanceHistogram(keyHistogram, calcHistogram.getHistogram());
  				if( updateHistogram ) System.arraycopy(calcHistogram.getHistogram(),0,histogram0,0,histogram0.length);
  			}
  			updateLocation(image,region2);
  			distance2 = distanceHistogram(keyHistogram, calcHistogram.getHistogram());
  			if( updateHistogram ) System.arraycopy(calcHistogram.getHistogram(),0,histogram2,0,histogram2.length);
  		}
  		// update the no scale change hypothesis
  		updateLocation(image,region1);
  		if( !constantScale ) {
  			distance1 = distanceHistogram(keyHistogram, calcHistogram.getHistogram());
  		} else {
  			// force it to select
  			distance1 = 0;
  		}
  		if( updateHistogram ) System.arraycopy(calcHistogram.getHistogram(),0,histogram1,0,histogram1.length);
  
  		RectangleRotate_F32 selected = null;
  		float selectedHist[] = null;
  		switch( selectBest(distance0,distance1,distance2)) {
  			case 0: selected = region0; selectedHist = histogram0; break;
  			case 1: selected = region1; selectedHist = histogram1; break;
  			case 2: selected = region2; selectedHist = histogram2; break;
  			default: throw new RuntimeException("Bug in selectBest");
  		}
  
  		// Set region to the best scale, but reduce sensitivity by weighting it against the original size
  		// equation 14
  		float w = selected.width*(1-gamma) + gamma*region.width;
  		float h = selected.height*(1-gamma) + gamma*region.height;
  
  		region.set(selected);
  		region.width = w;
  		region.height = h;
  
  		if( updateHistogram ) {
  			System.arraycopy(selectedHist,0,keyHistogram,0,keyHistogram.length);
  		}
  	}