llVecDist
Jump to navigation
Jump to search
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llVecDist( vector vec_a, vector vec_b );0.0 | Forced Delay |
10.0 | Energy |
Returns a float that is the undirected nonnegative distance between vec_a and vec_b.
• vector | vec_a | – | Any valid vector | |
• vector | vec_b | – | Any valid vector |
Examples
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) );
}
}
//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();
}
}
}
Video Tutorial
https://www.youtube.com/watch?v=D0WvH58IWEoNotes
- Mathematically equivalent to:
- Knowing this, there are ways to circumvent llVecDist for more efficient code.
- For example, vector v3 = (v1-v2); v3*v3 < (f*f); is over twice as fast as llVecDist(v1,v2) < f;