MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Sierpinski's carpet

  • To: mathgroup at
  • Subject: [mg76742] Sierpinski's carpet
  • From: theverybastard at
  • Date: Sat, 26 May 2007 04:47:53 -0400 (EDT)

What I'm trying to do is basically constructing a Sierpinski's carpet
an algorithm that can be generalized to the construction of a Menger

e1 = {1, 0}; e2 = {0, 1}; p1 = {0, 0}; p2 = {1, 0}; p3 = {1, 1}; p4 = {0, 1};

Sierpinski[{p1_, p2_, p3_, p4_}] :=
Table[{p1 + m e1 + n e2, p2 + m e1 + n e2, p3 + n e2 + m e1,
p4 + m e1 + n e2}, {n, 0, 2}, {m, 0, 2}], 1], 5];

Sierpinski1 = Sierpinski[{p1, p2, p3, p4}]

Sierpinski2[ls_] := Flatten[Map[Sierpinski, ls], 1]

S2 = Sierpinski2[Sierpinski1]

Sierpinski3[n_] := Nest[Sierpinski2, {{p1, p2, p3, p4}}, n]


Now, I'm not good enough to think of a much more complicated
and the problem is that with this algorithm the lengths of the squares
construct at each step does not scale down with the level of the
carpet I'm
constructing: e.g. He builds 9 squares from the big one at the
beginning and
deletes the central one, it's ok. But as I Iterate the process at each
smaller square It builds squares of the same size, so what I get is
just a
big black figure. It obviously does this way because in the algorithm
there's no instruction to decrease the size of the base vectors
Thing is I can't think of a way to give mathematica that instruction
the Nest or in the definition of  the basic "Sierpinski" function. I
some help. Thanks in advance. This is the expected result:

  • Prev by Date: Fun with Manipulate
  • Next by Date: Re: Stopping Automatic Animation in v6
  • Previous by thread: Re: Fun with Manipulate
  • Next by thread: Re: Sierpinski's carpet