☰ Menu

Scene.hu

Magyar demoscene portál – grafikusok, zenészek, programozók alkotói közössége

fleisch250.pngMásodik rendhagyó produkció/téma aránnyal rendelkező cikkünket olvashatják az érdeklődő olvasók. A téma a fraktálok, még pontosabban a kvaternió-Julia fraktálok; ez utóbbiak vizualizációjábol áll össze az alant látható első videó, mely Thorsten Fleisch német filmrendező munkája (őt ábrázolja a kép), akinek ugyan feltehetőleg semmi köze a demoscene-hez, ezen filmje azonban nem lógna ki nagyon egy democompóból. Egy ugyanerre az ötletre felépített 4k intro pedig a kindernoiser by iq/rgba (bár ez már szerepelt az oldalon, tematikusan mégis ideillik).

Embedded videók és az elmélet alább, a film jó minőségű változatát innen tölthetjük le (mpeg, 82 MB).

vagas.pngTehát a film, melynek címe egyébként Gestalt:

Illetve a 4k intró:

A fraktálok gondolom sok olvasónknak nem jelentenek újdonságot, azért most összekötve a kellemest (film) a hasznossal (tudás magunkba szippantása), röviden összefoglalnám mégis akkor, hogy miről is van szó.

Először is a terminológiáról. A fraktál szó (mely Benoît Mandelbrot nyelvújító tevékenységének köszönhetően létezik, 1975 óta) alatt tágabb értelemben önhasonló halmazokat szoktak érteni, amibe nagyon egyszerű (mint pl. a Koch görbe) és nagyon bonyolult (mint pl. a Mandelbrot halmaz) objektumok is beleférnek. Mi ma az utóbbival, illetve rokonaival és üzletfeleivel szeretnénk foglalkozni, úgyhogy állapodjunk meg abban, hogy a fraktál szó mostantól ezt jelenti :).

Továbbá, a félreértések elkerülése végett, a Mandelbrot halmaz az az, ami a képeken jellemzően egyszínű fekete, és nem a színes csíkok körülötte (egy halmaznak nincsenek különböző színei, ugyebár). Később elmagyarázom, hogy hogyan csinalják a színeket mégis.

Ezek a fajta fraktálok, amikről ma szó esik, komplex számokkal, sőt, néha egyenesen kvaterniókkal (ami hasonló, csak bonyolultabb) működnek. A komplex számok nagyon fontosak (sőt, kikerülhetetlenek) a matematikában és a fizikában, úgyhogy kénytelenek leszünk megbarátkozni velük :). Fontosságuk oka a következő: szeretjük az olyan szám-jellegű dolgokból álló rendszereket, amikben lehet összeadni, kivonni, szorozni és osztani (utóbbi esetben persze a nullával nem); na és ezek között egy “legnagyobb” ilyen rendszer (abban az értelemben, hogy nem lehet tovább bővíteni; a szakkifejezés az algebrailag zárt) a komplex számok, mégpedig pont az a legnagyobb, amiben a jól megszokott egész meg valós számok benne csücsülnek részként. További előnyük, hogy (elvileg) minden polinom-egyenletet meg lehet bennük oldani (míg ugye valós számok között például az x2 = -1 egyenletnek nincs megoldása).

No, ennyi motiváció után jöjjön a konstrukció, mely alapvetően igen egyszerű: bevezetünk egy i-vel jelölt új számot, ami teljesíti a fenti egyenletet, tehát i2 = -1; és az derül ki, hogy ez már elég is: az összes komplex számot z = a+bi írjuk fel, ahol a (a valós rész) és b (a képzetes-, vagy imaginárius rész) jól megszokott valós számok (z pedig tradicionálisan jó betű komplex számok jelölésére :). Tehát ezek lényegében számpárok, vagy két dimenziós vektorok, csak ilyen furcsán jelöljük. Lássuk akkor hogyan kell ezekkel számolni: ez nagyon egyszerű, csak az i2 = -1 szabályra kell emlékezni. Ha pl. w = c+di, akkor

z+w = (a+c) + (b+d)i
zw = (a+bi)(c+di) = ac + adi + bci + bdi2= (ac-bd) + (ad+bc)i

Összeadni tehát úgy adunk össze, mint vektorokat, a szorzásnál pedig az i2 = -1 alapszabályt használtuk a kifejtésnél. Az osztás kicsit trükkösebb, amit házi feladatnak hagyok az elszánt érdeklődőknek. Vagy el lehet olvasni a wikipédián (most látom hogy akár copypaste-elhettem is volna a képleteket, betűre ugyanazt sikerült beírnom, mint ami a linkelt szócikkben szerepel… :). A komplex számokat síkba szokták lerajzolni (a komplex számsík tehát a klasszikus számegyenes analógja itt), mégpedig úgy, hogy a valós részt az x tengelyre, a képzetes részt pedig az y tengelyre mérik fel.

julia250.png
Egy Julia halmaz

Innen már csak egy ugrás a Julia halmazok definíciója (vigyázat, ez a Julia nemhogy nem a Rómeóé, de még csak nem is nő; vezetéknév ugyanis, Gaston Julia matematikusé). Ez egy elég általános és (meglepő módon) hasznos fogalom, de mi most csak bizonyos speciális Julia halmazokra fogunk koncentrálni (azokra, amiket a szélesebb közönség annak hív); ezek demókban is nagyon népszerűek voltak, főleg a 90-es évek első felében.

A bemenet itt egy komplex szám, amit p-vel fogok jelölni mint paraméter, a kimenet pedig komplex számok egy halmaza, aminek a pontjait ha besatírozzuk, akkor kapjuk az ábrát ugye. Egy w komplex számról úgy döntjük el, hogy benne van-e a halmazban, hogy képezzük a következő számsorozatot:

