Skip to content

llVecDist

float llVecDist(vector Location1, vector Location2)

Returns the distance between Location1 and Location2.

Parameters
Location1 (vector)
Location2 (vector)
default {
state_entry()
{
vector input_1 = <1.0,2.0,3.0>;
vector input_2 = <3.0,2.0,1.0>;
llOwnerSay("The distance between " + (string) input_1 +
" and " + (string) input_2 + " is: "+(string)llVecDist(input_1, input_2) );
}
}

This example resets the script if the object has been rotated beyond a tolerance threshold:

//To reset script on touch if the object has been rotated since the last script reset
float gTolerance = 0.05; //This corresponds to about a 3 degree rotation
default
{
state_entry()
{
llSetObjectDesc((string)llRot2Euler(llGetRot()));
}
touch_start(integer total_number)
{
if (llVecDist(llRot2Euler(llGetRot()), (vector)llGetObjectDesc()) > gTolerance)
{
llSay(0,"This object has rotated. Automatic reset engaged.");
llResetScript();
}
}
}

llVecDist is mathematically equivalent to:

  • llVecMag(vec_a - vec_b)
  • llSqrt((vec_b.x - vec_a.x) * (vec_b.x - vec_a.x) + (vec_b.y - vec_a.y) * (vec_b.y - vec_a.y) + (vec_b.z - vec_a.z) * (vec_b.z - vec_a.z))

There are ways to optimize distance calculations for more efficient code. For example, comparing vector v3 = (v1-v2); v3*v3 < (f*f); is over twice as fast as llVecDist(v1,v2) < f;

  • llVecMag - Returns the magnitude of a vector
  • llVecNorm - Returns a normalized vector
  • llSqrt - Returns the square root of a float