private float[] staggeredLine(
    int length, int initStep, float variation, boolean sub
  ) {
    //  NOTE:  Length must be an exact power of 2, plus 1.
    float line[] = new float[length] ;
    int step = (initStep > 0) ? initStep : (length - 1) ;
    while (step > 1) {
      for (int i = 0 ; i < length - 1 ; i += step) {
        final float value = (line[i] + line[i + step]) / 2 ;
        final float rand = Rand.num() - (sub ? 0.5f : 0) ;
        line[i + (step / 2)] = value + (rand * variation) ;
      }
      step /= 2 ;
      variation /= 2 ;
    }
    
    return line ;
  }