function
Function syntax
float llVecDist(vector vec_a,// First vector.vector vec_b// Second vector.
);- Returns
float- Energy
- 10
Returns a float representing the undirected, non-negative distance between vectors vec_a and vec_b.
Returns a float that is the undirected nonnegative distance between vec_a and vec_b.
float result = llVecDist(ZERO_VECTOR, ZERO_VECTOR);Examples
Section titled “Examples”Example 1
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) ); }}Example 2
9 collapsed lines
//To reset script on touch if the object has been rotated since the last script resetfloat gTolerance = 0.05; //This corresponds to about a 3 degree rotationdefault{ 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
Section titled “Video Tutorial”https://www.youtube.com/watch?v=D0WvH58IWEo
- 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) )- Knowing this, there are ways to circumvent
llVecDistfor more efficient code. - For example, vector v3 = (v1-v2); v3*v3 < (f*f); is over twice as fast as
llVecDist(v1,v2)< f;
See also
Section titled “See also”Functions
Section titled “Functions”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.