
[SWF(width = 600, height = 600)]

var a:Number = 0.02;

var b:Number = .9998;


var xn1:Number = 5;

var yn1:Number = 0;

var xn:Number, yn:Number;


var scale:Number = 10;

var iterations:Number = 20000;


function f(x:Number):Number{

var x2:Number = x * x;

return a * x + (2 * (1  a) * x2) / (1 + x2);

}


var canvas:BitmapData = Bitmap(addChild(new Bitmap(new BitmapData(600,600,false,0xEFEFEF)))).bitmapData;


addEventListener(Event.ENTER_FRAME, onLoop);

function onLoop(evt:Event):void {


canvas.fillRect(canvas.rect, 0xEFEFEF);

a = mouseY / 1000;

xn1 = mouseX / 30;

yn1 = 0;

for (var i:int = 0; i<iterations; i++){

xn = xn1;

yn = yn1;


xn1 = b * yn + f(xn);

yn1 = xn + f(xn1);

canvas.setPixel( 280 + xn1 * scale, 300 + yn1 * scale, 0x000000);

}

}
Notice the setup for this is very similar to yesterdays flames attractor post.
Back in october of last year I stumbled upon the excellent subblue website by Tom Beddard. I was REALLY impressed by a blog post about Gumowski / Mira patterns. If you haven't seen it you should go take a look.
I'd never heard of Gumowski / Mira patterns before and made a mental note to go and try to read about them and maybe find an equation to port to actionscript or processing. Anyway, a few days ago I decided to go ahead and look up the math and... this is the result.
I got equation over at mathworld...
For simplicity I intentionally made the actionscript code look as much like the mathworld equation as possible. Using f for my function name and using xn1, yn1 etc... There are a few speed optimizations that could be made but I wanted this snippet to be very readable.
Here are a few examples of what this code will generate: