26-09-2011, 12:16 AM
Optimise un poil en utilisant +1 ou -1 pour le sens:
Code :
<?php
function nextPlace($x, $y, $size, $randomLevel = null) {
$denominateurX = floor($x/$size);
$denominateurY = floor($y/$size);
$currentCenter = array($denominateurX*$size, $denominateurY*$size);
if($denominateurX == $denominateurY){
$axe = "x";
$sens = ($denominateurX < 0)*2-1; // 1 si x<0, -1 si x>=0
} else if(abs($denominateurX) == abs($denominateurY)) {
$axe = ($denominateurY > 0) ? "x" : "y";
$sens = -($denominateurY > 0)*2+1;
} else if(abs($denominateurX) > abs($denominateurY)) {
$axe = "y";
$sens = ($denominateurX > 0)*2-1;
} else if(abs($denominateurY) > abs($denominateurX)) {
$axe = "x";
$sens = -($denominateurY > 0)*2+1;
}
$x = $denominateurX*$size;
$y = $denominateurY*$size;
$$axe = $$axe + ($size*$sens);
// Pour des valeurs aléatoires:
if (!is_null($randomLevel)) {
if($randomLevel >= $size)
$randomLevel = $size-1;
$x += rand(0, $randomLevel);
$y += rand(0, $randomLevel);
}
return array($x, $y);
}
?>