function
Function syntax
float llAtan2(float y,// Y coordinate.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.
float result = llAtan2(0.0, 0.0);Specification
Section titled “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,
PIis 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
Section titled “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
Section titled “See also”Functions
Section titled “Functions”Articles
Section titled “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.