#!/usr/bin/perl -w #sierpinski1.pl #Created 22 Jan 2007 by John T. Wodder II #This code is in the public domain. use strict; my $depth = shift || 7; my $size = shift || 100; my $file = shift || 'sierpinski.eps'; my $height = $size / 2 * sqrt 3; my @tris = ([[0, 0], [$size/2, $height], [$size, 0]]); open(FILE, '>', $file); select FILE; print <[1][0]+$curr->[2][0])/2, ($curr->[1][1]+$curr->[2][1])/2); my @p1 = (($curr->[0][0]+$curr->[2][0])/2, ($curr->[0][1]+$curr->[2][1])/2); my @p2 = (($curr->[1][0]+$curr->[0][0])/2, ($curr->[1][1]+$curr->[0][1])/2); print "newpath $p0[0] $p0[1] moveto ", $p1[0]-$p0[0], " ", $p1[1]-$p0[1], " rlineto ", $p2[0]-$p1[0], " ", $p2[1]-$p1[1], " rlineto closepath fill\n"; push @tris, ([[@{$curr->[0]}], [@p1], [@p2]], [[@{$curr->[1]}], [@p0], [@p2]], [[@{$curr->[2]}], [@p0], [@p1]]); } } print "showpage"; close(FILE);