z0 = w
z1 = (z0)2 + p
z2 = (z1)2 + p

zn+1 = (zn)2 + p

és megnézzük hogy ez a sorozat korlátos-e (benne marad-e egy a nulla köré rajzolt nagy körben). Ha benne marad, akkor része a halmazunknak, ha nem, akkor nem (itt kicsit csaltam, hivatalosan a Julia halmaz igazából ennek a határa – értsd: “széle”, de ennyi itt még belefér :). Okos matematikusok bebizonyították, hogy ezt a nagy kört vehetjük kettő sugarúnak, és akkor már sokkal egyszerűbb leprogramozni. Természetesen a gyakorlatban még ezt sem lehet ellenőrizni (azt nem lehet eldönteni véges időn belül, hogy egy pont benne van a halmazban, csak azt hogy nincs benne), ezért csak az első néhány, mondjuk 100 vagy 1000 lépést számoljuk ki. Színeket pedig úgy szokás csinálni, hogy azokra a z pontokra, amik elhagyják ezt a kört, megnézzük hogy hányadik lépésben hagyták el, és ennek megfelelően színezünk (esetleg lehet azzal is kísérletezni, hogy a síkon hová került az első a körön kívüli pont; így csíkok helyett átmeneteket állíthatunk elő).

mandel250.png
A Mandelbrot halmaz

A másik nagyon populáris fraktál a Mandelbrot halmaz, mely az előzővel intim viszonyban van (mondhatnánk, hogy a Mandelbrot a Julia Rómeója, muhaha :). A definíció igen hasonló, azonban most nincs paraméter, hanem p helyére is w-t írunk, ennyi csak az eltérés a fentiekhez. Ez valahogy “egyszerre látja” az összes paramétert (és valóban, egy alternatív definíció, hogy azokat a w-ket vesszük, melyekre a p = w paraméterhez tartozó Julia halmaz összefüggő).

Na és akkor a kvaterniókról még gyorsan: ezeket hasonlóan kapjuk, mint a komplex számokat, de nem csak i van, hanem j és k is, és ezek a következő szabályokat teljesítik: i2 = j2 = k2 = ijk = -1, ij = k, stb… Egy kvaternió tehát így néz ki: a+bi+cj+dk, ahol a, b, c és d valós számok (a számegyenes megfelelője tehát itt már 4 dimenziós!). Szemfülesebb olvasóink észrevehették, hogy bár korábban azt állítottam, hogy a komplex számok egy tovább nem bővíthető rendszert alkotnak, most meg látszólag mégis mondtam egy még bővebbet. Az ellentmondás feloldása ott van, hogy a kvaternióknál már nem mindegy, hogy milyen sorrendben szorzunk (vagy osztunk): a klasszikus xy = yx szabály itt nem érvényes! Tehát menet közben megváltoztattuk a játékszabályokat.

A kvaternió Julia halmazok – amik közül néhányat tehát a fenti két produkcióban tekinthetünk meg – pedig nagyon egyszerűen Julia halmazok, csak kvaterniókkal számolunk komplex számok helyett. Ezek tehát 4 dimenziósak, amiből jellemzően kivágnak egy 3 dimenziós szeletet, amit aztán levetítenek a 2 dimenziós képernyőre. Én pedig egy 1 dimenziós mesét írtam róla, aminek itt a vége, fuss el véle, csak még gyorsan iderakok egy Paul Burke linket azok számára, akik több részletre vágynak; ő úgyis nagyon népszerű a kockafejű kóderek között (számomra némileg értehetlen módon :).

Categories: Programozás | Tags

13 Responses so far.

  1. avatar aha says:

    fú de jó ez a cikk :) O_o–b

  2. avatar slyspy says:

    Húsos ember többi animja is odavág. Érdemes megnézni.

  3. avatar pezia says:

    Tok jo cikk. Grat Blala. Igazabol sosem gondoltam volna, hogy ezek a dolgok amiket a kepen lathattam ennyire egyszeru matematikai konstrukciok.

  4. avatar Remage says:

    Remek cikk, gratula! :D

  5. avatar pasy says:

    végre! a real blala iz back!!!

  6. avatar blala says:

    Koszi mindenkinek a kedves szavakat. Es irjatok ti is cikkeket, pajtasok, hisz nyilvanvaloan ez a legjobb ut a siker, hirnev, draga kocsik, szep nok fele! :)

  7. avatar pontscho says:

    Koszonom, de ezek mind megvannak, akkor mi a teendo ? :)

  8. avatar blala says:

    Akkor a klimavaltozas miatt. A cikkiras segit megakadalyozni a globalis felmelegedest! (Vagy elosegiteni, ha ugy jobban tetszik :)

  9. avatar Maxie says:

    blala nem csalódtunk most sem benned :) nekem ez most jobban tetszett mert mindig is kivancsi voltam mi van a fractalok mogott (emberi nyelven ;). A fickó is nagyon profi bár szerintem zenészek jelentkezhetnének nála :)

  10. avatar slyspy says:

    Szeretném elmondani, hogy a sound, ami az anim alatt van az külön élmény nekem, holott.

  11. avatar aha says:

    Csináljunk 3D fraktált !!!

  12. avatar blala says:

    amugy a ficko zenel is, belehallgattam valami zenejebe a honlapjan 20 mp erejeig, az ilyen country-s volt, vagy indie-rock, vagy nemtom, de nem zaj :)

    aha: ezt nem ertem, mindenesetre errol szol a cikk :)

Leave a Reply

You must be logged in to post a comment.

Ugrás a lap tetejére Ugrás a lap aljára