Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Fraktálok és csempézések

Hasonló előadás


Az előadások a következő témára: "Fraktálok és csempézések"— Előadás másolata:

1 Fraktálok és csempézések
Szécsi László

2 Fraktálok Hausdorff dimenzió D= (logN) / (log 1/r) N= 1/rD

3 Koch görbe D= (log4) / (log 3) = 1.26 N = 4, r = 1/3

4 Nem önhasonló objektumok dimenziója
Vonalzó ( l ) db l 1 r =1/3 N = 4 r2 N2 rm Nm Hossz( l ) = l db = l Nm = l (1/r D) m = = l (1/r m) D = 1/ l D -1 D = - log Hossz( l ) / log l + 1

5 Dimenziómérés = hosszmérés
log Hossz( l ) D-1 log l

6 Fraktálok előállítása
Matematikai gépek: Brown mozgás Kaotikus dinamikus rendszerek

7 Brown mozgás - Wiener féle sztochasztikus folyamat
Sztochasztikus folyamat (véletlen függvény) Trajektóriák folytonosak Független növekményű folyamat Növekmények 0 várható értékű normális eloszlás: a független növekményűségből, a szórás az intervallum hosszával arányos

8 Brown mozgás alkalmazása

9 Terep generálás 1.5D + random() + H random() + H2 random()
H ≠ ½ → más fraktális dimenziójú görbe

10 Terep generálás 2.5D középpont elmozdítás ötlete marad
diamond-square módszer átlók metszépontjában csúcsok átlaga + random ugyanez tovább H × random-mal rombusz közepére csúcsok átlaga + random

11 Terep generálás iterációk

12 Terep generálás a GPUn véletlenszámok zajtextúrában
magasságmező-textúra a render target for(int i=0; i<n; i++) full screen quad rajzolás pixel shaderben freki skálázás: tex *= 2i zaj textúra olvasása: height = tex2d(noise, tex) amplitúdó skálázás: height *= Hi

13 Kaotikus dinamikus rendszer: nyulak kis C értékre
S n+1= C Sn (1-Sn)

14 Kaotikus dinamikus rendszer: nyulak közepes C értékre

15 Kaotikus dinamikus rendszer: nyulak nagy C értékre

16 Kaotikus rendszerek a síkon
F z = x + jy

17 z  z2 z = r e i r  r 2   2 divergens konvergens 1
Attraktor: H = F(H)

18 Attraktor előállítása
Attraktor a labilis és a stabilis tartomány határa: kitöltött attraktor = amely nem divergens z n+1 = z n2 : ha z <  akkor fekete Attraktorhoz konvergálunk, ha az stabil z n+1 = z n2 attraktora labilis

19 Inverz iterációs módszer
H = F(H)  H = F-1 (H) z n+1 = z n2 z n+1 =  z n r n+1 = r n  n+1 =  n/2 + {0,1}· r n  1  n {0,1}.{0,1}{0,1}... · 1 n n n-2 Nem lehet csak egy értékkel dolgozni ???

20 Julia halmaz: z  z2 + c

21 Kitöltött Julia halmaz: algoritmus
Im z (X,Y) FilledJuliaDraw ( ) FOR Y = 0 TO Ymax DO FOR X = 0 TO Xmax DO ViewportWindow(X,Y  x, y) z = x + j y FOR i = 0 TO n DO z = z2 + c IF |z| > “infinity” THEN WRITE(X,Y, white) ELSE WRITE(X,Y, black) ENDFOR END Re z

22 Kitöltött Julia halmaz: kép

23 Julia shader float2 juliac = float2(-0.65, 0.5);
float4 psJuliaFill(vsQuadOutput input) : COLOR0 { float2 c = juliac; float2 z = input.worldPos.xy; bool divergent = false; for(int i=0; i<30; i++) { float2 z2 = float2(z.x * z.x - z.y * z.y, 2 * z.x * z.y) + c; z = z2; if(length(z) > 100.0) { divergent = true; break; } return divergent; };

24 Julia shader

25 Távolság becslés színezés a pont halmaztól vett távolsága alapján
zo pont távolsága a Julia halmaztól |G|/|G'|     G(zo) = lim k→∞ log|zk|/nk     |G'(zo)| = lim k→∞ |dzk/dzo| / (nk|zk|) . a dzk/dzo is iteratívan számolható dzk/dzo = 2kzk zo

26 Julia shader DE float2 juliac = float2(-0.65, 0.5);
float4 psJuliaDistanceEstimator(vsQuadOutput input) : COLOR0 { float2 c = juliac; float2 z = input.worldPos.xy; float2 dz = float2(1, 0); while(length(dz) > 0.01) { float2 z2 = float2(z.x * z.x - z.y * z.y, 2 * z.x * z.y) + c; dz = 2 * float2(z.x * dz.x - z.y * dz.y, z.x * dz.y + dz.x * z.y); z = z2; if(length(z) > 100.0) break; } return pow(log(dot(z, z)) * length(z) / length(dz), 0.2); };

27 Julia shader DE

28 Julia 3D komplex → kvaternió

29 Sphere tracing

30 Julia halmaz nem összefüggő, Cantor féle halmaz összefüggő

31 Julia halmaz összefüggősége
H-c c H-c H c z n+1 =  z n-c

32 Mandelbrot halmaz Azon c komplex számok, amelyekre a
z  z2 + c Julia halmaza összefüggő

33 Mandelbrot halmaz, algoritmus
MandelbrotDraw ( ) FOR Y = 0 TO Ymax DO FOR X = 0 TO Xmax DO ViewportWindow(X,Y  x, y) c = x + j y z = 0 FOR i = 0 TO n DO z = z2 + c IF |z| > “infinity” THEN WRITE(X,Y, white) ELSE WRITE(X,Y, black) ENDFOR END

34 Mandelbrot shader float4 psMandelbrotFill(vsQuadOutput input) : COLOR0 { float2 c = input.worldPos.xy; float2 z = c; bool divergent = false; for(int i=0; i<30; i++) { float2 z2 = float2(z.x * z.x - z.y * z.y, 2 * z.x * z.y) + c; z = z2; if(length(z) > 100.0) { divergent = true; break; } return divergent; };

35 Mandelbrot

36 Mandelbrot shader DE float4 psMandelbrotDE(vsQuadOutput input) : COLOR0 { float2 c = input.worldPos.xy; float2 z = c; float2 dz = 0; while(length(z) < 8.0) { float2 z2 = float2(z.x * z.x - z.y * z.y, 2 * z.x * z.y) + c; dz = 2 * float2(z.x * dz.x - z.y * dz.y, z.x * dz.y + dz.x * z.y) + float2(1, 0); z = z2; if(length(z) > 100.0) break; } return pow(log(dot(z, z)) * length(z) / length(dz), 0.1); };

37 Mandelbrot shader DE

38 Inverz feladat: IFS modellezés
x, y H  F Attraktor: H = F(H) F: szabadon vezérelhető, legyen stabilis attraktora

39 F: többértékű lineáris leképzés
F = W1  W2  …  Wn W(x,y) = [ax + by + c, dx + ey + f] H = W1(H)  W2 (H)  …  Wn (H) Stabilitás = kontrakció H = F(H)

40 Egyszerű IFS-ek


Letölteni ppt "Fraktálok és csempézések"

Hasonló előadás


Google Hirdetések