Okładka

Książka MuPAD dla niecierpliwych zawiera wiele interesujących przykładów grafiki matematycznej. Rozdział o programowaniu jest szczególnie dobrym miejscem na pokazanie w jaki sposób możemy budować skomplikowane obiekty matematyczne używając do tego celu tak prostych elementów jak okręgi, odcinki, czy kule. W ten sposób powstała kolejna wersja znanego powszechnie trójkąta Sierpińskiego. Jest to oczywiście fraktal, a dokładniej jego n-te przybliżenie (w naszym przypadku n=6). Dla celów tej książki, otrzymany obiekt określam jako  Fraktal Kołowy Sierpińskiego. Powyżej pokazuję nasz fraktal obrócony o 90 stopni, a poniżej podaję jego kod.


fraktal := proc(kroki)
local Lista, k;
begin
   Lista := []:
   k :=PI/3:

   kolo := proc(x,y,r, kroki)
   begin
      A := plot::Circle2d(r,[x,y],
         Filled=TRUE,
         FillColor=
            [1-kroki/10, kroki/10, kroki/10],
         FillPattern=Solid,
         LineWidth=0.01
      );
      Lista := Lista.[A]
   end_proc:

   iteracja := proc(x,y,r,kroki)
   local x1, x2, x3, y1, y2, y3;
   begin
      if kroki=0 then
         kolo(x,y,r,kroki)
      else
         kolo(x,y,r,kroki):
         x1 := x+2*r:
         y1 := y:
         x2 := x-2*r*cos(k):
         y2 := y+2*r*sin(k):
         x3 := x-2*r*cos(k):
         y3 := y-2*r*sin(k):
         r := r/2:
         kroki := kroki-1:
       // kolejne kroki rekurencyjne
         iteracja(x1,y1,r, kroki):
         iteracja(x2,y2,r, kroki):
         iteracja(x3,y3,r, kroki):
      end_if
   end_proc:
   iteracja(0,0,1,kroki):
   return(op(Lista))
end_proc:

plot(
   fraktal(6),
   Axes=None
   Scaling=Constrained
)
Trójkąt Sierpińskiego
Advertisements