Difference between revisions of "LlVecMag"
From Second Life Wiki
m 
(Added some stuff to notes. Perhaps someone (Strife :D?) could make sure they're okay to add?) 

Line 28:  Line 28:  
* Mathematically the formula for vector magnitude is  * Mathematically the formula for vector magnitude is  
** <code>[[llSqrt]](vec.x * vec.x + vec.y * vec.y + vec.z * vec.z)</code>  ** <code>[[llSqrt]](vec.x * vec.x + vec.y * vec.y + vec.z * vec.z)</code>  
+  * Knowing this, there are ways to circumvent llVecMag for more efficient code.  
+  ** vec*vec < 16.0 is over twice as fast as llVecMag(vec) < 4.0.  
+  ** vec*vec < (dist*dist) is about twice as fast as llVecMag(vec) < dist.  
+  ** This can work in many other ways, too, with other comparisons.  
permission  permission  
negative_index  negative_index 
Revision as of 17:55, 20 July 2012
LSL Portal  Functions  Events  Types  Operators  Constants  Flow Control  Script Library  Categorized Library  Tutorials 
Summary
Function: float llVecMag( vector vec );12  Function ID 
0.0  Forced Delay 
10.0  Energy 
Returns a float that is the magnitude of the vector (the undirected nonnegative distance from vec to <0.0, 0.0, 0.0>).
• vector  vec 
Caveats
Examples
<lsl> default {
state_entry() { vector input = <1.0,2.0,3.0>; llSay(0,"The magnitude of "+(string)input+" is "+(string)llVecMag(input) + "."); }
}
</lsl>Notes
 Mathematically the formula for vector magnitude is

llSqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z)

 Knowing this, there are ways to circumvent llVecMag for more efficient code.
 vec*vec < 16.0 is over twice as fast as llVecMag(vec) < 4.0.
 vec*vec < (dist*dist) is about twice as fast as llVecMag(vec) < dist.
 This can work in many other ways, too, with other comparisons.