sqroot( ( x1 - x2 )^2 + sqroot( ( y1 - y2 )^2 + ( z1 - z2 )^2 )^2 )
This only works if: x1 >= x2 && y1 >= y2 && z1 >= z2
I believe this would be the correct useage, made this just to test some weeks ago.
Code:
stock cust_get_distance(const Origin1[3], const Origin2[3]) {
new Differences[3]
if ( Origin2[0] > Origin1[0] )
Differences[0] = Origin2[0] - Origin1[0]
else
Differences[0] = Origin1[0] - Origin2[0]
if ( Origin2[1] > Origin1[1] )
Differences[1] = Origin2[1] - Origin1[1]
else
Differences[1] = Origin1[1] - Origin2[1]
if ( Origin2[2] > Origin1[2] )
Differences[2] = Origin2[2] - Origin1[2]
else
Differences[2] = Origin1[2] - Origin2[2]
return sqroot(power_by_2(Differences[2]) + power_by_2(sqroot(power_by_2(Differences[0]) + power_by_2(Differences[1]))))
}
stock Float:cust_get_distance_f(const Float:Origin1[3], const Float:Origin2[3]) {
new Float:Differences[3]
if ( Origin2[0] > Origin1[0] )
Differences[0] = Origin2[0] - Origin1[0]
else
Differences[0] = Origin1[0] - Origin2[0]
if ( Origin2[1] > Origin1[1] )
Differences[1] = Origin2[1] - Origin1[1]
else
Differences[1] = Origin1[1] - Origin2[1]
if ( Origin2[2] > Origin1[2] )
Differences[2] = Origin2[2] - Origin1[2]
else
Differences[2] = Origin1[2] - Origin2[2]
return floatsqroot(power_by_2_f(Differences[2], 2) + power_by_2_f(floatsqroot(power_by_2_f(Differences[0]) + power_by_2_f(Differences[1]))))
}
stock Float:power_by_2_f(Float:num)
return num * num
stock power_by_2(num)
return num * num