Difference between revisions of "LlVecMag"

From Second Life Wiki
Jump to navigation Jump to search
m (Added how the calculation works.)
m (Replaced old <LSL> block with <source lang="lsl2">)
 
(6 intermediate revisions by 5 users not shown)
Line 5: Line 5:
|p1_type=vector|p1_name=vec|p1_desc
|p1_type=vector|p1_name=vec|p1_desc
|return_type=float
|return_type=float
|return_text=that is the magnitude of the vector (the undirected nonnegative distance from '''vec''' to <0.0, 0.0, 0.0>). It can be evaluated by doing llSqrt(vec.x*vec.x + vec.y*vec.y + vec.z*vec.z).
|return_text=that is the magnitude of the vector (the undirected non-negative distance from {{LSLP|vec}} to {{LSL VR|0.0|0.0|0.0}}).
|spec
|spec
|caveats
|caveats
|examples=<pre>
|examples=
<source lang="lsl2">
default {
default {
     state_entry()
     state_entry()
Line 16: Line 17:
     }
     }
}
}
</pre>
</source>
|helpers
|helpers
|also_functions=
|also_functions=
Line 24: 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

Summary

Function: float llVecMag( vector vec );

Returns a float that is the magnitude of the vector (the undirected non-negative distance from vec to <0.0, 0.0, 0.0>).

• vector vec

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.

See Also

Functions

•  llVecNorm The vector normal
•  llVecDist The distance between two vectors

Deep Notes

Search JIRA for related Issues

Signature

function float llVecMag( vector vec );