Skip to content
lsl.devlsl.devLSL Dev

llAtan2

function
Function syntax
float llAtan2(
  1. float y,// Y coordinate.
  2. float x// X coordinate.
);
Returns
float
Energy
10

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

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

How to use
float result = llAtan2(0.0, 0.0);

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].

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);
}

/Compass QA

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.