Hlavní navigace

Vlákno názorů k článku Fraktály v počítačové grafice XXIII od ggg - Diky za dalsi pekny clanek. Co me ale...

  • Článek je starý, nové názory již nelze přidávat.
  • 28. 3. 2006 12:12

    ggg (neregistrovaný)
    Diky za dalsi pekny clanek. Co me ale zajima jsou komplexni mocniny ktere tu byly zmineny. Kdyz jsem po tom trochu badal tak jsem zjistil ze vypocty pro komplexni exponenty jsou docela slozite a jejich vypocet je urcite celkem pomaly. Vzorce pro komplexni exponenty jsem nasel tady. Zajimalo by me jestli existuji nejake zjednodusujici rovnice pro urychleni vypoctu, protoze se mi ted opravdu nechce nejake si odvodit sam (jestli to je vybec mozne). Jinak jeste jednou diky za pekny serial a hodne sil v pokracovani (at je jeste pekne dlouhy :))
  • 28. 3. 2006 13:00

    Pavel Tisnovsky (neregistrovaný)
    Dobry den, mam dojem, ze napriklad v programu FractInt jsou u fraktalu zalozenych na vzorcich z->z^x+c (Mandelbrotova a Juliova mnozina) a z^c-1=0 (Newtonova mnozina) nektera zjednoduseni implementovana. Ta zjednoduseni se IMHO aplikuji jak pred rozpisem cisel Z a C ve vzorcich na slozky, tak i po tomto rozpisu (spis nez o vysokou matematiku pujde o hrani si se zavorkami a Hornerovo schema). Podivam se do zdrojovych kodu, sice to neni snadne vycist, ale po chvili hledani to snad najdu [tusim, ze se jedna o soubor formula.c].
  • 5. 4. 2006 11:05

    Pavel Tišnovský
    Zlatý podporovatel

    Dobry den,

    tak jsem se dival do zdrojaku FractIntu, a vypada to, ze vypocty u Newtonovych mnozin vyssich mocnin (tj. zn-1=0) jsou tam reseny docela jednoduse. Cely vypocet je rozdelen do dvou kroku:

    1. Jedrive si vyjadri vsechny koreny daneho polynomu, coz je jednoduche, protoze koreny lezi na jednotkove kruznici a jsou po ni pravidelne rozmisteny. Jednim z korenu je hodnota 1+0i, takze se zacne od ni a provede se (n-1) kroku s rozdilem uhlu 2*Pi/n. To je ta prvni (a jednodussi cast).
    2. Potom jsou ve zdrojacich vytvoreny funkce pro nasobeni a deleni dvou komplexnich cisel. Pomoci techto funkci je vyjadren Newtonuv vztah, tj. jak f(z) a f'(z), tak i jejich podil. To neni algoritmicky tezke vytvorit, protoze derivace polynomu zn je nzn-1 a to i v oboru komplexnich cisel. Podil f(z) a f'(z) je tedy mozne take vyjadrit algoritmicky a potom uz pouzit "jen" ty nasobici a delici funkce.

    Zminovane funkce vypadaji takto:

    complex_mult(_CMPLX arg1,_CMPLX arg2,_CMPLX *pz)
    {
       pz->x = arg1.x*arg2.x - arg1.y*arg2.y;
       pz->y = arg1.x*arg2.y+arg1.y*arg2.x;
       return(0);
    }
    
    
    complex_div(_CMPLX numerator,_CMPLX denominator,_CMPLX *pout)
    {
       double mod;
       if((mod = modulus(denominator)) < flt_min) return(1); conjugate(&denominator); complex_mult(numerator,denominator,pout); pout->x = pout->x/mod;
       pout->y = pout->y/mod;
       return(0);
    }