Difference between revisions of "LlAtan2"

From Second Life Wiki
Jump to: navigation, search
m
m
Line 29: Line 29:
 
string compass (vector target)  
 
string compass (vector target)  
 
{//-1.2732395447351 == -8/TWO_PI
 
{//-1.2732395447351 == -8/TWO_PI
     target -= llGetPos();
+
     if(target -= llGetPos())//Have we arrived?
     list DIRS = [ "E", "SE", "S", "SW", "W", "NW", "N", "NE" ];
+
     {//We have not arrived.
    integer index = llRound((llAtan2(target.y, target.x) * -1.2732395447351)) % 8;
+
        list DIRS = [ "E", "SE", "S", "SW", "W", "NW", "N", "NE" ];
    return llList2String(DIRS, index);
+
        integer index = llRound((llAtan2(target.y, target.x) * -1.2732395447351)) % 8;
 +
        return llList2String(DIRS, index);
 +
    }
 +
    return "X";//we have arrived! X marks the spot.
 
}</lsl>
 
}</lsl>
 
[[/Compass QA]]
 
[[/Compass QA]]

Revision as of 13:09, 4 June 2010

Summary

Function: float llAtan2( float y, float x );

Returns a float that is the arctangent2 of y, x.

• float y
• float x

Similar to the arctangent(y/x) except it utilizes the signs of x & y to determine the quadrant. Returns zero if x and y are zero.
The returned value is in the range [-PI, PI][1].

Examples

<lsl>default {

 state_entry()
 {
   float num1 = llFrand(100.0);
   float num2 = llFrand(100.0);
   llOwnerSay("y = " + (string)num1);
   llOwnerSay("x = " + (string)num2);
   llOwnerSay("The arctangent of y divided by x is " + (string)llAtan2(num1, num2));
 }

}</lsl><lsl>//Function with input of a vector determining the position of a target and returning //a string with the literal compass-direction of that target towards your position //by Ramana Sweetwater 2009/01, any use allowed license :-)

string compass (vector target) {//-1.2732395447351 == -8/TWO_PI

   if(target -= llGetPos())//Have we arrived?
   {//We have not arrived.
       list DIRS = [ "E", "SE", "S", "SW", "W", "NW", "N", "NE" ];
       integer index = llRound((llAtan2(target.y, target.x) * -1.2732395447351)) % 8;
       return llList2String(DIRS, index);
   }
   return "X";//we have arrived! X marks the spot.

}</lsl>

/Compass QA

See Also

Functions

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

Articles

•  Wikipedia:Atan2
•  Wikipedia:Inverse_trigonometric_function

Deep Notes

Search JIRA for related Issues

Footnotes

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

Signature

function float llAtan2( float y, float x );