/*----------------------------------------------------------------------+ | | | gfxbrot.c -- demonstrate fractal in gfx / quick and dirty | | | +----------------------------------------------------------------------*/ // Standard includes #include #include #include #include #include #include #include #include #include #define HEIGHT 120 #define WIDTH 160 #define SCALE 1.6 #define YSTEP 1 #define XSTEP 1 int mandelbrot(float x, float y) { float zz; float a; float b; float a2; float b2; float atemp; int i; a = 0; b = 0; i = 0; while (i < 15) { a2 = a * a; b2 = b * b; zz = a2 + b2; if(zz > 4) break; atemp = a2 - b2 + x; b = 2.0 * a * b + y; a = atemp; i++; } return i; } void drawPixel(int x, int y, int color) { screenMemory[y][x] = color; } void main(void) { int x, y, data; int col[16]; float sx, sy; col[0] = 0x01; col[1] = 0x02; col[2] = 0x03; col[3] = 0x07; col[4] = 0x0b; col[5] = 0x0f; col[6] = 0x0e; col[7] = 0x0d; col[8] = 0x0c; col[9] = 0x3c; col[10] = 0x38; col[11] = 0x34; col[12] = 0x30; col[13] = 0x20; col[14] = 0x10; col[15] = 0x00; for(y = 0; y < HEIGHT; y = y + YSTEP ) { for(x = 0; x < WIDTH; x = x + XSTEP ) { sx = -0.7 + (SCALE * (WIDTH/2.0 - x) / (WIDTH/2.0))*(-1); sy = (SCALE * (HEIGHT/2.0 - y) / (HEIGHT/2.0))*(-0.75); data = mandelbrot(sx, sy); drawPixel(x,y,col[data]); } } }