Я пытаюсь написать функцию ActionScript с некоторой математикой для php, она не дает таких же результатов, не могли бы вы мне помочь. Эта функция вычисляет расстояние между двумя координатами для игры с шестнадцатеричной картой.
Функция ActionScript:
function tellDistance(p1:Point,p2:Point,debug:Boolean=false):Number{
var dx:int=Math.abs(p1.x-p2.x);
var dy:int=Math.abs(p1.y-p2.y);
var auxY:int=dy;
dy=Math.max(dy-Math.ceil(dx*.5),0);
dy+=(auxY>=dx*.5 && dx%2==1 && ((p1.x%2==1 && p1.y>p2.y) || (p1.x%2==0 && p1.y<p2.y)))?1:0;
return dx+dy;
}
Моя версия в php (не работает):
function tiles_distance($start_x, $start_y, $dest_x, $dest_y)
{
$x_dif = abs($start_x-$dest_x);
$y_dif = abs($start_y-$dest_y);
$y_dif_backup = intval($y_dif);
$y_dif = max($y_dif-ceil($x_dif*0.5),0);
$y_dif = $y_dif+($y_dif_backup>=$x_dif*.5 && $x_dif%2==1 && (($start_x%2==1 && $start_y>$dest_y) || ($start_x%2==0 && $start_y< $dest_y)))?1:0;
return $x_dif+$y_dif;
}
EDIT:
в ActionScript координаты будут выглядеть как 20.80 и 32.81. на php я даю координаты x и y отдельно. Они будут возвращать значение типа int, например 1 или 40.