Hello,
Je débute, alors j'espère que vous ne m'en voudrez pas de demander de l'aide sans en avoir apporté pour l'instant. :-\
Je cherche à déterminer le nombre de cases minimum qu'il existe entre 2 hexagones sur une carte (le chemin le plus court). J'ai vu sur internet que beaucoup de personnes se posaient cette question, mais je n'ai pas trouvé de réponse...
Ma carte fait 60/60, les cases sont numérotée de 0 à 3599.
les lignes impaires sont décalées vers la droite :
0----1----2----3 ...
--60---61---62---63 ...
...
J'ai déja pas mal cherché, et j'arrive à ce code:
($rz=distance (en nb de cases) entre les cases $d et $p)
<?
$rx=($d%60-$p%60); // difference dx-px
$ry=abs((round(($d-$p)/60))); // difference dy-py
if ($ry%2==1)
{$rx=($rx-0.5);} // jusque là, les calculs semblent bons.
$rz=round(sqrt($rx*$rx+$ry*$ry));
?>
Si la distance est inférieure à 5, ça marche, mais au-delà, ça se décale dans les 4 diagonales, puis le décalage se propage en étoile... Bref, ça n'est pas satisfaisant, et je séche complétement. La formule du triangle-rectangle n'est sans doute pas adaptée à cette situation !?
Qui pourrait m'aider, s'il vous plaît ?
Je débute, alors j'espère que vous ne m'en voudrez pas de demander de l'aide sans en avoir apporté pour l'instant. :-\
Je cherche à déterminer le nombre de cases minimum qu'il existe entre 2 hexagones sur une carte (le chemin le plus court). J'ai vu sur internet que beaucoup de personnes se posaient cette question, mais je n'ai pas trouvé de réponse...
Ma carte fait 60/60, les cases sont numérotée de 0 à 3599.
les lignes impaires sont décalées vers la droite :
0----1----2----3 ...
--60---61---62---63 ...
...
J'ai déja pas mal cherché, et j'arrive à ce code:
($rz=distance (en nb de cases) entre les cases $d et $p)
<?
$rx=($d%60-$p%60); // difference dx-px
$ry=abs((round(($d-$p)/60))); // difference dy-py
if ($ry%2==1)
{$rx=($rx-0.5);} // jusque là, les calculs semblent bons.
$rz=round(sqrt($rx*$rx+$ry*$ry));
?>
Si la distance est inférieure à 5, ça marche, mais au-delà, ça se décale dans les 4 diagonales, puis le décalage se propage en étoile... Bref, ça n'est pas satisfaisant, et je séche complétement. La formule du triangle-rectangle n'est sans doute pas adaptée à cette situation !?
Qui pourrait m'aider, s'il vous plaît ?