1

この関数は、反対側の脚 (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;
}
4

0 に答える 0