distance
From ZDoom Wiki
Similar to the Pythagorean Theorem, this function does all the necessary calculations to return the distance (in grid units) between tid1 and tid2. Requires the sqrt function.
function int distance (int tid1, int tid2)
{
int x, y, z, d;
x = GetActorX(tid1) - GetActorX(tid2) >> 16; // Convert fixed point to integer
y = GetActorY(tid1) - GetActorY(tid2) >> 16;
z = GetActorZ(tid1) - GetActorZ(tid2) >> 16;
d = sqrt( x*x + y*y + z*z );
return d;
}
Here is an alternate version that uses trig to run faster and returns a fixed point number.
function int fdistance (int tid1, int tid2)
{
int len;
int y = getactory(tid1) - getactory(tid2);
int x = getactorx(tid1) - getactorx(tid2);
int z = getactorz(tid1) - getactorz(tid2);
int ang = vectorangle(x,y);
if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(y, sin(ang));
else len = fixeddiv(x, cos(ang));
ang = vectorangle(len, z);
if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(z, sin(ang));
else len = fixeddiv(len, cos(ang));
return len;
}