% Copyright (c) Martin Geisler % You can use this MetaPost code if you find it usefull. % A macro that can draw a Sierpinski Sieve. The lower-left corner is % a, the lower-right b and the order is n: def sierpinski(expr a, b, n) = if n = 0: fill a--(b rotatedabout(a, 60))--b--cycle; else: sierpinski(a, 0.5[a,b], n-1); sierpinski(0.5[a,b], b, n-1); sierpinski(0.5[a,b rotatedabout(a, 60)], 0.5[a rotatedabout(b, -60),b], n-1); fi; enddef; numeric side; side = 2cm; beginfig(0); sierpinski((-side, 0cm), (side, 0cm), 0); endfig; beginfig(1); sierpinski((-side, 0cm), (side, 0cm), 1); endfig; beginfig(2); sierpinski((-side, 0cm), (side, 0cm), 2); endfig; beginfig(3); sierpinski((-side, 0cm), (side, 0cm), 3); endfig; beginfig(4); sierpinski((-side, 0cm), (side, 0cm), 4); endfig; beginfig(5); sierpinski((-side, 0cm), (side, 0cm), 5); endfig; beginfig(6); sierpinski((-side, 0cm), (side, 0cm), 6); endfig; beginfig(7); sierpinski((-side, 0cm), (side, 0cm), 7); endfig; beginfig(8); sierpinski((-side, 0cm), (side, 0cm), 8); endfig; end.