sub minkowski {
my ($d, $level) = @_ ;
if ($level==0) {fd($d); return 1;}
minkowski($d/4,$level-1);
rt(-90); minkowski($d/4,$level-1);
rt( 90); minkowski($d/4,$level-1);
rt( 90); minkowski($d/4,$level-1);
minkowski($d/4,$level-1);
rt(-90); minkowski($d/4,$level-1);
rt(-90); minkowski($d/4,$level-1);
rt( 90); minkowski($d/4,$level-1);
}
####
sub minkowski {
my ($d, $level) = @_ ;
fd($d), return unless $level--;
$d /= 4;
minkowski($d,$level);
rt(-90); minkowski($d,$level);
rt( 90); minkowski($d,$level);
rt( 90); minkowski($d,$level);
minkowski($d,$level);
rt(-90); minkowski($d,$level);
rt(-90); minkowski($d,$level);
rt( 90); minkowski($d,$level);
}
####
sub minkowski {
my ($d, $level, $rt) = @_ ;
rt($rt) if $rt;
fd($d), return unless $level--;
$d /= 4;
minkowski($d,$level);
minkowski($d,$level, -90);
minkowski($d,$level, 90);
minkowski($d,$level, 90);
minkowski($d,$level);
minkowski($d,$level, -90);
minkowski($d,$level, -90);
minkowski($d,$level, 90);
}
####
sub minkowski {
my ($d, $level, $rt) = @_;
rt($rt) if $rt;
fd($d), return unless $level--;
$d /= 4;
minkowski($d, $level, $_)
for 0, -90, 90, 90, 0, -90, -90, 90;
}