Difference between revisions of "LlVecMag"
From Second Life Wiki
(→Examples) |
Lady Sumoku (Talk | contribs) m (Replaced old <LSL> block with <source lang="lsl2">) |
||
(20 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{LSL_Function |
− | + | |func=llVecMag | |
− | + | |func_id=12|func_sleep=0.0|func_energy=10.0 | |
− | + | |func_footnote | |
− | | | + | |p1_type=vector|p1_name=vec|p1_desc |
− | | | + | |return_type=float |
− | + | |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 | |
− | + | |caveats | |
− | + | |examples= | |
− | + | <source lang="lsl2"> | |
− | | | + | |
− | | | + | |
− | + | ||
− | + | ||
− | = | + | |
− | + | ||
− | + | ||
− | {| | + | |
− | | | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | | 0.0 | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
− | | | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
− | + | ||
− | + | ||
− | + | ||
− | < | + | |
− | + | ||
default { | default { | ||
− | + | state_entry() | |
− | + | { | |
− | + | vector input = <1.0,2.0,3.0>; | |
− | + | llSay(0,"The magnitude of "+(string)input+" is "+(string)llVecMag(input) + "."); | |
− | + | } | |
} | } | ||
− | </ | + | </source> |
− | + | |helpers | |
− | + | |also_functions= | |
− | | | + | {{LSL DefineRow||[[llVecNorm]]|The vector normal}} |
− | | | + | {{LSL DefineRow||[[llVecDist]]|The distance between two vectors}} |
− | + | |also_events | |
− | + | |also_tests | |
− | + | |also_articles | |
− | + | |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 |
− | + | |negative_index | |
− | < | + | |cat1=Math/3D |
− | < | + | |cat2=Vector |
− | < | + | |cat3 |
− | | | + | |cat4 |
− | | | + | }} |
− | + | ||
− | = | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Latest revision as of 11: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 non-negative 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.