protected static void midPointStep(double fracdim,int size,int delta,int elevationMap[][],int step,boolean newBorder){
  int d1, d2;
  int delta5;
  int x, y;
  d1=size >> (step - 1);
  d2=d1 / 2;
  fracdim=(1.0 - fracdim) / 2.0;
  delta=(int)(delta * Math.exp(-0.6931 * fracdim * (2.0 * step - 1)));
  delta5=delta << 5;
  x=d2;
  do {
    y=d2;
    do {
      elevationMap[x][y]=middleValue(elevationMap[x + d2][y + d2],elevationMap[x + d2][y - d2],elevationMap[x - d2][y + d2],elevationMap[x - d2][y - d2],delta5);
      y+=d1;
    }
 while (y < size - d2);
    x+=d1;
  }
 while (x < size - d2);
  delta=(int)(delta * Math.exp(-0.6931 * fracdim));
  delta5=delta << 5;
  if (newBorder) {
    x=d2;
    do {
      y=x;
      elevationMap[0][x]=middleValue(elevationMap[0][x + d2],elevationMap[0][x - d2],elevationMap[d2][x],delta5);
      elevationMap[size][x]=middleValue(elevationMap[size - 1][x + d2],elevationMap[size - 1][x - d2],elevationMap[size - d2 - 1][x],delta5);
      y=0;
      elevationMap[x][0]=middleValue(elevationMap[x + d2][0],elevationMap[x - d2][0],elevationMap[x][d2],delta5);
      elevationMap[x][size]=middleValue(elevationMap[x + d2][size - 1],elevationMap[x - d2][size - 1],elevationMap[x][size - d2 - 1],delta5);
      x+=d1;
    }
 while (x < size - d2);
  }
  diagMid(new Point(d2,d1),d1,d2,delta5,size,elevationMap);
  diagMid(new Point(d1,d2),d1,d2,delta5,size,elevationMap);
}

protected static void midPointStep ( double fracdim , int size , int delta , int elevationMap [ ] [ ] , int step , boolean newBorder ) { int d1 , d2 ; int delta5 ; int x , y ; d1 = size > > ( step - 1 ) ; d2 = d1 / 2 ; fracdim = ( 1.0 - fracdim ) / 2.0 ; delta = ( int ) ( delta * Math . exp ( - 0.6931 * fracdim * ( 2.0 * step - 1 ) ) ) ; delta5 = delta << 5 ; x = d2 ; do { y = d2 ; do { elevationMap [ x ] [ y ] = middleValue ( elevationMap [ x + d2 ] [ y + d2 ] , elevationMap [ x + d2 ] [ y - d2 ] , elevationMap [ x - d2 ] [ y + d2 ] , elevationMap [ x - d2 ] [ y - d2 ] , delta5 ) ; y += d1 ; } while ( y < size - d2 ) ; x += d1 ; } while ( x < size - d2 ) ; delta = ( int ) ( delta * Math . exp ( - 0.6931 * fracdim ) ) ; delta5 = delta << 5 ; if ( newBorder ) { x = d2 ; do { y = x ; elevationMap [ 0 ] [ x ] = middleValue ( elevationMap [ 0 ] [ x + d2 ] , elevationMap [ 0 ] [ x - d2 ] , elevationMap [ d2 ] [ x ] , delta5 ) ; elevationMap [ size ] [ x ] = middleValue ( elevationMap [ size - 1 ] [ x + d2 ] , elevationMap [ size - 1 ] [ x - d2 ] , elevationMap [ size - d2 - 1 ] [ x ] , delta5 ) ; y = 0 ; elevationMap [ x ] [ 0 ] = middleValue ( elevationMap [ x + d2 ] [ 0 ] , elevationMap [ x - d2 ] [ 0 ] , elevationMap [ x ] [ d2 ] , delta5 ) ; elevationMap [ x ] [ size ] = middleValue ( elevationMap [ x + d2 ] [ size - 1 ] , elevationMap [ x - d2 ] [ size - 1 ] , elevationMap [ x ] [ size - d2 - 1 ] , delta5 ) ; x += d1 ; } while ( x < size - d2 ) ; } diagMid ( new Point ( d2 , d1 ) , d1 , d2 , delta5 , size , elevationMap ) ; diagMid ( new Point ( d1 , d2 ) , d1 , d2 , delta5 , size , elevationMap ) ; }
helper function for landscape generation
