この関数は、反対側の脚 (y) と隣接する脚 (x) を使用して微積分から得られた斜辺の角度を返します。
このコードがわかりません。誰か助けてくれますか? (<< および >> 記号のコンテキストでの関数)
int atan2_cordic(Uint16 y, Uint16 x)
{
Uint16 angle;
int t;
Uint8 b;
// Singular cases
if (y==0) return 0; if (x==0) return 90; // 0º and 90º
// Rotate until angle is below atan(1/2). Angle in 1/2º units
angle=0;
t=y-x;
if(t>=0)
{
angle=90;
x+=y;
y=t;
}
t=(y<<1)-x;
if(t>=0)
{
angle+=53;
x<<=1; x+=y;
y=t;
}
y*=106;
y/=x;
y++; // (x/y)*106 + 1
angle+=y; // Add previous rotation
b=angle&0x01;
angle>>=1;
if (b) angle++; // divide by 2 with rounding
return angle;
}