Difference between revisions of "LlAtan2"
Jump to navigation
Jump to search
(Add notation about range of return value) |
m (Restore func_footnote overwritten by mistake) |
||
Line 2: | Line 2: | ||
|func_id=3|func_sleep=0.0|func_energy=10.0 | |func_id=3|func_sleep=0.0|func_energy=10.0 | ||
|func=llAtan2|sort=Atan2 | |func=llAtan2|sort=Atan2 | ||
|func_footnote=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. | |func_footnote=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.<br /> | ||
The returned value is in the range [-[[PI]], PI] | |||
|p1_type=float|p1_name=y|p1_desc | |p1_type=float|p1_name=y|p1_desc | ||
|p2_type=float|p2_name=x|p2_desc | |p2_type=float|p2_name=x|p2_desc | ||
|return_type=float | |return_type=float | ||
|return_text=that is the {{wikipedia|Atan2|arctangent2}} of y, x. | |return_text=that is the {{wikipedia|Atan2|arctangent2}} of y, x. | ||
|spec | |spec | ||
|caveats | |caveats |
Revision as of 07:01, 24 April 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: float llAtan2( float y, float x );3 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
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]
Caveats
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) {
vector me = llGetPos(); float distance = llVecDist(me, target); list DIRS =["W","NW","N","NE","E","SE","S","SW","W"]; return llList2String(DIRS,llCeil(4.5-((4*llAtan2((target.y-me.y)/distance,(target.x-me.x)/distance))/PI)));}</lsl>