Difference between revisions of "LlVecDist"
Jump to navigation
Jump to search
(Added some stuff to notes. Perhaps someone (Strife :D?) could make sure they're okay to add?) |
Rolig Loon (talk | contribs) |
||
Line 22: | Line 22: | ||
} | } | ||
</lsl> | </lsl> | ||
<lsl> | |||
//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(); | |||
} | |||
} | |||
}</lsl> | |||
===Video Tutorial=== | ===Video Tutorial=== | ||
{{KBvideo|D0WvH58IWEo|640|385|type=youtube}} | {{KBvideo|D0WvH58IWEo|640|385|type=youtube}} |
Revision as of 12:55, 16 October 2012
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llVecDist( vector vec_a, vector vec_b );14 | Function ID |
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 |
Caveats
Examples
<lsl> 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) ); }
} </lsl> <lsl> //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(); } } }</lsl>
Video Tutorial
<videoflash type="youtube">D0WvH58IWEo|640|385</videoflash>Notes
- 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;