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