//----------------------------------------------------------------------------- // Fraktaly v pocitacove grafice // Ukazkovy priklad cislo 46.2 // Autor: Pavel Tisnovsky // // Tato demonstracni aplikace slouzi k rekurzivnimu deleni usecky s posunem // prostredniho bodu. Pomoci klavesnice je mozne modifikovat Hurstuv exponent. // Ukonceni aplikace se provede klavesou [Esc]. //----------------------------------------------------------------------------- #ifdef __BORLANDC__ #include #endif #include // hlavickovy soubor funkci GLUTu a OpenGL #include #include #include #include #define WINDOW_TITLE "Fraktaly 46.2" // titulek okna #define WINDOW_WIDTH 512 // pocatecni velikost okna #define WINDOW_HEIGHT 480 int aa=0; // antialiasing float Delta=50.0; // "amplituda" posunu bodu float Hexp=0.5; //----------------------------------------------------------------------------- // Vykresleni retezce na obrazovku //----------------------------------------------------------------------------- void drawString(const int x, const int y, // umisteni retezce const float r, const float g, const float b, // barva pisma char *str) // ukazatel na retezec { char *c; glColor3f(r, g, b); glRasterPos2i(x, y); for (c=str; *c!=0; c++) { glutBitmapCharacter(GLUT_BITMAP_9_BY_15, *c); } } //----------------------------------------------------------------------------- // Vypsani informaci o zadanych parametrech //----------------------------------------------------------------------------- void drawInfo(float Delta, float Hexp) { char str[100]; sprintf(str, "[up][down] Delta: %5.0f", Delta); drawString(10, 42, 1.0, 1.0, 0.0, str); sprintf(str, "[left][right] Hurst exponent: %5.2f", Hexp); drawString(10, 26, 1.0, 0.8, 0.2, str); sprintf(str, "Fractal dimension: %5.2f", 2.0-Hexp+1.0e-5); drawString(10, 10, 1.0, 0.6, 0.4, str); } //----------------------------------------------------------------------------- // Vygenerovani nahodneho cisla v rozsahu 0..1 s pribliznym Gaussovym rozlozenim //----------------------------------------------------------------------------- float randomGauss(void) { #define N 10 float sum=0.0; int i; for (i=0; i