21-06-2007, 10:33 PM
Scha a écrit :Et bien nous voilà donc avec 2 belles solutions.
Pour l'heure, je vais utiliser celle de Denis, car en plus d'être élégante, je l'ai mise en oeuvre en 30 secondes sans rien modifier de ma map, et c'est parfaitement en place. Celle de Loetheri, parfaitement logique, peut probablement être utile dans un autre contexte.
[MAJ]
Après quelques tests plus poussés, je crois qu'il y a quelques anomalies dans la formule. Ex: les cases adjacentes 3,3 et 4,2 donnent : 2. Hum ça ne doit pas être bien grave. voyons...
J'ai trouvé pourquoi...
En fait, il faut décomposer le calcul. L'arrondi ne doit pas se faire à la fin, mais avant le calcul de la distance :
On prend dX et dY comme convenu plus haut.
Par contre, on prends dD = ENTIER (dY / 2) arrondi inférieur si dX paire et arrondi supérieur si dX impaire
D= dX + dY - dD
du coup, pour [3,3]=>[4,2] on a dX=1 impaire, dY=1 et dD=1
D=1+1-1=1
pour [3,0]=>[4,0] on a dX=1 impaire, dY=0 et dD=0
D=1+0-0=1
pour [2,0]=>[2,1] on a dX=0 paire, dY=1 et dD=0
D=0+1-0=0
pour [0,5] et [5,1] on a dX=5 impaire, dY=4 et dD=2
D=5+4-2=7
pour [0,5] et [5,2] on a dX=5 impaire, dY=3 et dD=2
D=5+3-2=6
pour [0,5] et [2,0] on a dX=2 paire, dY=5 et dD=2
D=2+5-2=5