LlAcos: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
Frionil Fang (talk | contribs)
same caveats as for llPow/etc. with out of range parameters
m Examples: Add missing semicolon and improve readability of example code
 
Line 25: Line 25:


<syntaxhighlight lang="lsl2">
<syntaxhighlight lang="lsl2">
//An example for the Law of Cosines to calculate any angle of a triangle from 3 known side lengths.
// An example for the Law of Cosines to calculate any angle of a triangle from 3 known side lengths.
 
default
default
{
{
     touch_start(integer num_detected)
     touch_start(integer num_detected)
     {         
     {         
         vector t=< llFrand(9.0)+1.0 , llFrand(9.0)+1.0 , llFrand(9.0)+1.0 >; //the 3 values of this vector are used to set the lengths of 3 sides of a triangle.
         vector t = <llFrand(9.0)+1.0, llFrand(9.0)+1.0, llFrand(9.0)+1.0>; // The 3 values of this vector are used to set the lengths of 3 sides of a triangle.


         float anglexy=llAcos( (t.x*t.x+t.y*t.y-(t.z*t.z)) / ( 2*t.x*t.y) ) //Law Of Cosines
         float anglexy = llAcos((t.x*t.x+t.y*t.y-(t.z*t.z)) / ( 2*t.x*t.y)); // Law Of Cosines


         llOwnerSay("Using the Law Of Cosines, the angle of a triangle between side a="+(string)t.x+"and side b="+(string)t.y+"is = "+(string)anglexy+" radians="+(string)(anglexy*RAD_TO_DEG)+"° and that angle is not on side c="+(string)t.z);
         llOwnerSay("Using the Law Of Cosines, the angle of a triangle between side a=" + (string)t.x + "and side b=" + (string)t.y + " is = " + (string)anglexy + " radians=" + (string)(anglexy * RAD_TO_DEG) + "° and that angle is not on side c=" + (string)t.z);
     }
     }
}
}

Latest revision as of 15:11, 15 July 2026

Summary

Function: float llAcos( float val );
0.0 Forced Delay
10.0 Energy

Returns a float that is the arccosine in radians of val

• float val must fall in the range [-1.0, 1.0]

The returned value is in the range [0.0, PI][1], or NaN signifying a complex result when the parameter is out of range.

Caveats

  • Triggers a Math Error for complex results if not compiled in Mono.

Examples

//  This example exercises the full valid range of argument from -1.0 to +1.0

default
{
    touch_start(integer num_detected)
    {
        float random = llFrand(2.0) - 1.0;

        llOwnerSay("The arccosine of " + (string)random + " is " + (string)llAcos(random));
    }
}
// An example for the Law of Cosines to calculate any angle of a triangle from 3 known side lengths.
default
{
    touch_start(integer num_detected)
    {        
        vector t = <llFrand(9.0)+1.0, llFrand(9.0)+1.0, llFrand(9.0)+1.0>; // The 3 values of this vector are used to set the lengths of 3 sides of a triangle.

        float anglexy = llAcos((t.x*t.x+t.y*t.y-(t.z*t.z)) / ( 2*t.x*t.y)); // Law Of Cosines

        llOwnerSay("Using the Law Of Cosines, the angle of a triangle between side a=" + (string)t.x + "and side b=" + (string)t.y + " is = " + (string)anglexy + " radians=" + (string)(anglexy * RAD_TO_DEG) + "° and that angle is not on side c=" + (string)t.z);
    }
}

See Also

Functions

• llSin llAsin sine & inverse Sine
• llCos cosine
• llTan llAtan2 tangent & inverse tangent

Articles

•  "Wikipedia logo"Inverse trigonometric function

Deep Notes

Footnotes

  1. ^ The ranges in this article are written in Interval Notation.

Signature

function float llAcos( float val );