forked from: Mandelbrot fractal using palette

by techx forked from Mandelbrot fractal using palette (diff: 51)
Now it uses a palette for rendering. FAST!
♥0 | Line 57 | Modified 2010-09-06 03:43:34 | MIT License
play

ActionScript3 source code

/**
 * Copyright techx ( http://wonderfl.net/user/techx )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/pF3s
 */

// forked from splashdust's Mandelbrot fractal using palette
// forked from splashdust's Mandelbrot fractal
// Now it uses a palette for rendering. FAST!
package {
    import flash.display.Sprite;
    import flash.events.TimerEvent;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.utils.Timer;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.geom.Point;
    
    [SWF(width="512", height="512", frameRate="15")]
    
    public class FlashTest extends Sprite {
        public static var width:int = 512;
        public static var height:int = 512;
        public function FlashTest() {
           var setBitmap:Bitmap = new Bitmap();
            var bitmapData:BitmapData = new BitmapData( stage.stageWidth , stage.stageHeight , false , 0x000000 );
            var paletteData:BitmapData = new BitmapData( stage.stageWidth , stage.stageHeight , false , 0x000000 );
            
            setBitmap.bitmapData = bitmapData;

            addChild( setBitmap );
            var rgbArray:Array = new Array();
            
            var beforeTime:int = flash.utils.getTimer();
            var xtemp:Number = 0;
            var x0:Number = 0;
            var y0:Number = 0;
            var iteration:int = 0;
            
            for(var ix:int=0; ix<width; ix++) {
                for(var iy:int=0; iy<height; iy++) {
            
                x0 = 0;
                y0 = 0;
                iteration = 128;
            
                while ( x0*x0 + y0*y0 <= 4  &&  iteration > 0 ) 
                {
                    xtemp = x0*x0 - y0*y0 + (ix-14*5000)/50000;
                    y0 = 2*x0*y0 + (iy-(height/0.6))/50000;
                    x0 = xtemp;
                    iteration--;
                }
            
                paletteData.setPixel(ix, iy, iteration);
                }
            }

            var colorModifier:int = 0;            
            //var pixel;
            addEventListener(Event.ENTER_FRAME, function(){
            var r:int=0, b:int=0, g:int=0;
    
    for(var i:int=1; i<256; i++) {
        r = i + colorModifier * Math.random();
        g = i + colorModifier + r * Math.random();;
        b = i + colorModifier + g;// Math.random();;
                
            rgbArray[i] = (r<<16 | g<<8 | b);
    }

        bitmapData.paletteMap(paletteData, bitmapData.rect, new Point(0,0), rgbArray, rgbArray, rgbArray);
           
            
    colorModifier += 1;
    if(colorModifier > 254)
            colorModifier = 0; 
});
            
        }
    }
}