Fraktale i atraktory IFS

0

Chodzi mi głównie o to jak to jest z tymi przekształceniami, bo na wiki jest to dość zawile wytłumaczone, niestety. Próbuję ogarnąć Smoka z Parku Jurajskiego, ale krucho mi idzie :/

0

Mógłbyś sprecyzować czego nie rozumiesz?

  • co to są przekształcenia afiniczne?
  • jak wygląda algorytm rysowania?
  • skąd u diabła na rysunku smoka są kolory, skoro smok jest zbiorem, a punkt do zbioru albo należy albo nie?
    ....
    Pytam, bo pełne wyjaśnienie byłoby długie.
0
  • co to są przekształcenia afiniczne?
  • jak wygląda algorytm rysowania?

Kolory to nie jest problem do późniejszego zrozumienia.

0
//nie wiem co to jest ale ładnie wygląda
For a:=0 to Bmp.Width-1 do
 For s:=0 to Bmp.Height-1 do
 begin
  x:=a*(Right-Left)/(Bmp.Width-1)+Left;
  y:=s*(Bottom-Top)/(Bmp.Height-1)+Top;
  n:=0;
  while (n<=50) and (sqr(x)+sqr(y)<10) do
  begin
   inc(n);
   temp:=x;
   x:=sqr(x)-sqr(y);
   y:=2*temp*y-1;
  end;
  Bmp.pixels[a,s]:=n*$50505;
 end;

//Mandelbrot
For a:=0 to Bmp.Width-1 do
 For s:=0 to Bmp.Height-1 do
 begin
  x:=a*(Right-Left)/(Bmp.Width-1)+Left;
  y:=s*(Bottom-Top)/(Bmp.Height-1)+Top;
  re:=0;
  im:=0;
  n:=0;
  while (n<=50) and (sqr(re)+sqr(im)<10) do
  begin
   inc(n);
   temp:=re;
   re:=sqr(re)-sqr(im)+x;
   im:=2*temp*im+y;
  end;
  Bmp.pixels[a,s]:=n*$50505;
 end;
0
RFabianski napisał(a)

//nie wiem co to jest ale ładnie wygląda
For a:=0 to Bmp.Width-1 do
For s:=0 to Bmp.Height-1 do
begin
x:=a*(Right-Left)/(Bmp.Width-1)+Left;
y:=s*(Bottom-Top)/(Bmp.Height-1)+Top;
n:=0;
while (n<=50) and (sqr(x)+sqr(y)<10) do
begin
inc(n);
temp:=x;
x:=sqr(x)-sqr(y);
y:=2*temp*y-1;
end;
Bmp.pixels[a,s]:=n*$50505;
end;

//Mandelbrot
For a:=0 to Bmp.Width-1 do
For s:=0 to Bmp.Height-1 do
begin
x:=a(Right-Left)/(Bmp.Width-1)+Left;
y:=s
(Bottom-Top)/(Bmp.Height-1)+Top;
re:=0;
im:=0;
n:=0;
while (n<=50) and (sqr(x)+sqr(y)<10) do
begin
inc(n);
temp:=re;
re:=sqr(re)-sqr(im)+x;
im:=2tempim-y;
end;
Bmp.pixels[a,s]:=n*$50505;
end;



Osobiście preferuję C++, ale komentarze by się i tak przydały, bo rozumiem część, ale nie wszystko.
0

Przekształcenie afiniczne płaszczyzny wyraża się wzorem f(x,y) = (ax+by,cx+dy). Często krótszy jest zapis korzystający z liczb zespolonych, np. pierwsze odwzorowanie z definicji smoka Heighwaya w postaci zespolonej wygląda tak f(z) = 1/2(1+i)z, ponieważ z=x+iy, to bez użycia liczb zespolonych wzór wygląda tak f(x,y) = 1/2(1+i)(x+iy) = ... =1/2*(x-y,x+y).
Wydajny jest algorytm probabilistyczny: wybierasz prawdopodobieństwa, tzn. liczby p1, ... ,
pn większe od zera i takie, że p1 + ... + pn = 1. (n oznacza ilość użytych przekształceń afinicznych, dla smoka n = 2). Wybierasz w zasadzie dowolnie punkt P0, losujesz (zgodnie z wybranymi prawdopodobieństwami) jedno z przekształceń afinicznych (dla smoka jedno z dwóch), jeżeli f oznacza wylosowane przekształcenie, to kolejny punkt fraktala P1 = f(Po), znowu losujesz, P2 = f(P1), ....
Pewna ilość początkowych wyrazów utworzonego ciągu może nie należeć do fraktala. Można tego uniknąć jeżeli punkt startowy P0 wybierzemy tak by spełniał warunek fk(P0) = P0, (fk to jedno z odwzorowań tworzących IFS).

0

[glowa] f(x,y) = (ax+by+e,cx+dy+f)

0

Przykłady fraktali opisane przez RFabianskiego, to nie są atraktory IFS. One podpadają pod taki schemat: dla każdego punktu P0 płaszczyzny definiujemy rekurencyjnie pewien ciąg.
Punkt P0 należy do fraktala <==> otrzymany ciąg jest ograniczony. Dla zbioru Mandelbrota ciąg jest zdefiniowany tak: Pn+1 = Pn2 + P0 dla n>=0
W praktyce możemy wyliczyć tylko skończoną ilość wyrazów ciągu, podejmowanie decyzji o ograniczoności całego ciągu na podstawie skończonej ilości wyrazów jest trochę niebezpieczne. Np. dla zbioru Mandelbrota łatwo pokazać, że jeżeli pewien punkt Pn leży poza kołem o promieniu 2, to ciąg jest nieograniczony, nożna też pokazać, że jeżeli P0 jest postaci 1/2+epsilon + 0i (epsilon>0), to ciąg jest nieograniczony. Jeżeli epsilon = 0,0000000000000001, to dopiero wyraz o numerze 302 015 641 wychodzi poza koło o promieniu 2. Łatwo zatem o błędną decyzję, że ciąg jest ograniczony.

0

Zdaje mi się, że już coś nie co rozumiem... :P Jak by co to się jeszcze odezwę...

0

I moje pytanie, rysujemy punkt (x,y) czy jak??

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0