Вход

Просмотр полной версии : Вычисление пути и времени пути


supernewbie
19.09.2010, 16:59
function GetTimeFromPath(x1,y1,z1,x2,y2,z2:integer) : integer;
begin
Path:=Round(Sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)))+abs(z2-z1));
Time1:=Path div Speed;
result:=Time1;
end;

Вот вроде бы нормально считает, но все время идет погрешность, я думаю что скорее всего это из-за Round'а, есть вариант решения проблемы?

alexteam
19.09.2010, 17:10
скорей всего это из за незнания теоремы пифагора + незнание того что окромя интежера есть еще куча типов (в т.ч. с плавающей запятой) + не использования movemul (скорей всего)

function GetTimeFromPath(x1,y1,z1,x2,y2,z2:integer) : double;
begin
result:= (sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1))) / CurrentSpeed;
end;

где CurrentSpeed считается так

function CurrentSpeed: Double;
begin
if isRunning then
Result := MoveMul*RunSpd
else
Result := MoveMul*WalkSpd;
end;

isRunning / MoveMul / RunSpd / WalkSpd - смотреть в userinfo

Добавлено через 5 минут
isRunning так же в пакете ChangeMoveType может изменяццо