#!/usr/bin/perl

$dim = 6;
$max = 2**$dim;

$t=0;
$z[0][0]=rand($t);
$z[$max][0]=rand($t);
$z[0][$max]=rand($t);
$z[$max][$max]=rand($t);
fill(0,0,$max,$max);

#VRML section
for $y (0..$max) {
  for $x (0..$max) {
    printf("%2.2f ",$z[$x][$y]/2);
  }
  print "\n";
}

print "\n\n\n\n\n\n\n\n";

# JAVA section
print "{\n";
for $y (0..$max) {
    printf( "{ %2.2ff", $z[$x][$y]/2 );
    for $x (1..$max) {
	printf( ", %2.2ff", $z[$x][$y]/2);
    }
    print " },\n";
}
print "\n};\n";


$s=.00001;

sub fill {
  my ($x1,$y1,$x2,$y2)=@_;
  my($xm,$ym);
  $xm = ($x1+$x2)/2;
  $ym = ($y1+$y2)/2;
  $z[$xm][$y1] = ($z[$x1][$y1]+$z[$x2][$y1])/2+rand($s);
  $z[$xm][$y2] = ($z[$x1][$y2]+$z[$x2][$y2])/2+rand($s);
  $z[$x1][$ym] = ($z[$x1][$y1]+$z[$x1][$y2])/2+rand($s);
  $z[$x2][$ym] = ($z[$x2][$y1]+$z[$x2][$y2])/2+rand($s);
  $z[$xm][$ym] = ($z[$x1][$y1]+$z[$x2][$y1]+
                  $z[$x1][$y2]+$z[$x2][$y2])/4+rand($s);
  if($xm-$x1>1) {
   fill($x1,$y1,$xm,$ym);
   fill($xm,$y1,$x2,$ym);
   fill($x1,$ym,$xm,$y2);
   fill($xm,$ym,$x2,$y2);
  }
}