73 lines
1.0 KiB
Plaintext
73 lines
1.0 KiB
Plaintext
public double Abs(double i)
|
|
{
|
|
if (i<0)
|
|
return -i;
|
|
else
|
|
return i;
|
|
}
|
|
|
|
public double Sign(double i)
|
|
{
|
|
if (i<0)
|
|
return -1.0;
|
|
else if (!i)
|
|
return 0.0;
|
|
else
|
|
return 1.0;
|
|
}
|
|
|
|
public double Sqr(double d)
|
|
{
|
|
return d*d;
|
|
}
|
|
|
|
public void R2P(double *mag,double *arg,double x,double y)
|
|
{ //Rect to polar
|
|
*arg=Arg(x,y);
|
|
*mag=Sqrt(x*x+y*y);
|
|
}
|
|
|
|
public void P2R(double *x,double *y,double mag,double arg)
|
|
{ //Polar to Rect
|
|
*x=mag*Cos(arg);
|
|
*y=mag*Sin(arg);
|
|
}
|
|
|
|
public double Unwrap(double theta,double base=-pi)
|
|
{
|
|
double result=theta%pi2;
|
|
if (result<base) result+=pi2;
|
|
if (result>base+pi2) result-=pi2;
|
|
return result;
|
|
}
|
|
|
|
|
|
public I8 AbsI8(I8 i)
|
|
{
|
|
if (i<0)
|
|
return -i;
|
|
else
|
|
return i;
|
|
}
|
|
|
|
public I8 SignI8(I8 i)
|
|
{
|
|
if (i<0)
|
|
return -1;
|
|
else if (!i)
|
|
return 0;
|
|
else
|
|
return 1;
|
|
}
|
|
|
|
public I8 SqrI8(I8 i)
|
|
{
|
|
return MulI8(i,i);
|
|
}
|
|
|
|
public I8 DistI8(I8 x1,I8 y1,I8 x2,I8 y2)
|
|
{
|
|
I8 dx=x1-x2,dy=y1-y2;
|
|
return MulI8(dx,dx)+MulI8(dy,dy);
|
|
}
|