

#include "bubbles.h"

ISIN(theta)
uword theta;
{
    double d = sin((double)theta / 10430.219);
    return((short)(d * 32767));
}

ICOS(theta)
uword theta;
{
    double d = cos((double)theta / 10430.219);
    return((short)(d * 32767));
}

ibearing(x,y)
{
    return((long)(bearing((double)x,(double)y) * (32768.0 / XPI)));
}

irange(x,y)
{
    return((long)range((double)x,(double)y));
}


double
bearing(x,y)
double x,y;
{
    if (x < 0.0001 && x > -0.0001) {
	if (y < 0.0)
	    return(3*XPI2);
	return(XPI2);
    }
    if (x > 0.0)
	return(atan(y/x));
    return(XPI-atan(-y/x));
}

double
range(x,y)
double x,y;
{
    return(sqrt(x*x+y*y));
}

double
edgeinterceptrange(x,y)
double x,y;
{
    x = fabs(x);
    y = fabs(y);
    if (x > y)	    /*	intercept is (1,?) ? = y/x  */
	return(range(1.0,y/x));
    else	    /*	intercept is (?,1) ? = x/y  */
	return(range(1.0,x/y));
}

