Difference between revisions of "LlVecMag"
From Second Life Wiki
m (lsl code tagging) 
Lady Sumoku (Talk  contribs) m (Replaced old <LSL> block with <source lang="lsl2">) 

(5 intermediate revisions by 4 users not shown)  
Line 5:  Line 5:  
p1_type=vectorp1_name=vecp1_desc  p1_type=vectorp1_name=vecp1_desc  
return_type=float  return_type=float  
−  return_text=that is the magnitude of the vector (the undirected  +  return_text=that is the magnitude of the vector (the undirected nonnegative distance from {{LSLPvec}} to {{LSL VR0.00.00.0}}). 
spec  spec  
caveats  caveats  
examples=  examples=  
−  <  +  <source lang="lsl2"> 
default {  default {  
state_entry()  state_entry()  
Line 17:  Line 17:  
}  }  
}  }  
−  </  +  </source> 
helpers  helpers  
also_functions=  also_functions=  
Line 25:  Line 25:  
also_tests  also_tests  
also_articles  also_articles  
−  notes  +  notes= 
+  * Mathematically the formula for vector magnitude is  
+  ** <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 
Latest revision as of 12:00, 22 January 2015
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
default { state_entry() { vector input = <1.0,2.0,3.0>; llSay(0,"The magnitude of "+(string)input+" is "+(string)llVecMag(input) + "."); } }
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.