Alright, I ended up using floatatan2 but I finally got it to work. I can get to polar coordinates with fairly good accuracy but I can't get back to rectangular nicely...
Code:
#include <amxmodx>
#include <float>
public plugin_init()
{
register_plugin("Math Test","0.1","twistedeuphoria")
register_srvcmd("polar","to_polar")
register_srvcmd("rect","to_rectangular")
}
public to_polar()
{
new xvalstr[3],yvalstr[3]
read_argv(1,xvalstr,2)
read_argv(2,yvalstr,2)
new Float:xval = floatstr(xvalstr)
new Float:yval = floatstr(yvalstr)
new Float:xsqr = floatpower(xval,2.0)
new Float:ysqr = floatpower(yval,2.0)
new Float:xysqtot = floatadd(xsqr,ysqr)
new Float:polarlen = floatsqroot(xysqtot)
new Float:polardeg = floatatan2(yval,xval,1)
server_print("LEN: %f DEG: %f",polarlen,polardeg)
return PLUGIN_HANDLED
}
public to_rectangular()
{
new lenstr[21],degstr[21]
read_argv(1,lenstr,20)
read_argv(2,degstr,20)
new Float:len = floatstr(lenstr)
new Float:deg = floatstr(degstr)
new Float:xval = floatmul(len,floatcos(deg))
new Float:yval = floatmul(len,floatsin(deg))
server_print("X: %f Y: %f",xval,yval)
return PLUGIN_HANDLED
}
This is what I have...any ideas as to the accuracy of the rectangular coordinates? Maybe variable accuracy? something else? I'll keep looking.
__________________