Advertisement
Matthen

Rotating Sierpinski

May 5th, 2014
1,239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. triangles[p_, n_, s_] :=
  2. With[{triangle =
  3. Table[p + s {Sin[2 i Pi /3], Cos[2 i Pi /3]}, {i, 3}]},
  4. Table[Polygon[Table[
  5. With[{p1 = triangle[[i]],
  6. p2 = triangle[[If[i == 3, 1, i + 1]]]},
  7. j p1/n + p2 (n - j)/n
  8. ]
  9. , {i, 3}]], {j, 0, n - 1}]
  10. ];
  11. ps = {{{0, 0}, 1}};
  12. f[ps_] := Flatten[Map[
  13. Table[{First[#] + (Last[#] {Sin[2 i Pi /3], Cos[2 i Pi /3]})/2,
  14. Last[#]/2}, {i, 3}] &,
  15. ps], 1];
  16. n = 15;
  17. n2 = 5;
  18. pslist = NestList[f, ps, n2];
  19. frame[t_] := (
  20. Module[{m = 1 + Floor[(t - 1) /n], k = Mod[t, n, 1]},
  21. If[t > n2 n,
  22. m = (t - n2 n);
  23. k = n;
  24. ];
  25. Graphics[
  26. {FaceForm[],
  27. Table[
  28. {EdgeForm[
  29. Directive[If[j == m, Opacity[0.6], Opacity[0.5]],
  30. ColorData["DarkBands"][j/n2]]],
  31. triangles[First[tr], n, Last[tr]][[;; If[j == m, k, -1]]]},
  32. {j, If[t > n2 n, m, 1], If[t > n2 n, n2, m]}, {tr, pslist[[j]]}
  33. ]}
  34. , ImageSize -> 300]
  35. ]
  36. )
  37. Manipulate[
  38. frame[t]
  39. ,
  40. {{t, n n2}, 1, n2 n + n2, 1}
  41. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement