1. atan2
- Posted by Liquid-Nitrogen Software <nitrogen_069 at HOTMAIL.COM> Mar 21, 1999
- 407 views
- Last edited Mar 22, 1999
i think atan2(x, y) is sposed to return a, where sin(a) = x and cos(a) = y anyone know how to do this? thanx.
2. Re: atan2
- Posted by Robert Craig <rds at ATTCANADA.NET> Mar 22, 1999
- 392 views
Mark Honnor writes: > i think atan2(x, y) > is sposed to return a, where sin(a) = x and cos(a) = y > anyone know how to do this? Probably it's the other way around: sin(a) = y and cos(a) = x and therefore tan(a) = sin(a)/cos(a) = y/x So a = arctan(y/x) *except* that Euphoria's arctan() function always returns an angle between -PI/2 and +PI/2, so to find out the true angle you must *also* take the sign +/- of x and y into account to see what quadrant you are in. e.g. if x is negative and y is positive the angle must be greater than PI/2 and less than PI. (There are 2PI radians in a circle, i.e. 360 degrees) If x is positive, arctan() should give you the correct result, but if x is negative you'll have to compute PI plus or minus the angle given by arctan(). I'd draw a diagram but it would be messed up by proportional fonts. Regards, Rob Craig Rapid Deployment Software http://members.aol.com/FilesEu/
3. Re: atan2
- Posted by Rolf Schroeder <schroeder at DESY.DE> Mar 22, 1999
- 413 views
Liquid-Nitrogen Software wrote: > > i think atan2(x, y) > is sposed to return a, where sin(a) = x and cos(a) = y > anyone know how to do this? > > thanx. ------------------------------------------------------------------------------ include misc.e -- PI -- c2PI = 2*PI, cPIH = 0.5*PI ------------------------------------------------------------------------------ function arctan2 ( object y, object x) -- returns 4 quadrant angle [-ã,ã) sequence s -- x and y have to have equal structure! if atom(x) then if x > 0 then return arctan(y/x) elsif x < 0 then if y > 0 then return arctan(y/x) + PI elsif y < 0 then return arctan(y/x) - PI else -- y = 0 return -PI end if else -- x = 0 if y > 0 then return cPIH elsif y < 0 then return -cPIH else -- y = 0 return 0 end if end if end if -- sequence s s = repeat(0,length(y)) for i = 1 to length(y) do s[i] = arctan2(y[i],x[i]) end for return s end function ------------------------------------------------------------------------------ Hope this helps. Nave a nice day, Rolf