[Chaoswarp Entry 1] - Box Fitting

Title:
Fractal Box Fitting

Steps:
Given any rectangular area, place a reactange inside, divide the remaining space into 8 new areas, loop until area is too small.

Interaction:
Color Change when you wiggle your mouse [SIZE=1](on a 2 second timer)[/SIZE]
Click to reset the whole thing.

Code:


function drawRect(mc:MovieClip) {
    mc.beginFill(vars_obj.color, (Math.floor(Math.abs(mc.x2-mc.x)*Math.abs(mc.y2-mc.y))/(vars_obj.minSize*30+10))*100);
    //1
    mc.moveTo(mc.x, mc.y);
    //2
    for (var i in mc.coords_array) {
        //3
        mc.lineTo(mc.coords_array*[0], mc.coords_array*[1]);
        //4
    }
    mc.endFill();
    //5
    var myTween = new mx.transitions.Tween(mc, "_y", mx.transitions.easing.Elastic.easeOut, -100, 0, (Math.round(Math.random()*0)+.4), true);
    //6
}
function makeRegion(x, y, x2, y2) {
    if (((x2-x)>vars_obj.minSize) && ((y2-y)>vars_obj.minSize))    vars_obj.queue.push({x:x, y:y, x2:x2, y2:y2});
    //7 
}
function recursive(obj) {
    var mc = vars_obj.holder.createEmptyMovieClip("region"+obj.x+":"+obj.y, vars_obj.holder.getNextHighestDepth());
    //8
    mc.x = (Math.random()*((obj.x2-vars_obj.minSize)-obj.x))+obj.x;
    //9
    mc.x2 = (Math.random()*((mc.x+vars_obj.minSize)-(obj.x2)))+(obj.x2);
    //10
    mc.y = (Math.random()*((obj.y2-vars_obj.minSize)-obj.y))+obj.y;
    //11
    mc.y2 = (Math.random()*((obj.y2)-(mc.y+vars_obj.minSize)))+(mc.y+vars_obj.minSize);
    //12
    mc.coords_array = [[mc.x2, mc.y], [mc.x2, mc.y2], [mc.x, mc.y2], [mc.x, mc.y]];
    //13
    var region_array = [[obj.x, obj.y, mc.x, mc.y], [mc.x, obj.y, mc.x2, mc.y], [mc.x2, obj.y, obj.x2, mc.y], [obj.x, mc.y, mc.x, mc.y2], [mc.x2, mc.y, obj.x2, mc.y2], [obj.x, mc.y2, mc.x, obj.y2], [mc.x, mc.y2, mc.x2, obj.y2], [mc.x2, mc.y2, obj.x2, obj.y2]];
    //14
    for (var i in region_array) {
        //15
        makeRegion(region_array*[0], region_array*[1], region_array*[2], region_array*[3]);
        //16
    }
    drawRect(mc);
    //17
}
_root.onEnterFrame = function() {
    vars_obj.queue.length>0 ? recursive(vars_obj.queue.pop()) : null;
    //18
};
_root.onMouseMove = function() {
    if (vars_obj.colorTimer == null) {
        //19
        vars_obj.colorTimer = true;
        //20
        vars_obj.color = (Math.random()*0xffffff);
        //21
        setTimeout(function () {vars_obj.colorTimer = null;}, 2*1000);
        //22
    }
};
_root.onMouseUp = init=function () {
    vars_obj = {minSize:8, color:(Math.random()*0xffffff), queue:new Array(), holder:_root.createEmptyMovieClip("holder", 1)};
    //23
    makeRegion(0, 0, Stage.width, Stage.height);
    //24
};
init();
//25

Hope you all like it :slight_smile: