1 / 40

Frakt álok és csempézések

Frakt álok és csempézések. Szécsi László. Fraktálok. Hausdorff dimenzió. D= (logN) / (log 1/r). N= 1/r D. Koch görbe. D= (log4) / (log 3) = 1.26. N = 4, r = 1/3. Nem önhasonló objektumok dimenziója. Vonalzó ( l ) db l 1 r =1/3 N = 4 r 2 N 2 r m N m.

vevay
Download Presentation

Frakt álok és csempézések

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 r2  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-1 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 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 zopont 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-1 ... 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 H 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 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 F 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

More Related