Skip to content
lsl.devlsl.devLSL Dev

LlAtan2

Looking for the current API? Open the llAtan2 reference →

Function notes

Similar to the arctangent(y/x) except it utilizes the signs of x & y to determine the quadrant and avoids division by zero.

Return value notes

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

Specification

If x is positive zero and...
  • y is zero, zero is returned.
  • y is positive, PI/2 is returned.
  • y is negative, -PI/2 is returned.
If x is negative zero and...
  • y is positive zero, PI is returned.
  • y is negative zero, -PI is returned.
  • y is positive, PI/2 is returned.
  • y is negative, -PI/2 is returned.
Or
if((string)x != (string)0.0 && y == 0.0)//negative zero
    return PI * ~-2*((string)y != (string)0.0));
return ((y > 0) - (y < 0)) * PI_BY_TWO;
The returned value is in the range [-PI, PI].

Examples

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));
  }
}
//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 :-)
//corrected by Patrick Muggins

string compass (vector target) 
{
    vector source = llGetPos();
    list DIRS =["W","NW","N","NE","E","SE","S","SW","W"];
    integer index = llCeil(3.5 - (4 * llAtan2(target.y - source.y, target.x - source.x) / PI));
    return llList2String(DIRS, index);
}

See also: functions

See also: articles

Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.

From the Second Life Wiki

Community documentation adapted from LlAtan2, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

  • LlAtan2 (revision 1200462, )

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.