Post Reply 
Calculating ATAN2
12-03-2022, 03:43 AM
Post: #7
RE: Calculating ATAN2
How about using acos for atan2(y,x) ?
This covered edges cases, except for (y,x) == (0,0)

Code:
function sign(y) return signbit(y) and -1 or 1 end
function myatan2(y,x) return acos(x/hypot(x,y)) * sign(y) end

lua> function test(y,x) return atan2(y,x), myatan2(y,x) end

lua> test(4,3) --> 0.9272952180016122      0.9272952180016123
lua> test(4,-3) --> 2.214297435588181      2.214297435588181
lua> test(-4,3) --> -0.9272952180016122      -0.9272952180016123
lua> test(-4,-3) --> -2.214297435588181      -2.214297435588181

X axis:

lua> test(0, 1) --> 0      0
lua> test(0,-1) --> 3.141592653589793      3.141592653589793

Y axis:

lua> test(1, 0) --> 1.5707963267948966      1.5707963267948968
lua> test(-1,0) --> -1.5707963267948966      -1.5707963267948968
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Calculating ATAN2 - Matt Agajanian - 12-02-2022, 08:41 PM
RE: Calculating ATAN2 - Maximilian Hohmann - 12-02-2022, 09:48 PM
RE: Calculating ATAN2 - Matt Agajanian - 12-02-2022, 09:57 PM
RE: Calculating ATAN2 - Thomas Klemm - 12-02-2022, 09:50 PM
RE: Calculating ATAN2 - Csaba Tizedes - 12-02-2022, 10:13 PM
RE: Calculating ATAN2 - Matt Agajanian - 12-02-2022, 11:21 PM
RE: Calculating ATAN2 - Csaba Tizedes - 12-03-2022, 07:10 AM
RE: Calculating ATAN2 - Matt Agajanian - 12-03-2022, 08:11 PM
RE: Calculating ATAN2 - Albert Chan - 12-03-2022 03:43 AM
RE: Calculating ATAN2 - Matt Agajanian - 12-03-2022, 06:47 AM



User(s) browsing this thread: 1 Guest(s)