Eeesh silly mistake:
[as]
/**
* computes the largest N square size (and layout) that can fit an area
(width,height).
*
* @return an Object containing 'squareSize' and the number of 'cols'
and 'rows'
* and a layout array for drawing the squares on screen.
*
* 96% of the credits goes to Danny Kodicek, 3% to Bernard Poulin ;) */
function computeLargestSquareSizeAndLayout(width:Number, height:Number,
Nsquares:Number):Object {
if (width<height) {
var cols:Number = 1;
var rows:Number = Math.floor(height/width);
} else {
var rows:Number = 1;
var cols:Number = Math.floor(width/height);
}
//var cols:Number = 1;
//var rows:Number = 1;
var swidth:Number = width;
var sheight:Number = height;
var next_swidth:Number = width/(cols+1);
var next_sheight:Number = height/(rows+1);
while (true) {
if (cols*rows>=Nsquares) {
var squareSize:Number = Math.min(swidth,
sheight);
var posArray = [];
var count = 0;
for (var j = 0; j<rows; j++) {
ypos = j*squareSize;
for (var k = 0; k<cols; k++) {
xpos = k*squareSize;
if (count<Nsquares) {
posArray.push({x:xpos,
y:ypos});
count++;
}
}
}
return {squareSize:squareSize, cols:cols,
rows:rows, number:Nsquares, layout:posArray};
}
if (next_swidth>next_sheight) {
cols++;
swidth = next_swidth;
next_swidth = width/(cols+1);
} else {
rows++;
sheight = next_sheight;
next_sheight = height/(rows+1);
}
}
}
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf
> Of Mike Mountain
> Sent: 09 May 2006 10:41
> To: Flashcoders mailing list
> Subject: RE: [Flashcoders] Fitting squares into an area
>
> One last addition:
>
> [as]
> /**
> * computes the largest N square size (and layout) that can
> fit an area (width,height).
> *
> * @return an Object containing 'squareSize' and the number of 'cols'
> and 'rows'
> * and a layout array for drawing the squares on screen.
> *
> * 96% of the credits goes to Danny Kodicek, 3% to Bernard
> Poulin ;) */ function
> computeLargestSquareSizeAndLayout(width:Number,
> height:Number, Nsquares:Number):Object {
> if (width<height) {
> var cols:Number = 1;
> var rows:Number = Math.floor(height/width);
> } else {
> var rows:Number = 1;
> var cols:Number = Math.floor(width/height);
> }
> //var cols:Number = 1;
> //var rows:Number = 1;
> var swidth:Number = width;
> var sheight:Number = height;
> var next_swidth:Number = width/(cols+1);
> var next_sheight:Number = height/(rows+1);
> while (true) {
> if (cols*rows>=Nsquares) {
> var squareSize:Number =
> Math.min(swidth, sheight);
> var posArray = [];
> var count = 0;
> for (var j = 0; j<rows; j++) {
> count++;
> ypos = j*squareSize;
> for (var k = 0; k<cols; k++) {
> xpos = k*squareSize;
> if (count<Nsquares) {
> posArray.push({x:xpos,
> y:ypos});
> }
> }
> }
> return {squareSize:squareSize,
> cols:cols, rows:rows, number:Nsquares, layout:posArray};
> }
> if (next_swidth>next_sheight) {
> cols++;
> swidth = next_swidth;
> next_swidth = width/(cols+1);
> } else {
> rows++;
> sheight = next_sheight;
> next_sheight = height/(rows+1);
> }
> }
> }
> drawLayout = computeLargestSquareSizeAndLayout(500, 460, 10);
> [/as] _______________________________________________
> [email protected]
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com http://training.figleaf.com
>
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com