//góc giữa (x1, y1) và (x2, y2) và trả về "độ"
function AngleXY takes real x1, real y1, real x2, real y2 returns real
return bj_RADTODEG * Atan2(y2 - y1, x2 - x1)
endfunction
//góc giữa (x1, y1) và (x2, y2) và trả về "radian"
function AngleXYR takes real x1, real y1, real x2, real y2 returns real
return Atan2(y2 - y1, x2 - x1)
endfunction
//lấy khoảng cách giữa (x1, y1) và (x2, y2)
function DistanceXY takes real x1, real y1, real x2, real y2 returns real
return SquareRoot( (x2-x1) * (x2-x1) + (y2-y1) * (y2-y1))
endfunction
//khoảng cách giữa 2 unit a và b
function DistanceUnits takes unit a, unit b returns real
local real dx = GetUnitX(b) - GetUnitX(a)
local real dy = GetUnitY(b) - GetUnitY(a)
return SquareRoot(dx * dx + dy * dy)
endfunction
//góc giữa 2 unit a và b, trả về "độ"
function AngleUnits takes unit a, unit b returns real
return bj_RADTODEG * Atan2(GetUnitY(b) - GetUnitY(a), GetUnitX(b) - GetUnitX(a))
endfunction
//góc giữa 2 unit a và b, trả về "radian"
function AngleUnitsR takes unit a, unit b returns real
return Atan2(GetUnitY(b) - GetUnitY(a), GetUnitX(b) - GetUnitX(a))
endfunction